![]() |
Data Pointer Fehler in ListView
Hallo zusammen,
ich versuche grade einen Pfad einer Datei in einen Data Object zu Speichern. Leider tauchen immer Fehlermeldungen auf mit dem ich nichts anfangen kann. Zitat:
Delphi-Quellcode:
und speichere die Adresse der Datei mit folgendem Code:
type
TAttachPfadDaten = class(TObject) private { Private-Deklarationen } public { Public-Deklarationen } Attachpfad: string; end;
Delphi-Quellcode:
Wenn ich jetzt in meiner ListView mehr als ein Eintrag habe, und einen davon Löschen möchte, versuche ich dies über diese
procedure TMailSend.ButtonLadenClick(Sender: TObject);
var AttachPfadDaten: TAttachPfadDaten; begin AttachPfadDaten := TAttachPfadDaten.Create; if (Opendialog1.Execute) then begin TiDAttachment.Create(MsgSend.MessageParts, Opendialog1.FileName); ListviewAnhang.Items.Add.Caption := ExtractFileName(Opendialog1.FileName); AttachPfadDaten.Attachpfad := opendialog1.FileName; itm.Data := AttachpfadDaten; end; end; Procedure:
Delphi-Quellcode:
Leider klappt das nicht so wie ich mir das dachte, kann mir jemand sagen was ich dort Falsch mache ?
procedure TMailSend.ButtonLoeschenClick(Sender: TObject);
var AttachPfadDaten: TAttachPfadDaten; i, x: integer; begin if ListViewAnhang.Selected <> nil then begin with ListViewAnhang do begin for x := 0 to Items.Count - 1 do if (Items.Item[x].Selected) then AttachPfadDaten := TAttachPfadDaten(Items[x].data); end; for i := 0 to pred(MsgSend.MessageParts.Count - 1) do begin if (MsgSend.MessageParts.Items[i].StoredPathName = AttachPfadDaten.Attachpfad) then MsgSend.MessageParts.Items[i].Free; end; ListViewAnhang.DeleteSelected; {Anhang Löschen} end else exit; end; Was den Fehler verursacht ? Wenn ich die das alles richtig verstanden habe, kann ich doch für jeden eintrag in meiner Listview ein Data benutzen oder ? |
Re: Data Pointer Fehler in ListView
Frage:
Delphi-Quellcode:
Ok, mit ListviewAnhang.Items.Add bekommst du eine neue Instanz zurück (der neue Eintrag). Nun erklär mir mal was "itm" ist am Ende der Procedure und warum du ...
TiDAttachment.Create(MsgSend.MessageParts, Opendialog1.FileName);
ListviewAnhang.Items.Add.Caption := ExtractFileName(Opendialog1.FileName); AttachPfadDaten.Attachpfad := opendialog1.FileName; itm.Data := AttachpfadDaten; a) "itm" nicht lokal deklariert hast b) "itm" nicht den Rückgabewert von ListviewAnhang.Items.Add zugewiesen hast? Theoretisch sollte das dann praktisch klappen... |
Re: Data Pointer Fehler in ListView
Du solltest die Schleife
Delphi-Quellcode:
rückwärts laufen lassen.
for i := 0 to pred(MsgSend.MessageParts.Count - 1) do [...]
Den Grund dafür findest Du in ![]() Gruß Hawkeye |
Re: Data Pointer Fehler in ListView
... und zusätzlich noch die Frage:
Delphi-Quellcode:
Warum nur bis Count-2 ??
for i := 0 to pred(MsgSend.MessageParts.Count - 1) do
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz