![]() |
Herausfinden ob eine Datei fertig heruntergeladen ist
Hi!
Gibt es eine Möglichkeit einem Programm zu sagen dass eine Datei heruntergeladen wurde und es nun drauf zugreifen kann? Danke schonmal,Lamy |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Hi,
meinst du einem Programm oder deinem Programm? Wenn du meinst das du in deinem Programm per Quellcode prüfen willst ob eine Datei die du geladen hast fertig ist und du jetzt mit ihr arbeiten kannst, ist das recht einfach. Du findest die größe der Datei im Internet heraus, und vergleichst sie mit der Größe der Datei auf deinem Rechner. Such hier in der DP mal nach FileSize oder GetFileSize, sind eine schöne Dinger dabei. Naja und für das im Internet müsste man wissen was für Klassen oder Kompos du dafür benutzt. In den entsprechenden Dokus könnte man sowas mal nachlesen. Bis dann, S - tefano |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Hm, falsch ausgedrückt - mein Programm lädt eine Updatedatei runter die etwas größer ist.
Das Programm soll so lange warten bis die Datei fertig heruntergeladen ist und diese dann öffen. |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Wie lädt denn dein Programm die Datei runter?
Einige der Methoden halten das Programm ja eh an, bis die Datei da ist, oder ein Fehler auftritt. |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Ansonsten wenn du bspw. die Indys benutzt, bekommst du ja bei solchen Sachen Events ausgelöst. Zum Beispiel immer wenn eine bestimmte Blockgröße fertig übertragen wurde, oder (jedenfalls bei idFTP) auch wenn die Datei fertig ist (OnAfterGet).
Bis dann, S - tefano |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
kommt drauf an wie du runterlädst
machst du das mit
Delphi-Quellcode:
dann gibt die fkt auch zurück ob der download erfolgreich war,und du kannst die datei dann auch öffnen
UrlDownloadToFile(nil, PChar(quelle), PChar(zeil), 0, nil)
du könntest natürlich auch immer überprüfen, ob die datei überhaut schon vorhanden ist, denn ich glaube die wird erst in ein anderes verzeichnis geladen und dann erst zum zeilverzeichnis kopiert (zumindest bei meinem ie) tja, und wenn die da ist, dann machst du halt was du machen willst |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Bei mir versucht UrlDownloadToFile die Datei zu überschreiben, wenn schon eine da ist.
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
ja dann must du halt abfragen ob die schon da ist und wenn ja irgens eine zahl oder so noch mit anfügen
Delphi-Quellcode:
if fileexists('..')
then dateiname:=alterdateiname+'keineahnung' else halt normal; |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
aber wozu eine datei runterladen die du schon hast???
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Zitat:
Aber wie wird denn zurückgegen dass die fertig runtergeladen ist? Ich will das dann so einbinden:
Delphi-Quellcode:
Und während des Downloads:
IF Datei runtergeladen THEN
BEGIN Datei öffnen Programm schließen END LBStatus.Caption := 'Es dauert noch einen Moment, die Datei wird heruntergeladen...' |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Solltest du
![]() |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
@Lamy:
du nimmst einfach URLDownloadToFile und wärdens des Downloads wird die Prozedur, wo der Befehl drin ist angehalten, was denkst du denn, warum wird hier oftmals URLDownloadToFile in Threads auslagen? (Weil es halt das Prog anhält - du darfst den Download halt nur nicht ein einem Thread auslagern) @Remote1: Weil z.B. die Datei defekt sein könnte, oder man sich eine neue Version einer Datei besorgt... [ADD] Och menno, Luckie hat sich vorgedrängelt -.- [ADD2] @Lamy: Zitat:
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Delphi-Quellcode:
PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR Datei, Ziel: PChar; Programmverzeichnis: STRING; BEGIN Programmverzeichnis := ExtractFilePath(Application.ExeName); TRY Label2.Caption := 'Alte Programmdatei wird gelöscht'; DeleteFile(Programmverzeichnis + '\UrFtpclient.exe'); Label1.Caption := 'Bitte warten!'; Datei := 'http://www.a.toolsnfun.de/urftpclient.exe'; Ziel := PChar(Programmverzeichnis + '\urftpclient.exe'); UrlDownloadToFile(NIL, Datei, Ziel, 0, NIL); IF FileExists(Programmverzeichnis + '\urftpclient.exe') THEN Label1.Caption := 'updatedatei heruntergeladen'; ELSE BEGIN sleep(5000); Label1.Caption := 'Bitte warten Sie bis die Updatedatei heruntergeladen ist...'; END; IF FileExists(Programmverzeichnis + '\urftpclient.exe') THEN Label1.Caption := 'updatedatei heruntergeladen'; EXCEPT showmessage('Download abgebrochen'); END; END; Ich weiß nicht was ein Thread ist aber der hier wartet nicht bis die Datei runtergeladen wurde... |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Die Code-Lib enthält doch ein Beispiel von "UrlDownloadToFile" mit Download-Fortschritt. (Link, s. Beitrag von Luckie). Daraus müsste sich doch was machen lassen. :)
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Ich habe ja eher die Befürchtung, dass du deine Labels gar nichts siehst, da sie in OnCreate der Form noch gar nicht angezeigr werden.
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Oh nein :/
Ich bin so dämlich... Naja, der Fehler hat sich von Selbst aufgelöst, bitte fragt mich nicht worans gelegen hat.... :wall: @ Luckie: Stimmt ^^ Aber wie kann ich in einem Label anzeigen, dass der die Datei zur Zeit runterlädt? |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
1. Bei mir wartet diese Prozedure
2. ist das doch nicht die, die du im Proggi hast, denn diese hat Fehler drin (nicht compilierbar)
Code:
3. kann es sein. das die Datei (auf'm Server) nicht existiert?
IF FileExists(Programmverzeichnis + '\urftpclient.exe') THEN
Label1.Caption := 'updatedatei heruntergeladen'[color=red][b];[/b][/color] ELSE ... Das dürfte eigentlich reichen:
Delphi-Quellcode:
[ADD]
PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR Programmverzeichnis: STRING; BEGIN Programmverzeichnis := ExtractFilePath(Application.ExeName); TRY Label2.Caption := 'Alte Programmdatei wird gelöscht'; Application.ProcessMessages; DeleteFile(Programmverzeichnis + '\UrFtpclient.exe'); Label1.Caption := 'Bitte warten!'; UrlDownloadToFile(NIL, 'http://www.a.toolsnfun.de/urftpclient.exe', PChar(Programmverzeichnis + '\urftpclient.exe'), 0, NIL); IF FileExists(Programmverzeichnis + '\urftpclient.exe') THEN Label1.Caption := 'updatedatei heruntergeladen'; EXCEPT showmessage('Download abgebrochen'); END; END; Zitat:
und dann :
Delphi-Quellcode:
Wir fragen dennoch, den wir lernen auch gern und von Fehlern lernt es sich am Besten.
Application.ProcessMessages;
|
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Zitat:
![]() |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Zitat:
Zu 2: Ne, hatte das nicht so in der Prozedur drin, war hier nur'n Tippfehler Zu 3: Ja, das war mein Fehler :duck: *schäm* Zu 4: Danke :chat: Zu 5: ? :gruebel: |
Re: Herausfinden ob eine Datei fertig heruntergeladen ist
Zitat:
(Also die Datei war nicht da, oder unter einem anderenn Namen?) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz