![]() |
Problem mit ProgressBar beim versenden von Emails - IdSMTP
Hallo!
Ich hab ein Problem mit dem versenden von Emails. Da die Anhänge schonmal etwas größer werden, würd ich gerne den Fortschritt beim senden mit einer ProgressBar anzeigen. Ich benutze zum senden die Indy Komponente IdSMTP, jedoch reagiert die ProgressBar beim senden der Email überhaupt nicht. Mein Code (den ich mir auch schon zusammengesucht hab) sieht so aus:
Delphi-Quellcode:
"AWorkCount" ist irgendwie immer Null - mehr konnt ich noch nicht herausfinden.
function Dateigroesse (Datei : String) : Integer;
var SRec: TSearchRec; begin Result := -1; if FindFirst(Datei, faAnyFile, SRec) = 0 then try Result := SRec.Size finally FindClose(SRec) end; end; procedure Tmaengel.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); var FS:TFileStream; begin FS := TFileStream.Create(dmx2send,fmOpenReadWrite) ; choose_adress.ProgressBar1.Max := FS.Size ; FS.free ; end; procedure Tmaengel.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin choose_adress.ProgressBar1.Position := AWorkCount; end; Wenn jemand eine zündende Idee hätte, wäre super :P Grüße, hitmiccs |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Hallo,
ich würd das ganze auf Prozentbasis machen.
Delphi-Quellcode:
Schau Dir in dem Haltepunkt einmal den Wert von AWorkCount an.
procedure Tmaengel.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); var FS:TFileStream; begin choose_adress.ProgressBar1.Max := 100; end; procedure Tmaengel.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin choose_adress.ProgressBar1.Position := round( (AWorkCount/Dateigroesse(FileName))*100); // <-- setze hier mal einen Haltepunkt end; Grüße Klaus |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Wenn mich nicht alles täuscht, war das ein Bug in den Indy Komponenten. AWorkCount sollte immer 0 sein. Um das Problem zu umgehen, reicht ein IndyMessage.SaveToFile vor dem eigentlichen Senden. Dadurch wird die Mail aufbereitet, und AWorkCount enthält den richtigen Wert.
|
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Super, probier ich sofort aus.
Danke schonmal! :thumb: |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Hmmm, mir ist grade aufgefallen, das IdSMTP1Work garnicht ausgeführt wird - IdSMTP1WorkBegin auch nicht.
Ist mir aufgefallen, da an dem gesetzten Haltepunkt rein garnichts passiert.. Woran kann das liegen? Normalerweise sollte es ausgeführt werden, wenn die Email gesendet wird..die Mail wird aber gesendet, ohne Probleme. |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
So, ich hab jetzt alle auffindbaren Tips und Kniffe ausprobiert und komm auf kein Ergebnis.
Die beiden Prozeduren werden einfach nicht ausgeführt - Haltepunkt klappt nicht, und das Programm friert beim senden ein, bis die Datei versendet ist. Die AntiFreeze-Komponente von Indy funktioniert ebenfalls nicht. Weiß nicht mehr weiter :cry: |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Was für eine Indy Version nutzt denn Du?
Grüße Klaus |
Re: Problem mit ProgressBar beim versenden von Emails - IdSM
Hallo.
Ich hab es mit Indy 10 (Version 10.0.76 und 10.1.5) und Indy 9 (Version 9.0.18 + 19) probiert. Die Versionsänderung brachte keinen Erfolg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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