FTP Dateidownloads- Status anzeigen?
-
Hallo,
ich möchte über die Komponente IdFTP1 den Downloadfortschritt in einer Progressbar anzeigen lassen. Kann mir da jemand helfen, wie ich das anstelle?
Grüße
Roman
-
shaftie schrieb:
Kann mir da jemand helfen, wie ich das anstelle?
Ja, die Suchfunktion des Forums. Z.B.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-113623-and-highlight-is-ftp+status.html
-
Hallo,
ok, ich werde diese in Zukunft mehr bemühen.
Leider funktioniert das ganze immernoch nicht bei mir

void __fastcall Tf2::IdFTP1Work(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { Application->ProcessMessages(); spb1->Position = AWorkCount; l2->Caption = AWorkCount; } //--------------------------------------------------------------------------- void __fastcall Tf2::IdFTP1WorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { Application->ProcessMessages(); spb1->Max = AWorkCountMax; } //--------------------------------------------------------------------------- void __fastcall Tf2::IdFTP1WorkEnd(TObject *Sender, TWorkMode AWorkMode) { spb1->Position = 0; spb1->Max = 100; // <---eigentlich umsonst Application->ProcessMessages(); }
-
Hallo
Leider funktioniert das ganze immernoch nicht bei mir
Das ist keine ausreichende Fehlerbeschreibung.
Ich würde erstmal die ProcessMessages()-Anweisungen nach die jeweiligen Änderungen setzen. Desweiteren benutzt den Debugger./Edit : Und siehe Jansens Post in dem Link.
bis bald
akari
-
Hi,
also, ich habe die ProcessMessages()- Anweisungen dahinter geschrieben, aber es funktioniert immernoch nicht.
Das Label (l2) zeigt alles wunderbar an, die suiProgressBar (spb1) tut allerdings garnichts... Da bewegt sich nichts.
Wenn ich
void __fastcall Tf2::IdFTP1WorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { spb1->Max = AWorkCountMax; Application->ProcessMessages(); }auskommentiere, dann regt sich die Progressbar, aber sie ist sofort auf 100%, was ja auch nicht Sinn der Sache ist.
-
Ich habe es nun so probiert:
void __fastcall Tf2::IdFTP1Work(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { spb1->Position = AWorkCount; Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall Tf2::IdFTP1WorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { if (AWorkCountMax > 0) { spb1->Max=AWorkCountMax; }else { long dlsize=IdFTP1->Size("nbrowse.rar"); spb1->Max = IdFTP1->Size(dlsize); } Application->ProcessMessages(); }Leider bewegt sich das alles immernoch nicht...
Ich glaube, dass Size("Dateiname") nichts zurückbringt, denn ich wollte es mal per label ausgeben und es kam nichts...Ich bin in das Verzeichnis /files gewechselt, da gab es eine Datei mit dem Namen "nbrowse.rar".
Habe dann l2->Caption = IdFTP->Size("nbrowse.rar"); ausprobiert, aber das klappte nicht wirklich (keine Anzeige, Label blieb leer).Kann mir da noch jemand helfen?
-
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { IdFTP1->Host = "ftp.heise.de"; IdFTP1->User = "anonymous"; IdFTP1->Password = "guest"; IdFTP1->Connect(); if (IdFTP1->Connected()) { IdFTP1->ChangeDir("/pub/ct/pci/") ; ProgressBar1->Max = IdFTP1->Size("amd_201.zip"); IdFTP1->Get("amd_201.zip", "c:\\amd_201.zip", true); IdFTP1->Disconnect(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::IdFTP1WorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { ProgressBar1->Position = 0; Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TForm1::IdFTP1Work(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { ProgressBar1->Position = AWorkCount; Application->ProcessMessages(); } //---------------------------------------------------------------------------
-
Klasse, das funktioniert!
Vielen Dank
