Einzelnen Beitrag anzeigen

wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#1

Data Pointer Fehler in ListView

  Alt 28. Mär 2006, 20:28
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:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt MailClient.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004AC152 in Modul 'MailClient.exe'. Lesen von Adresse 00000004'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
ich habe ein Type TAttachPfad angelegt
Delphi-Quellcode:
 type
  TAttachPfadDaten = class(TObject)

  private
    { Private-Deklarationen }  
  public
    { Public-Deklarationen }  
    Attachpfad: string;
  end;
und speichere die Adresse der Datei mit folgendem Code:

Delphi-Quellcode:
 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;
Wenn ich jetzt in meiner ListView mehr als ein Eintrag habe, und einen davon Löschen möchte, versuche ich dies über diese
Procedure:
Delphi-Quellcode:
 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;
Leider klappt das nicht so wie ich mir das dachte, kann mir jemand sagen was ich dort Falsch mache ?
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 ?
Mario
  Mit Zitat antworten Zitat