Vielleicht noch eine Frage zu Create. Deswegen lohnt nicht ein extra Thread und wir haben hier sowieso viel über Create diskutiert.
In der Regel wird nur ein Create benötigt, man kann aber mehrere erstellen.
Delphi-Quellcode:
type
TMyClass = class
private
fCreated: TDateTime;
public
constructor CreateA();
constructor CreateB(Int: Integer);
function getCreated: TDateTime;
end;
constructor TMyClass.CreateA();
begin
fCreated := now;
end;
constructor TMyClass.CreateB(Int: Integer);
begin
fCreated := now + Int;
end;
function TMyClass.getCreated: TDateTime;
begin
result := fCreated;
end;
Der Konstruktor reserviert Speicher, füllt den mit Nullen usw. Rufe ich also CreateA auf, ist alles klar, es wird ein Objekt erstellt. Was passiert aber wenn ich hinterher CreateB aufrufe?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
MyClass: TMyClass;
begin
MyClass := TMyClass.CreateA;
try
ShowMessage(DateToStr(MyClass.getCreated));
MyClass := TMyClass.CreateB(10);
ShowMessage(DateToStr(MyClass.getCreated));
except
MyClass.Free;
end;
end;
Eine Fehlermeldung gibt es nicht, warum auch. Aber was passiert hier? Wird ein zweites Objekt erstelt? Oder bleibt es das Objekt, nur bekommt das Objekt einen neuen Anfangszustand? Wird alles wieder genullt? Oder wird einfach nur fCreated neu gesetzt? Was passiert wenn der Kreator das zweite mal aufgerufen wird?