Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Переменная в переменной   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
2-1138550381
Pit
2006-01-29 18:59
2006.02.19
Люди неужели ни кто не поможет


2-1138290229
serko
2006-01-26 18:43
2006.02.19
ListView


2-1138995616
t0mk4
2006-02-03 22:40
2006.02.19
Как обеспечит безперерывную передачю данных..


1-1137737999
Amentah
2006-01-20 09:19
2006.02.19
Округление и другие операции над числами


2-1138701837
pavel_guzhanov
2006-01-31 13:03
2006.02.19
Как определить список папок, находящихся внутри заданной папки