Форум: "Начинающим";
Текущий архив: 2011.09.11;
Скачать: [xml.tar.bz2];
ВнизМожно ли создать объект не известного заранее класса Найти похожие ветки
← →
Очень злой (2011-05-30 12:44) [0]Сабж в том смысле, что:
Можно ли создать объект, имя класса которого хранится в переменной?
Т.е. имеется несколько классов наследников одного абстрактного класса.
нужно создать объект одного из этих классов, а какого именно должно определяться значением переменной.
Теоретически можно в переменной передавать просто число...
а при создании делать что-то типа:
case variable of
1: ob:=Tclass1.Create;
2: ob:TClass2.Create;
...
Но нельзя ли с переменной сразу хранить имя класса и на основе этого создавать объект нужного класса
← →
clickmaker © (2011-05-30 12:49) [1]class of?
← →
Очень злой (2011-05-30 12:51) [2]синтаксис на примере не подскажете?
← →
clickmaker © (2011-05-30 12:55) [3]> на примере не подскажете?
F1
← →
Anatoly Podgoretsky © (2011-05-30 12:56) [4]> Очень злой (30.05.2011 12:44:00) [0]
GetClass
← →
Ega23 © (2011-05-30 13:32) [5]
> синтаксис на примере не подскажете?TMyObject = class (TObject)
protected
FValue: string;
public
constructor Create; virtual;
function Foo: string;
end;
TMyObjectClass = class of TMyObject;
TMyObject1 = class (TMyObject)
public
constructor Create; override;
end;
TMyObject2 = class (TMyObject)
public
constructor Create; override;
end;
constructor TMyObject.Create;
begin
inherited;
end;
function TMyObject.Foo: string;
begin
Result := FValue;
end;
constructor TMyObject1.Create;
begin
inherited;
FValue := "TMyObject1";
end;
constructor TMyObject2.Create;
begin
inherited;
FValue := "TMyObject2";
end;
procedure CreateAndFooObject(aObjectClass: TMyObjectClass);
begin
with aObjectClass.Create do
try
ShowMessage(Foo);
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObejct);
begin
CreateAndFooObject(TMyObject1);
CreateAndFooObject(TMyObject2);
end;
← →
icWasya © (2011-05-30 14:13) [6]А так же посмотреть
RegistryClass и FindClass
← →
Ega23 © (2011-05-30 14:33) [7]
> RegistryClassRegisterClass
← →
Плохиш © (2011-05-30 17:04) [8]
> Очень злой (30.05.11 12:51) [2]
> синтаксис на примере не подскажете?
>
>
dpr-файл полон этих примеров.
← →
DiamondShark © (2011-05-30 20:55) [9]
> Но нельзя ли с переменной сразу хранить имя класса и на
> основе этого создавать объект нужного класса
Допустим, до раздела "Class Reference" справку по языку было дочитать лень.
Допустим, даже не лень, а объективные обстоятельства.
Но до фабричной функции и переменной процедурного типа, хранящей ссылку на нужную фабричную функцию можно же было додуматься?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.09.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c