Autor Beitrag
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Sa 07.08.04 13:39 
Hallo NG,

ich übertrage mit der INDY IdSMTP eine Mail mit Anhängen - Problem nun: wie kann ich eine Fortschrittsanzeige erstellen ? Ich kenn die Gesamtzahl der zu übetragenden Bytes - wie kann ich aber die aktuelle Übertragung ermitteln und aktualisieren ?

Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: So 08.08.04 10:05 
Schau dir mal die Ereignisse Suche in: Delphi-Forum, Delphi-Library ONWORKBEGIN OR ONWORK OR ONWORKEND an.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 08.08.04 12:06 
Hallo,

ich habe mal folgendes probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
//*******************************************************
procedure TForm6.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  if AWorkMode = wmWrite then
  begin
    form6.ProgressBar1.Position:=AWorkCount*100 div 1024;
  end;
end;
//*******************************************************

//*******************************************************
procedure TForm6.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  form6.ProgressBar1.Max:=AWorkCountMax div 1024;
end;
//*******************************************************


Aber: in AWorkCountMax steht immer 0.

Meine Mail mit den Anhängen setze ich wie folgt zusammen:

ausblenden Delphi-Quelltext
1:
IdMessage1.Body.Assign(Form6.Memo1.Lines);					


In der Memo steht die Mail.

ausblenden Delphi-Quelltext
1:
2:
TIdAttachment.Create(IdMessage1.MessageParts,trim(form1.Table1.fieldbyname
                 ('filename').asstring));



Hier habe ich alle Dateien angehängt, die mitgesendet werden sollen. Und mit

ausblenden Delphi-Quelltext
1:
IdSMTP1.Send(IdMessage1);					


send ich die Nachricht.

Kannst Du mir da helfen ? :( :( :D

Das OnWork Ereignis habe ich mal mit dem Debugger verfolgt - die Bytes werden da aktualisiert und können der Variablen AWorkCount entnommen werden.


Gruss


Markus
Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: So 08.08.04 13:47 
M. Raab hat folgendes geschrieben:
Ich kenn die Gesamtzahl der zu übetragenden Bytes
Dann brauchst du AWorkCountMax doch gar nicht. Mit WorkBegin gibt es immer kleine Probleme, weshalb ich auch lieber schon vorher die Größe ermittel und dann nur noch onWork zu verwenden. Woran genau es liegt weiss ich jedoch nicht. Arbeitet denn onWork ordnungsgemäß?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 08.08.04 13:58 
Hallo,

onWork arbeitet schon -- aber die PROGRESS Bar wird nicht versetzt. Ich habe auch schon ein FORM6.REFRESH im onWORK Ereignis gesetzt. Debugge ich aber und hole mir den Wert von aWorkCount, so verändert der sich. Möchte ich aber diesen Wert aber laufend auf ein z.B. Panel ausgeben, kommt nix aufs Panel.

Warum ist aber in AWORKCOUNT immer 0 ? Im Moment ermittle ich die Größe aus den Größen der angehängten Dateien und der Größe des MEMO Feldes - eleganter wäre natürlich AWORKCOUNT.


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
flowstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 123

WinME
D6 Enterprise
BeitragVerfasst: Mi 11.08.04 23:03 
gibt AWorkCount die Anzahl det übertragenen Bytes an?
Denn wenn ich eine Mail mit Anhang versende, und AWorkCount immer in einer Liste ausgebe, wird der Wert deutlich größer als die Datei im Anhang, auch wenn kein Text mitgesendet wird!
Wie kann ich die korrekte Größe der Mail bekommen. AWorkCountMax gibt bei mir auch immer 0 an, geht also nicht.