001
20.04.2007, 15:51 Uhr
~Pingu625
Gast
|
Hi, das geht eigentlich ganze einfach. Ich weiß leider nicht mehr woher ich den Code habe, ich verwende ihn aber sehr oft.
Als erstes musst du einen Stream für die herunterzuladene Datei erstellen:
C++: |
TFileStream* Stream = new TFileStream(ExtractFilePath(Application->ExeName) + "XYZ.txt", fmCreate);
|
Danach lässt du die Datei in diesen Stream herunterladen:
C++: |
IdHTTP1->Get("http://www.domain.de/abc.txt", Stream);
|
Für das Ereignis der Komponente IdHTTP1 Work benutzt du folgenden Code:
C++: |
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages(); // Rechenzeit für Ereignisse freigeben
|
Für das Ereignis der Komponente IdHTTP1 WorkBegin benutzt du folgenden Code:
C++: |
// Dateigröße steht in AWorkCountMax ProgressBar1->Max = AWorkCountMax; ProgressBar1->Position = 0;
|
Und SO könnte der benötigte Teil aussehen:
C++: |
void __fastcall TForm1::DownloadClick(TObject *Sender) { TFileStream* Update = new TFileStream(ExtractFilePath(Application->ExeName) + "VistaSpeechRecognition.wmv", fmCreate); try { http->Get("http://www.coolpas.net/Mods/VistaSpeechRecognition.wmv", Update); delete Update; } catch(...) { delete Update; } } //--------------------------------------------------------------------------- void __fastcall TForm1::httpWork(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { FileProgress->Position = AWorkCount;
Application->ProcessMessages(); // Rechenzeit für Ereignisse freigeben } //--------------------------------------------------------------------------- void __fastcall TForm1::httpWorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { // Dateigröße steht in AWorkCountMax FileProgress->Max = AWorkCountMax; FileProgress->Position = 0; } //---------------------------------------------------------------------------
|
Pingu |