![]() |
Delphi-Version: 5
Objekt vom Typ (AKlasse) erstellen
Hi!
Ich möchte ganz einfach eine Prozedur schreiben, die ein Objekt erstellt, dessen Typ der Prozedur übergeben wird. Ich stelle mir das bisher folgendermaßen vor:
Delphi-Quellcode:
Aufruf:
procedure ErstelleObjekt(AKlasse: TClass);
var NeuesObjekt: TControl; begin NeuesObjekt := AKlasse.Create; end;
Delphi-Quellcode:
Funktioniert aber nicht. Fehler ist "Incompatible types: 'TControl' and 'TObject' (in der Zeile "NeuesObjekt := AKlasse.Create;")
...
begin ErstelleObjekt(TLabel); end; Ich weiß übrigens, dass die Objekte, die erstellt werden sollen, alles Typen sind, die von TControl erben. Ähnliche Posts (z.B. "Wie Klassen (keine Instanz!) als Variable übergegben?") haben mir auch nicht weiter geholfen, steh irgendwie aufm Schlauch... Wäre sehr dankbar für eure Hilfe! (Ignoriert einfach mal, dass die erstellte Instanz momentan ohne Pointer im Nirvana landet) Gruß, Robert EDIT: Muss natürlich auch "AKlasse.Create(Owner);" heißen... |
AW: Objekt vom Typ (AKlasse) erstellen
Delphi-Quellcode:
So sollte es gehen.
type TControlClasses = class of TControl;
// ... procedure ErstelleObjekt(AKlasse: TControlClasses); var NeuesObjekt: TControl; begin NeuesObjekt := AKlasse.Create(nil); // oder eben Owner end; |
AW: Objekt vom Typ (AKlasse) erstellen
Ja, vielen Dank!
|
AW: Objekt vom Typ (AKlasse) erstellen
Moin BUG,
warum nicht gleich so: Zitat:
|
AW: Objekt vom Typ (AKlasse) erstellen
Er möchte ja explizit eine Klasse übergeben, von der er noch kein Objekt hat.
Deine Version nimmt aber ein Objekt entgegen. Sollte nicht funktionieren. |
AW: Objekt vom Typ (AKlasse) erstellen
Moin BUG,
stimmt, da hast Du auch wieder Recht. |
AW: Objekt vom Typ (AKlasse) erstellen
Zitat:
|
AW: Objekt vom Typ (AKlasse) erstellen
Vielen Dank an euch für eure Hilfe! Funktioniert jetzt einwandfrei :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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-2025 by Thomas Breitkreuz