![]() |
mail status ... progessbar
hi leute
ich bruach mal wieder eure hilfe ;) und zwar sitz ich grade an einem kleinen tool, für meine community, das tool versendet emails, an bestimmte adressen, mit größerem anhang (so 10-15mb) über den sinn bruacht ihr euch keien gedanken amchen ;) ich weiß das es sich für euch sicherlich komisch anhört ;) und zwar läuft das mit dem senden auch super und einwandfrei, mails kommen an, auch mit dne anhängen ;) ich benutze zum sendne die indy-komponenten (TIDsmtp) jetzt hätte ich aber gerne ne progressbar drin, welche anzeigt, wieviel von der mail (dem anhang) schon gesendet wurde, aber ich weiß absolut nciht wie ich das machen kann ;( hoffe ihr könnt mir helfen ;( cu andré |
Re: mail status ... progessbar
Ich hab dir mal ein kleines Beispiel zusammengebastelt:
Delphi-Quellcode:
Normalerweise sollte man AWorkCountMax nehmen, um die Anzahl der zu übertragenden Bytes herauszufinden, aber
procedure TForm1.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer); begin ProgressBar1.Max := FileSizeByName('C:\DreamControls.chm'); ProgressBar1.Position := 0; end; procedure TForm1.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin ProgressBar1.Position := AWorkCount; end; procedure TForm1.IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin ProgressBar1.Position := 0; end; Zitat:
Wenn du es also genau machen willst, dann musst du dir die einzelnen Teile vornehmen und die Größe selber zusammenbasteln. |
Re: mail status ... progessbar
danke dir vielmals für diene hilfe ;)
funzt einwandfrei da ich ja sowieso nur auf die anhänge der mails ausbin, interessierne mich die par kb text net, die machen da keinen großen aussschlag, also reichts mit filesize ;) jetzt hab ich nur ein problem ;( und zwar seit dem ich progrssbar drin hab, fiert das programm ein ;( also progressbar läuft zwar weiter und er sendet auch, aber ich könnte beispielsweise keine button mehr drücken während er sendet ;( das antifreeze von indy hab ich schon dabei ;( funzt aber auch ent hat jemand ne idee ? ;) cu andré |
Re: mail status ... progessbar
Versuch's mal mit nem Application.ProcessMessages im OnWork-Event...
|
Re: mail status ... progessbar
danke dir ;)
du bist mein held ;) funzt so einwandfrei, zwar mit verzögerung von ca. 1sek, aber damit kann ich 100% leben ;) haußtsache es reagiert überhaupt ;) cu andré |
Re: mail status ... progessbar
sry wegen dem doppel post ;(
hab abe rnoch eine wichtige frage, dann kann ich den thread als beantwortet abstemplen ;) und zwar würde mich nur interessieren, wie schnell de rupload jetzt is, also wie mit welchem speed die mail gesendet wird ;) thx 4 help cu andré |
Re: mail status ... progessbar
Einen Timer und das hier:
Delphi-Quellcode:
Den Timer in OnWorkBegin enablen und im OnWorkEnd disablen.
procedure TForm1.Timer1Timer(Sender: TObject);
begin Label1.Caption := Format('%d Bytes/sek', [BytesSend - Start]); Label1.Repaint; Start := BytesSend; end; Start in diesen beiden Methoden auf 0 setzen; BytesSend im OnWork auf AWorkCount setzen |
Re: mail status ... progessbar
danke dir ;)
was würde ich nur ohne dich machen ;) funzt einwandfrei, hatte mir das auch sleber mit nem timer gedacht, aber flasch umgestezt, udn zwar hab ich die sekunden gezählt dann die bytessend durch vergangegene sekunden geteilt, aber irgendwei ging das net ;( einziges prob noch ;( der startet den timer erst nachdem er gesendet hat ;( ka wieso ;( der zählt erst am ende runter ;( cu andré |
Re: mail status ... progessbar
Tja... :wink:
Da fehlt 100%ig noch ein Application.ProcessMessages im OnWork-Event. |
Re: mail status ... progessbar
hmm eigneltich isses drin ;(
egal werd den fehler shcon finden ^^ nochmal vielen vielen dank für deine hilfe cu andré |
Re: mail status ... progessbar
Zitat:
hab in etwa selbiges Problem. Ich bin aber auch noch lange nicht so weit, wie der Kollege. Ich hab heut erstmal ne bissel mit der POP3 Komponente von Indy rumprobiert. Mein Program friert momentan ein, wenn ich auf ein Pop3 Konto connectete, wo schon ein Benutzer eingeloggt ist. Ist auch logisch, nach Spezifikation des Pop3 Protokolls: Da auf ein Konto ja nur eine Verbindung zur Zeit statt finden darf. Ich habe das ganze dann über ne Exception abgefangen. Und hier friert das Programm sich ein. Und zwa ab dem klicken auf Verbinden bis zur Ausgabe der Exception. Ich würde das einfrieren nun gerne verhindern. Habe in den OnWork meines IdPOP3 über den Objektinspektor auch des Application.ProcessMessages gesetzt, doch funzt es nicht. Ich benutze keine IdAntifreeze Komponente, da ich gelesen habe das diese auch nur in bestimmten Zeitabständen ein Application.ProcessMessages ausführt. Ich weiss aber ehrlich gesagt auch garnicht wie ich diese verwenden sollte. Würde mich anbei auch mal interessieren:) Um auf das Problem zurück zu kommem: Was mach ich falsch? Hier mal der gesamte Quellcode. Ist momentan nur zum testen gedacht:
Delphi-Quellcode:
bin für jede hilfe dankbar:)
unit u_main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdPOP3, IdException; type TPopDown = class(TForm) POP: TIdPOP3; btn_connect: TButton; procedure btn_connectClick(Sender: TObject); procedure POPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); private { Private-Deklarationen } public { Public-Deklarationen } end; var PopDown: TPopDown; implementation {$R *.dfm} procedure TPopDown.btn_connectClick(Sender: TObject); begin POP.Host := '127.0.0.1'; POP.Port := 110; POP.Username := 'root'; POP.Password := ''; try POP.Connect(400); except on E:EIdProtocolReplyError do showmessage(E.Message); else showmessage('Irgendwas'); end; if POP.connected then begin showmessage('Connected successfully'); POP.Disconnect; showmessage('Connection closed'); end; end; procedure TPopDown.POPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin Application.ProcessMessages; end; end. hippe-di-hop janos |
Re: mail status ... progessbar
Zitat:
mfg |
Re: mail status ... progessbar
Zitat:
Zitat:
Zitat:
//EDIT: hab de fehler etz. FileSizeByName is Indy und aus der unit IdGlobal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 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