Ich möchte Instanzen einer Klasse erstellen. Allerdings von einer unbestimmten Instanz.
Dabei hab ich das Problem das der Falsche Constructor aufgerufen wird (ich schätze mal der von TObject). Ich habe einen kleinen Beispiel Code gebastelt.
Es gibt eine Klasse TSomeClass mit einem Constructor in dem der wert fSomeValue gesetzt wird.
Erstellt man jetzt die Klasse normal ist fSomeValue = 9999;
Nimmt man jetzt aber eine Variable des Types TClass . und ruft eine Funktion auf in der Dynamisch das passende Objekt erstellt wird: So wird der Constructor nicht mehr aufgerufen.
Das ist ein simples Programm was ihr schnell testen könnt.
Kommt bei euch das gleiche raus wie bei mir?
Wisst ihr, wie ich das Problem umgehen kann?
Vielen Dank
Code: Alles auswählen
AUSGABE:
9999
0
Code: Alles auswählen
program project1;
uses classes;
type
{ TSomeClass }
TSomeClass = class(TObject)
private
fSomeValue:integer;
public
Constructor Create;
end;
{ TSomeClass }
constructor TSomeClass.Create;
begin
fSomeValue := 9999;
end;
{ CODE }
var
c1,c2:TSomeClass;
ac:TClass;
function ImporantFunction(aClass:TClass):TObject;
begin
result := aClass.Create;
end;
begin
c1 := TSomeClass.Create;
aC := TSomeClass;
c2 := TSomeClass(ImporantFunction(aC));
writeln(c1.fSomeValue);
writeln(c2.fSomeValue);
readln;
end.