Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Wie kann ich einen Record "echt" kopieren...?

  Alt 12. Mär 2004, 11:34
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat