2009年5月28日

Delphi 以類別名稱來建立物件


若想用父類別來操作,而不想 use 各子類別,則可以類別名稱來動態建立子類別物件

在 unit Classes 中,有RegisterClass, GetClass, FindClass 和 UnRegisterClass

先使用 RegisterClass 註冊所需動態建立的類別
然後才能使用 GetClass 或 FindClass 以類別名稱來找出註冊過的類別
再轉型為所需的父類別來建立並使用物件
若不再需要它,則可以使用 UnRegisterClass 來取消註冊

procedure TForm1.FormCreate(Sender: TObject);
var
PClass: TPersistentClass;
Strings: TStrings;
begin
PClass := FindClass('TStringList');
Strings := PClass.Create as TStrings;
try
Strings.Add('Hi');
finally
Strings.Free;
end;
end;

initialization
RegisterClass(TStringList);

finalization
UnRegisterClass(TStringList);

沒有留言:

網誌存檔