Autor Beitrag
cromos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 219


Delphi 7
BeitragVerfasst: Sa 24.04.04 20:05 
ich komme echt nicht mehr weiter. Ich bekomms nicht hin. Ich möchte eine Statusanzeige
beim FTP Download haben. Aber die ProgressBar bewegt sich NICHT.

ausblenden 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:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
pg1.Max := AWorkCountMax;
pg1.Position := 0;
end;

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
var
  S : String;
TotalTime,STime: TDateTime;
  H, M, Sec, MS: Word;
 DLTime: Double;
  i : integer;
begin
  //Erechnen der Transfergeschwindigkeit:
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime :=Sec + MS / 1000;
  if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;
  S := FormatFloat('0.00 KB/s',AverageSpeed);
  
    pg1.position := AWorkCount;

 

end;


Kann mir jemand sagen was ich da falsch mache????

Gruss
cromos
Pierre
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138

Win 98se und XP prof
D5Pers und D7Prof
BeitragVerfasst: Sa 24.04.04 22:33 
Hallo,
ich hatte dieses Problem anfangs auch, ich hatte vergessen, dass ich die beiden Prozeduren im Objektmanager setzen muß.
In meinem Objektmanager /Ereignisse sind zu IDftp das Ereignis Onstatus, Work, Workbegin und Workend gesetzt.
Hast Du auch das AntiFreeze nicht vergessen?
Gruß Pierre
cromos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 219


Delphi 7
BeitragVerfasst: So 25.04.04 10:32 
Hallo,

ja AntiFreeze ist vorhanden.

Kannst Du mir mal den Code für OnStatus und WorkEnd geben???
Aber eigendlich sollte es ja auch so funktionieren - Oder ????!!!!

Wie kannst Du denn vergessen die Prozeduren im Objektmanager zu setzten? Verstehe nicht ganz was du meinst!

Also wenn man auf die idFTP Kompo bei mir geht und dann den Objetmanager aufruft, dann Ereignisse sind da
OnWork und OnWorkBegin gesetzt. - Falls Du das meinst.

Gruss
cromos
Pierre
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138

Win 98se und XP prof
D5Pers und D7Prof
BeitragVerfasst: So 25.04.04 19:49 
Hallo,
hier mein Code:

ausblenden 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:
procedure TForm9.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);
begin
//....
if FTP_Status < 4 then inc(FTP_Status);
if FTP_Status=3 Then FTP_info:=AStatusText;

end;
procedure TForm9.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
  ProgressBar1.Position := AWorkCount;
  if Abbruch then IdFTP1.Abort;
end;

procedure TForm9.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  if AWorkCountMax > 0 then ProgressBar1.Max := AWorkCountMax
  else ProgressBar1.Max := BytesToTransfer;
end;

procedure TForm9.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar1.Position := 0;
end;


mit:

FTP_Status:Integer;
FTP_info:String;
BytesToTransfer: LongWord;

wobei im Objektinspektor in IdFTP1 die Ereignisse ....
OnStatus = IdFTP1Status
OnWork = IdFTP1Work
OnWorkBegin = IdFTP1WorkBegin
OnWorkEnd = IdFTP1 WorkEnd
gesetzt sind.

Diese Ereignisse werden bei mir nicht automatisch zugeordnet, ich muß sie immer setzen.

Ich hoffe, es hilft.
Gruß Pierre