Das habe ich schon befürchtet.
Einfach nach dem Free vom ersten Objekt mit den Daten weiterzuarbeiten führt ja nicht unbedingt sofort zur
Exception. Habe in solchen Fällen schon mehrfach stundenlang gesucht, weil die
Exception erst beim Schließen des Programmes auftrat. Bis ich dann festgestellt habe, dass ich mit freigegebenem Speicher gearbeitet habe.
In meinem Fall sind die Objekte aber so trivial, dass es ein Overkill wäre, wenn ich eine Assign Methode programmieren würde.
Danke für die Hilfe.
mfG
Edit:
Delphi-Quellcode:
...
type
...
TObj1 = class(TObject)
private
Fs: String;
Fi: Integer;
public
property s: String read Fs;
property i: Integer read Fi;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
obj1,obj2: TObj1;
begin
obj1:=TObj1.Create();
obj1.Fs:='abc';
obj1.Fi:=1;
obj2:=TObj1.Create();
//Der Kasus-Knacktus
obj2.Fi:=obj1.Fi;
obj2.Fs:=obj1.Fs;
obj1.Free;
//mache irgend etwas mit obj2
ShowMessage(obj2.s);
obj2.Free;
end;
Dieser Code bringt keine
Exception.
Edit2: Mein Fehler... Ich hab da natürlich den falschen Quellcode kopiert... Mit dem anderen kommt es in der Tat direkt zur
Exception.