Autor Beitrag
Jagg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mi 17.07.02 13:28 
Woher weist du wielange die Übertragung dauert?
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Mi 17.07.02 13:32 
Das weiss ich nicht deshlab frag ich ja ob eine Progressbar das machen kann in Echtzeit !

Jagg !
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: 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

:idea:

_________________
Alfons Grünewald
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39

Win 2000, Win Xp
Delphi 6 Personal
BeitragVerfasst: 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 8) :
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:
ausblenden 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; // Die Variable für die e-mail Datei
  size: LongInt; // Variable für Größe der Datei in Byte(Kann auch Integer sein)
  sizeKB: Integer; // Variable für Größe der Datei in Kilobytes, optional
begin
     try
    AssignFile(file,'NameDerDatei+Endung'); // Verbindet mit der e-mail Datei
    Reset(file); // Öffnet die e-mail Datei
      size := FileSize(file); // Speichert die Größe der Datei in der Variable "size"
      sizeKB := size div 1024; //optional, falls Größe der Datei in KB benötigt wird
   finally 
   Closefile(file) // Schliesst die e-mail Datei
end;

So, das wars auch schon! Einfacher als man denkt, nicht? Hoffe du kannst das verwenden.

_________________
Mit freundlichen Grüßen
Thomas233
Jagg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Di 06.08.02 08:03 
hey,danke für den code und wie verbinde ich jetzt das ganze mit einer Progressbar ???

Etwa so:
ausblenden volle Höhe Delphi-Quelltext
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'); // Verbindet mit der e-mail Datei
    Rewrite(groesse); // Öffnet die e-mail Datei
    size := FileSize(groesse); // Speichert die Größe der Datei in der Variable "size"
    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; //optional, falls Größe der Datei in KB benötigt wird
    finally
    Closefile(groesse); // Schliesst die e-mail Datei
    Showmessage('Nachricht wurde erfolgreich an '+Edit2.Text+' versendet');
    Edit1.Clear;
    Edit2.Clear;
    Edit3.Clear;
    Memo1.Clear;
    ListBox1.Clear;
    Edit1.SetFocus;
  end;
 end;
end;
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Do 08.08.02 15:12 
Hey,ich habe es so gemacht,aber es geht nicht kann mir jemand sagen warum ???
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 635



BeitragVerfasst: Do 08.08.02 15:13 
mit :
ausblenden Delphi-Quelltext
1:
writeln (groesse,Edit1.Text);					

will ich was reinschreiben,aber dann sagt er immer Felhler (E/A-Fehler)
Thomas233
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39

Win 2000, Win Xp
Delphi 6 Personal
BeitragVerfasst: Mi 10.09.03 16:47 
Jagg hat folgendes geschrieben:
mit :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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.