Zitat von
CenBells:
das macht doch auch keinen sinn. Wenn du sagst, daß vfNeueEmail.vEmail eine kopie enthalten würde, müsstest du den record nicht zurück ins array schreiben - der Record würde ja immer noch im Array stehen.
Mit echt kopieren würde ich mir mal die methode assign einer stringlist anschauen. Da siehst du, daß die wert wirklich "kopiert" werden.
das müsste also so aussehen
Delphi-Quellcode:
procedure copyEmail(var Source, Dest: TEmail);
begin
Dest.id := Source.id ;
// etc
end;
musst natürlich vorher sicher stellen, daß Dest auch schon alloziiert wurde.
Ein Record ist kein Object Da wird nichts alloziert oder so. Du gehst davon aus, das mit vfNeueEmail.vEmail:=vemailliste[listviewEmails.itemindex]; eine Referenz auf den Record übergeben wird. Dem ist nicht so. Gerade weil vfNeueEmail.vEmail eine Kopie enthält muss der Record zurück ins Array geschrieben werden.
Hier ein Beispiel:
Delphi-Quellcode:
var
a : Array of Integer;
b : Integer;
...
a[1]:=42;
b:=a[1];
// b enthält jetzt 42 und a[1] auch
b:=73;
// b enhält jetzt 73 und a[1] enthält jetzt 42
// Damit a[1] den Wert von b enthält muss jetzt folgendes passieren
a[1]:=b;
In dem Beispiel entspricht vemailliste a und vfNeueEmail.vEmail b.
Ich hoffe jetzt ist es deutlich geworden.