![]() |
TPersistent über Findclass erzeugen und Constructor
Hallo Delphi-User,
Ich will Klassen über FindClass nach folgendem Schema erzeugen. Ich wundere mich aber, warum kein Constructor der Klasse TTest aufgerufen wird. Anscheinend wird nur der Constructor von TObject aufgerufen, aber nicht der von TTest. Erzeuge ich jedoch TTest direkt über einen Aufruf TTest.Create, scheint der Constructor aufgerufen zu werden. Wo liegt hier noch mein Fehler? Vielen Dank Rainer
Delphi-Quellcode:
TTest = class(TPersistent)
private FX: Integer; public constructor Create; virtual; property X: Integer read FX write FX; end; constructor TTest.Create; begin x:=5; end; procedure TForm1.FormCreate(Sender: TObject); var tc: TPersistentClass; begin tc:=FindClass('TTest'); p:=TPersistent(tc.Create); end; initialization RegisterClass(TTest); finalization UnRegisterClass(TTest); |
Re: TPersistent über Findclass erzeugen und Constructor
Versuch es mal so:
Delphi-Quellcode:
TTest = class(TPersistent)
private FX: Integer; public constructor Create; virtual; override; property X: Integer read FX write FX; end; constructor TTest.Create; begin inherited Create; FX:=5; end; |
Re: TPersistent über Findclass erzeugen und Constructor
Geht nicht
Delphi-Quellcode:
constructor Create; virtual; override;
Zitat:
Delphi-Quellcode:
constructor Create; override; virtual;
Zitat:
Ich habe ein funktionierendes Beispiel aus der DP, das aber mit Objekten arbeitet, die von TComponent statt TPersistent abgeleitet sind, da funktionierts komischerweise. |
Re: TPersistent über Findclass erzeugen und Constructor
Hallo Rainer,
der Konstruktor von TPersistent ist statisch, du benötigst also eine eigene Klassenreferenz, um dem Compiler deinen Wunsch mitzuteilen:
Delphi-Quellcode:
Gruß Hawkeye
type
TTestClass = class of TTest; procedure TForm1.FormCreate(Sender: TObject); var tc: TPersistentClass; p : TPersistent; // oder TTest begin tc:=FindClass('TTest'); p:=TTestClass(tc).Create; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz