Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переменная в переменной [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]

В таком виде никак невозможно


Наверх

Титульная страница Поиск, карта сайта Написать письмо