Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизПеременная в переменной Найти похожие ветки
← →
Lenka_per (2006-01-31 15:33) [0]Уважаемые Мастера, подскажите, возможно ли обратиться к переменной, имя которой находится в переменной. И как это правильно сделать, если возможно
Заранее спасибоvar
a: string;
Var_With_Data:integer;
a:="Var_With_Data";
Var_With_Data:=1234567;
и теперь получить через а числовое значение
← →
wal © (2006-01-31 15:35) [1]В таком виде никак невозможно
← →
Плохиш © (2006-01-31 15:36) [2]У переменных во время выполнения нет имён.
← →
Gero © (2006-01-31 15:37) [3]Возможно сделать через свойства компонентов.
← →
begin...end © (2006-01-31 15:40) [4]var
MyVariable: Integer;
exports
MyVariable;
var
I: Integer;
begin
MyVariable := 12345;
I := PInteger(GetProcAddress(HInstance, "MyVariable"))^
end
← →
Джо © (2006-01-31 15:42) [5]> Lenka_per (31.01.06 15:33)
Можно поступить так.
Завести класс наподобие такого, опубликовать свойства и обращаться к ним с помощью RTTI:
type
{$M+}
TMyStore = class
private
FText: string;
published
property Text: string read FText write FText;
end;
{$M-}
Теперь обрататиться к свойству экземпляра этого класса можно по имени свойства при помощи GetPropValue, SetPropValue (uses TypInfo).
← →
Kolan © (2006-01-31 15:45) [6]Мне кажется что проблемма не в этом...
Зачем вам это нужно?
← →
Lenka_per (2006-01-31 15:50) [7]Класс!!! Вот это оперативность!
Попробовала ответ begin...end как самый простой
Все получилось!
Спасибо, теперь можно здорово укоротить код!
← →
Digitman © (2006-01-31 16:05) [8]
> Попробовала ответ begin...end как самый простой
а, как оказывается, там и без вазелина а ля "бигин.. энд" не шибко сложней)..
← →
evvcom © (2006-01-31 16:20) [9]Lenka_per! Все делается гораздо проще! Для начала ответь на [6].
← →
Lenka_per (2006-01-31 16:41) [10]Извините, не совсем корректно задала вопрос
В идеале хотела немножко не это
Старая проблема
Хотела в одной процедуре обрабатывать все клики на CheckListBox, ComboBox что есть на форме - добавлять/удалять/корретировать
Чтоб не пришлось писать такого
case j of
1: p:=@Form1.CheckListBox1;
2: p:=@Form1.CheckListBox2;
3: p:=@Form1.CheckListBox3;
......
end;
хотелось покрасивей ...
← →
Gero © (2006-01-31 16:51) [11]> Чтоб не пришлось писать такого
>
> case j of
> 1: p:=@Form1.CheckListBox1;
> 2: p:=@Form1.CheckListBox2;
> 3: p:=@Form1.CheckListBox3;
> ......
> end;
>
> хотелось покрасивей ...
p := Form1.FindComponent("CheckListBox" + IntToStr(j));
← →
evvcom © (2006-01-31 16:58) [12]
> Gero © (31.01.06 16:51) [11]
Не... Еще проще!
> Lenka_per (31.01.06 16:41) [10]
В designtime:
Form1.CheckListBox1.OnClick := CheckListBoxClick;
Form1.CheckListBox2.OnClick := CheckListBoxClick;
Form1.CheckListBox3.OnClick := CheckListBoxClick;
В runtime:
procedure TForm1.CheckListBoxClick(Sender: TObject);
begin
TCheckListBox(Sender).<Method or Property>;
end;
← →
begin...end © (2006-01-31 17:17) [13]> Digitman © (31.01.06 16:05) [8]
Можно пояснить? Про вазелин.
← →
Lenka_per (2006-02-01 08:41) [14]Спасибо всем знатокам за ответы!
Просто очень я избалована Clipperом и VFP, где в строке можно сформировать любую команду в runtime
Хотелось что-то подобное повторить хоть и не в таком объеме ...
← →
evvcom © (2006-02-01 08:43) [15]Не надо путать интерпретаторы с компиляторами. :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c