| Autor |
Beitrag |
Jagg
      
Beiträge: 635
|
Verfasst: Mi 17.07.02 13:10
Hallo,Leute !
Ich habe ein MailProgramm und wenn ich eine Nachricht versende möchte ich die Progressbar solange laufen lassen,wie die Übertragung dauert (also,Echtzeit)
Wer kann mir helfen ???
Jagg !
|
|
wwerner
      
Beiträge: 185
|
Verfasst: Mi 17.07.02 13:28
Woher weist du wielange die Übertragung dauert?
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Mi 17.07.02 13:32
Das weiss ich nicht deshlab frag ich ja ob eine Progressbar das machen kann in Echtzeit !
Jagg !
|
|
wwerner
      
Beiträge: 185
|
Verfasst: Mi 17.07.02 13:37
Du überträgst ein paar byte, mißt die Zeit und machst dann eine Hochrechnung. Und dann die Hochrechnung alle paar byte korrigieren
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Mi 17.07.02 13:39
und jetzt auf deitsch bitte !
*hehe*
Kannst du mir nicht mal so einen code dafür geben ???
|
|
Alfons-G
      
Beiträge: 307
Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
|
Verfasst: Mi 17.07.02 18:20
Hi,
ich hab' leider keine Zeit, jetzt ein Codebeispiel zu schreiben.
Aber Du schaust zuerst, wie groß ist die Mail. Angenommen 120 KB. Bei ISDN hast Du z.B. eine Übertragungsrate von etwa 7 KB/sec, wenn der Server und die Verbindung ok sind.
Du startest die Übertragung und gleichzeitig einen Timer. Nach zwei Sekunden zählst Du die übertragenen Bytes.
Angenommen, es sind 12 KB. Dann sind das 10 %, damit hast Du die Daten für Deinen Progressbar. Über den Timer wiederholst Du das Ganze alle 2 Sekunden

_________________ Alfons Grünewald
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Do 18.07.02 08:00
ja,das kann ich doch nicht immer wissen wie groß die mail ist,ist ja immer unterschiedlich,wie bekomme ich das heraus ????
Jagg !
|
|
Thomas233
      
Beiträge: 39
Win 2000, Win Xp
Delphi 6 Personal
|
Verfasst: Mi 24.07.02 17:41
| Jagg hat folgendes geschrieben: | ja,das kann ich doch nicht immer wissen wie groß die mail ist,ist ja immer unterschiedlich,wie bekomme ich das heraus ????
|
Ganz einfach  :
Du öffnest die Datei einfach per Delphi, nutzt das Kommando "Filesize" und dann bekommste die Größe in Bytes in ne Variable.
Hier der Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var file: file of byte; size: LongInt; sizeKB: Integer; begin try AssignFile(file,'NameDerDatei+Endung'); Reset(file); size := FileSize(file); sizeKB := size div 1024; finally Closefile(file) end; |
So, das wars auch schon! Einfacher als man denkt, nicht? Hoffe du kannst das verwenden.
_________________ Mit freundlichen Grüßen
Thomas233
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Di 06.08.02 08:03
hey,danke für den code und wie verbinde ich jetzt das ganze mit einer Progressbar ???
Etwa so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure TForm1.NMSMTP1Success(Sender: TObject); var groesse: file of byte; size: LongInt; sizeKB: Integer; i : integer; begin begin try AssignFile(groesse,'SendeZeit'); Rewrite(groesse); size := FileSize(groesse); ProgressBar1.Max := Size; for i := 0 to Size do begin Sleep(80); ProgressBar1.Position := i; Application.ProcessMessages; end; ProgressBar1.Position := 0; sizeKB := size div 1024; finally Closefile(groesse); Showmessage('Nachricht wurde erfolgreich an '+Edit2.Text+' versendet'); Edit1.Clear; Edit2.Clear; Edit3.Clear; Memo1.Clear; ListBox1.Clear; Edit1.SetFocus; end; end; end; |
|
|
MathiasH
      
Beiträge: 699
WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
|
Verfasst: Di 06.08.02 08:48
die Progressbar würde ich besser nicht in eine Schleife reinsetzten, besser in einen Timer oder nen eigenen Therad, da dies das Programm nicht ausbremsen, denn selbst mit Applicatin.ProcessMessages läuft die anwendung nicht vernünftik weiter.
_________________ "Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Do 08.08.02 15:12
Hey,ich habe es so gemacht,aber es geht nicht kann mir jemand sagen warum ???
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| AssignFile(groesse,'SendeZeit.dat'); Rewrite (groesse); size := FileSize(groesse); sizeKB := size div 1024; ProgressBar1.Max := Size; for i := 0 to Size do begin Sleep(10); ProgressBar1.Position := i; Application.ProcessMessages; end; ProgressBar1.Position := 0; |
|
|
Jagg 
      
Beiträge: 635
|
Verfasst: Do 08.08.02 15:13
mit :
Delphi-Quelltext 1:
| writeln (groesse,Edit1.Text); |
will ich was reinschreiben,aber dann sagt er immer Felhler (E/A-Fehler)
|
|
Thomas233
      
Beiträge: 39
Win 2000, Win Xp
Delphi 6 Personal
|
Verfasst: Mi 10.09.03 16:47
| Jagg hat folgendes geschrieben: | mit :
Delphi-Quelltext 1:
| writeln (groesse,Edit1.Text); |
will ich was reinschreiben,aber dann sagt er immer Felhler (E/A-Fehler) |
Du musst zum Schluss noch "CloseFile(groesse)" hinzufügen, damit die Datei auch wieder vom Programm freigegen wird.
Ausserdem kannst du statt "Rewrite" auch noch andere Moduse verwendenen.
Siehe www.delphibasics.co.....asp?Name=AssignFile
Viel Spass.
_________________ Mit freundlichen Grüßen
Thomas233
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Mi 10.09.03 16:56
hallo,
welche komponenten benutzt du denn zum emailsenden?
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|