Вниз
Скачать: CL | DM;

Как динамически менять имя метода/свойста?   Найти похожие ветки 

 
IAH   (2006-05-28 01:34) [0]

Т.е., грубо говоря, мне нужно запустить метод methodXX (или обратиться к свойству propertyXX), где вместо "XX" подставляется некое зависящее от ситуации число.
Каким образом это можно сделать?


 
Жуков Олег   (2006-05-28 02:24) [1]


> (или обратиться к свойству propertyXX), где вместо "XX"
> подставляется некое зависящее от ситуации число.


Это возможно только для published свойств. См. функции из модуля TypInfo. Вот например код, который для Form1 установит новый цвет, обратившись к свойству Color по строке с его именем.

uses
 TypInfo

var
 Obj: TObject;
 PropertyName: string;
 NewPropertyValue: Integer;
 PropInfo: PPropInfo;
 
 Obj := Form1;
 PropertyName := "Color";
 NewPropertyValue := clRed;

 PropInfo := GetPropInfo(Obj, PropertyName);
 SetOrdProp(Obj, PropInfo, NewPropertyValue);


 
Юрий Зотов ©   (2006-05-28 13:01) [2]

> Как динамически менять имя метода/свойста?
Никак.

> нужно запустить метод methodXX (или обратиться к свойству propertyXX),
> где вместо "XX" подставляется некое зависящее от ситуации число.
А при чем тут изменение имени?


 
SergP ©   (2006-05-28 14:14) [3]


> Т.е., грубо говоря, мне нужно запустить метод methodXX (или
> обратиться к свойству propertyXX), где вместо "XX" подставляется
> некое зависящее от ситуации число.
> Каким образом это можно сделать?


Зачем пытаться все делать через Ж..., если можно по-человечески?


 
tesseract ©   (2006-05-28 14:49) [4]

можно создать массив процедурного типа.
Я например так для 1с addin-ы делаю. Мне  1c  - имя функции/поля, а я данные.


 
begin...end ©   (2006-05-28 15:08) [5]

> Юрий Зотов ©   (28.05.06 13:01) [2]

> > Как динамически менять имя метода/свойста?
> Никак.

Если имеются в виду те имена, которые используются RTTI, то их менять можно...


 
ЮЮ ©   (2006-05-29 03:39) [6]

Может вместо меодов Прыгнуть10 или Прыгнуть20 (в зависимости от ситуации) выполнить метот Прыгнуть(КоличествоРаз) ? Да и Property параметраметрическими могут быть.


 
TUser ©   (2006-05-29 04:45) [7]

Если ХХ - это число, то надо сделать массив

property Prop [Index: integer]: ... read ... write ... ; default;

Подробности есть в справке и руководствах по Delphi.


 
novill ©   (2006-05-29 09:38) [8]


>  мне нужно запустить метод methodXX


Вкуривать Methodname, MethodAdress, TMethod до просветления.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1148649062
DSKalugin
2006-05-26 17:11
2006.06.18
Переход с Delphi7 на 2006. Стоит ли?


1-1147371417
GanibalLector
2006-05-11 22:16
2006.06.18
TMethod


6-1139769318
Prod
2006-02-12 21:35
2006.06.18
Открытые порты


15-1148363783
Steepe Wolf
2006-05-23 09:56
2006.06.18
Выбор мобильного


15-1148220731
DillerXX
2006-05-21 18:12
2006.06.18
type AString = array [1..maxInput] of string;




   Наверх