AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Data Pointer Fehler in ListView

Ein Thema von wlfmario · begonnen am 28. Mär 2006 · letzter Beitrag vom 28. Mär 2006
Antwort Antwort
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
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Data Pointer Fehler in ListView

  Alt 28. Mär 2006, 21:53
Frage:
Delphi-Quellcode:
    TiDAttachment.Create(MsgSend.MessageParts, Opendialog1.FileName);
    ListviewAnhang.Items.Add.Caption := ExtractFileName(Opendialog1.FileName);
    AttachPfadDaten.Attachpfad := opendialog1.FileName;
    itm.Data := AttachpfadDaten;
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 ...

a) "itm" nicht lokal deklariert hast
b) "itm" nicht den Rückgabewert von ListviewAnhang.Items.Add zugewiesen hast?

Theoretisch sollte das dann praktisch klappen...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Data Pointer Fehler in ListView

  Alt 28. Mär 2006, 21:59
Du solltest die Schleife
for i := 0 to pred(MsgSend.MessageParts.Count - 1) do [...] rückwärts laufen lassen.
Den Grund dafür findest Du in diesem Thread.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Data Pointer Fehler in ListView

  Alt 28. Mär 2006, 22:05
... und zusätzlich noch die Frage:

for i := 0 to pred(MsgSend.MessageParts.Count - 1) do Warum nur bis Count-2 ??
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz