-
XCoder (21.05.05 22:47) [0]Здравствуйте уважаемые мастера Delphi! У меня во такой вопрос: можно ли получить значение перименной или константы по ее имени?
...
var
v: byte;
begin
v := 1;
...
a := XXX('v'); //В параметре функции передается имя перименной или константы, а она должна возвращать значение
end;
... -
встроенной ф-ции нет, только если самому делать
-
например, можно использовать TStringList с его свойствами Objects, Sorted
-
Просто Джо © (21.05.05 23:36) [3]Можно использовать опубликованные свойства классов, скомпилированных со включеной опцией {$M}. Например.
program Project1;
{$APPTYPE CONSOLE}
uses
TypInfo;
type
{$M+}
TWrapper = class
private
FMyStrProp: string;
FMyIntProp: Integer;
FMyFloatProp: Double;
published
property MyStrProp: string read FMyStrProp write FMyStrProp;
property MyIntProp: Integer read FMyIntProp write FMyIntProp;
property MyFloatProp: Double read FMyFloatProp write FMyFloatProp;
end;
{$M-}
{ TWrapper }
var
MyWrapper: TWrapper;
begin
MyWrapper := TWrapper.Create;
try
MyWrapper.MyStrProp := 'This is a value of a string property.';
MyWrapper.MyIntProp := 2005;
MyWrapper.MyFloatProp := 666.666;
// выводим значения,
// запрашивая свойства по их именам
WriteLn(
GetStrProp(MyWrapper,'MyStrProp')
);
WriteLn(
GetOrdProp(MyWrapper,'MyIntProp')
);
WriteLn(
GetFloatProp(MyWrapper,'MyFloatProp'):1:3
);
finally
MyWrapper.Free;
end;
ReadLn
end. -
Просто Джо © (22.05.05 00:01) [4]
> [3] Просто Джо © (21.05.05 23:36)
Тьфу, сорри, не заметил что конференция по FreePascal. В нем не разбираюсь, еще раз сорри за дезинформацию. -
Иван Шихалев © (22.05.05 02:04) [5]А в FPC - так же.