Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit ProgressBar beim versenden von Emails - IdSMTP (https://www.delphipraxis.net/86284-problem-mit-progressbar-beim-versenden-von-emails-idsmtp.html)

hitmiccs 12. Feb 2007 09:50


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:
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;
"AWorkCount" ist irgendwie immer Null - mehr konnt ich noch nicht herausfinden.

Wenn jemand eine zündende Idee hätte, wäre super :P
Grüße, hitmiccs

Klaus01 12. Feb 2007 11:29

Re: Problem mit ProgressBar beim versenden von Emails - IdSM
 
Hallo,

ich würd das ganze auf Prozentbasis machen.

Delphi-Quellcode:
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;
Schau Dir in dem Haltepunkt einmal den Wert von AWorkCount an.

Grüße
Klaus

Jelly 12. Feb 2007 11:50

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.

hitmiccs 12. Feb 2007 12:42

Re: Problem mit ProgressBar beim versenden von Emails - IdSM
 
Super, probier ich sofort aus.
Danke schonmal! :thumb:

hitmiccs 12. Feb 2007 14:10

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.

hitmiccs 13. Feb 2007 16:47

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:

Klaus01 13. Feb 2007 17:48

Re: Problem mit ProgressBar beim versenden von Emails - IdSM
 
Was für eine Indy Version nutzt denn Du?

Grüße
Klaus

hitmiccs 14. Feb 2007 01:34

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 09:35 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