Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi File aus TIDAttachment Löschen ? (https://www.delphipraxis.net/66323-file-aus-tidattachment-loeschen.html)

wlfmario 28. Mär 2006 14:18


File aus TIDAttachment Löschen ?
 
Hallo zusammen,

ich versände mit meinem Projekt Mails mit mehreren Anhängen.
Die Anhänge lade ich mir per TIDAttachment und schreibe den Filenamen in eine ListView.
Delphi-Quellcode:
procedure TMailSend.ButtonLadenClick(Sender: TObject);
begin
  if (Opendialog1.Execute) then
  begin
    TiDAttachment.Create(MsgSend.MessageParts, Opendialog1.FileName);
    ListviewAnhang.Items.Add.Caption := ExtractFilename(Opendialog1.FileName);
  end;
end;
Wenn ich jetzt aber ein File nicht mit senden möchte, dachte ich mir, das ich es einfach aus der TIDAttachment Lösche.
Leider fällt mir keine möglichkeit ein die Attachmenst einzeln zu löschen und nicht alle.
Wie kann ich so etwas machen, das wenn ich im ListView ein FileName anklicke das richtige File aus dem Attachments gelöscht wird ?

Delphi-Quellcode:
procedure TMailSend.ListViewAnhangKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_DELETE then
    if ListViewAnhang.Selected <> nil then
    begin
      // hier das Attachment Löschen ????????
      ListViewAnhang.DeleteSelected;
      {Anhang Löschen}
    end
    else
      exit;
end;

ste_ett 28. Mär 2006 15:15

Re: File aus TIDAttachment Löschen ?
 
Auf die einzelnen Attachments kannst du mit

Delphi-Quellcode:
(*Name der Instanz von TIdMessage*).MessageParts.Items
zugreifen. :)

Um die Datei aus der Attachmentliste zu löschen, reicht es, das Objekt freizugeben.

Delphi-Quellcode:
  for i := 0 to (*Name der Instanz von TIdMessage*).MessageParts.Count-1 do
    if ((*Name der Instanz von TIdMessage*).MessageParts.Items[i].StoredPathName = 'Pfad\zur\Datei') then
      (*Name der Instanz von TIdMessage*).MessageParts.Items[i].Free;

wlfmario 28. Mär 2006 15:43

Re: File aus TIDAttachment Löschen ?
 
Danke für die schnelle Antwort !

jetzt habe ich nur das Problem wenn ich die Procedure aufrufe, das ich immer wenn ich mehr als zwei Files lade folgende Fehlermeldung erscheint.

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt MailClient.exe ist eine Exception der Klasse EListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (2)'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Wenn es nur zwei Files sind klappt es.
hier mal die Procedure, in Listview steht der Pfad zum File.

Delphi-Quellcode:
procedure TMailSend.ListViewAnhangKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

  Var i: integer;

begin
  if key = VK_DELETE then
    if ListViewAnhang.Selected <> nil then
    begin
      for i := 0 to pred(MsgSend.MessageParts.Count) do
      begin
    if (MsgSend.MessageParts.Items[i].StoredPathName = ListViewAnhang.Selected.Caption) then
      MsgSend.MessageParts.Items[i].Free;
      end;
      ListViewAnhang.DeleteSelected;
      {Anhang Löschen}
    end
    else
      exit;
end;

wlfmario 28. Mär 2006 15:53

Re: File aus TIDAttachment Löschen ?
 
Erledigt !

ich hatte das -1 vergessen.

Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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