Moin beisammen!
Mein Emailclient schafft mich noch ganz...
Eine Email wird durch folgenden Record beschrieben:
Delphi-Quellcode:
TEmail =
record
id : integer;
ordner_id : integer;
von,
replyto,
an,
cc,
bcc : TIdEMailAddressList;
betreff :
string;
Text :
string;
datum : TDateTime;
prio : smallint;
gelesen : Boolean;
marke : boolean;
beantwortet : boolean;
eingang : boolean;
schutz : boolean;
end;
Die in der Listview angezeigten Emails enstprechend in einem Array:
vEmailliste : array of TEmail;
Wird eine Email doppelt angeklickt, wird das Detailfenster geöffnet. Dieses enthält, um mit der Email arbeiten zu können eine Variable ebenfalls vom Typ TEMail.
Delphi-Quellcode:
vfNeueEmail := TfEmail.Create(Application);
vfNeueEmail.vEmail := vemailliste[listviewEmails.itemindex];
Und nun zum Problem: Beim Öffnen, Schließen und erneuten Öffnen
derselben Mail bekomme ich eine Zugriffsverletzung. Ich vermute auch, zu wissen, wieso: nach der Zuweisung verweist
vfNeueEmail.vEmail auf den selben Wert wie
vemailliste[listviewEmails.itemindex]. Schließe ich die Detailansicht, wird auch
vfNeueEmail.vEmail freigegeben - und somit ja der
Wert, auf den
vemailliste[listviewEmails.itemindex] verweist. Erneutes Öffnen der Email bedeutet also einen Zugriff auf einen Arraywert, den es nicht mehr gibt. Wie also kann ich vEmail eine "echte Kopie" geben?
Danke im Voraus - schönen stressfreien Tag
Simon