![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переменная в переменной [D7, XP]
Lenka_per © (2006-01-31 15:33:00)Уважаемые Мастера, подскажите, возможно ли обратиться к переменной, имя которой находится в переменной. И как это правильно сделать, если возможно
Заранее спасибо
var
a: string;
Var_With_Data:integer;
a:='Var_With_Data';
Var_With_Data:=1234567;
и теперь получить через а числовое значение
evvcom (2006-02-01 08:43:00) [1]Не надо путать интерпретаторы с компиляторами. :)
Lenka_per (2006-02-01 08:41:00) [2]Спасибо всем знатокам за ответы!
Просто очень я избалована Clipperом и VFP, где в строке можно сформировать любую команду в runtime
Хотелось что-то подобное повторить хоть и не в таком объеме ...
begin...end (2006-01-31 17:17:00) [3]> Digitman © (31.01.06 16:05) [8]
Можно пояснить? Про вазелин.
evvcom (2006-01-31 16:58:00) [4]
> 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;
Gero (2006-01-31 16:51:00) [5]> Чтоб не пришлось писать такого
>
> case j of
> 1: p:=@Form1.CheckListBox1;
> 2: p:=@Form1.CheckListBox2;
> 3: p:=@Form1.CheckListBox3;
> ......
> end;
>
> хотелось покрасивей ...
p := Form1.FindComponent('CheckListBox' + IntToStr(j));
Lenka_per (2006-01-31 16:41:00) [6]Извините, не совсем корректно задала вопрос
В идеале хотела немножко не это
Старая проблема
Хотела в одной процедуре обрабатывать все клики на CheckListBox, ComboBox что есть на форме - добавлять/удалять/корретировать
Чтоб не пришлось писать такого
case j of
1: p:=@Form1.CheckListBox1;
2: p:=@Form1.CheckListBox2;
3: p:=@Form1.CheckListBox3;
......
end;
хотелось покрасивей ...
evvcom (2006-01-31 16:20:00) [7]Lenka_per! Все делается гораздо проще! Для начала ответь на [6].
Digitman (2006-01-31 16:05:00) [8]
> Попробовала ответ begin...end как самый простой
а, как оказывается, там и без вазелина а ля "бигин.. энд" не шибко сложней)..
Lenka_per (2006-01-31 15:50:00) [9]Класс!!! Вот это оперативность!
Попробовала ответ begin...end как самый простой
Все получилось!
Спасибо, теперь можно здорово укоротить код!
Kolan (2006-01-31 15:45:00) [10]Мне кажется что проблемма не в этом...
Зачем вам это нужно?
Джо (2006-01-31 15:42:00) [11]> 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).
begin...end (2006-01-31 15:40:00) [12]var
MyVariable: Integer;
exports
MyVariable;
var
I: Integer;
begin
MyVariable := 12345;
I := PInteger(GetProcAddress(HInstance, 'MyVariable'))^
end
Gero (2006-01-31 15:37:00) [13]Возможно сделать через свойства компонентов.
Плохиш (2006-01-31 15:36:00) [14]У переменных во время выполнения нет имён.
wal (2006-01-31 15:35:00) [15]В таком виде никак невозможно