| Autor |
Beitrag |
ShadowCaster
      
Beiträge: 312
|
Verfasst: Do 17.04.03 12:57
Also hallo,
hab im Forum lange gesucht aber nichts gefunden, womit ich UrlDownloadToFile abschalten kann. Ich hab vor mir ein Commandlinetool zum Downloaden von Dateien zu basteln. Jetzt will ich aber, dass ich mit ctrl+c das Programm und damit den Download abbrechen kann. Und das möchte ich alles nur mit dem Kommando machen. Ich möchte nicht die indy-komponenten verwenden. Die Anwendung soll schön klein werden.
Also wer weiß rat wie ich einen laufenden Downlaod der mit urldownloadtofile gestartet wurde beenden kann? Vielleicht gibt es ja einen API-Befehl dafür. Nur was ist wenn ich parallel 10 Downloads offen hab? woher soll ich wissen welchen ich beenden muss?
|
|
Moritz M.
      
Beiträge: 1672
|
Verfasst: Do 17.04.03 13:00
Also, generell bendest du das Programm mit Form1.close.
Da das in dem Fall warscheinlich nicht geht, kannst du Application.terminate verwenden. Warscheinlich geht das auch nicht und du musst halt verwenden. Falls das auch nicht geht musst du einen Timer mit höchster Priorität einbauen, der alle 1/10 Sekunde Quelltext 1:
| Application.ProgressMessages; |
ausführt, sozusagen ein AntoFreeze.
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 13:03
Nunja.. ich möchte das Programm aber nicht direkt beenden. Ich hab noch ein andres da brauch ich das auch, nur das ist vcl und da laufen noch andere Sachen. Nur leider muss ich den speziellen Download beenden können und nicht das ganze Programm. Das ist das Problem.
Trotzdem danke erstmal 
|
|
Moritz M.
      
Beiträge: 1672
|
Verfasst: Do 17.04.03 13:05
Achso. Na dann...
Du könntest in den Indy-Units nachschaun, wie die das gemacht haben.
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 13:07
Ich will aber nciht die indykompos verwenden, sorry. Es graut mir davor mich in kompos einzuarbeiten die nicht gescheid dokumentiert sind und wo man auf der Herstellerhomepage nicht mal EINEN Preview erhält welche Kompos es gibt und das die Machen in dem Indy-Packet. Desweiteren hat die Installation von den Indy-Komponenten damals dazu geführt, dass ich delphi neu installieren konnte weil anschließend mein Lib-Verzeichnis geputzt war.
|
|
Moritz M.
      
Beiträge: 1672
|
Verfasst: Do 17.04.03 13:10
Oha. OK. Hast mich geschlagen. Mehr kann ich dir nicht mmehr helfen, sorry.

|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 13:21
trozdem danke
Ich hab rausgefunden, dass die Downloadanweisung in der Funktion stattfindet und der erst aus der Funktion rausgeht wenn der Download vorbei ist. Vielleicht kann ich das in einen Thread packen. Diesen Thread könnte man ja abschießen. Dann würds wieder gehen, oder? 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 17.04.03 13:26
UrlDownloadToFile kehrt erst wieder zurück, wenn der Download fertig ist. Man kann UrlDownLoadToFile auch mit einer Callback austatten, habe ich schon mal gesehen, und in der Callback kann man es ja dann abbrechen.
Ansonsten in einem Thread auslagern.
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 13:30
Ja, Thread werde ich wahrscheinlich machen  Ich bins nämlich in meinen Progs teilweise leid, wenn ich nen ganzen IE starten muss für einen kleinen Download oder irgendein downloadtool. Aus dem Grund will ich das als commandlineprog machen, dem ich beliebige Befehle je nach nachdem wie ich sie brauch hinzufügen kann. Es geht darum dass ich einfach nurnoch download (-flag) (url) tippen muss und schon wirds runtergeladen 
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Do 17.04.03 14:22
Ein Thread wird dir aber auch nicht viel helfen.. UrlDownloadToFile kehrt erst zurück, wenn der Download abgeschlossen ist. Lagerst du das ganze in einen Thread aus terminiert der Thread auch erst wenn der Download abgeschlossen ist. Einzige Möglichkeit den Thread zu schließen wäre brutal mit TerminateThread!
Aber wozu das ganze wenn es auch eine UrlDownloadToFile-Variante mir Callback-Funktion gibt? Entweder hier oder auf der Delphi-Praxis (glaub aber eher auf 2terer) gibts in der FAQ eine Implementierung für sowas.
BTW: Es gibt auch sowas wie UrlDownloadToStream (oder so ähnlich). Just in case falls du die Datei nicht gleich auf die Festplatte spielen willst/musst sondern nur im Speicher brauchst...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 15:00
Das ist nicht schlecht  Danke für den Tipp. Allerdings würd mich interessieren ob die Funktion urldownloadtostream so einfach breakable ist 
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Do 17.04.03 15:12
| ShadowCaster hat folgendes geschrieben: | Allerdings würd mich interessieren ob die Funktion urldownloadtostream so einfach breakable ist  |
Es gibt für die UrlDownloadToStream Funktion genauso ne Variante mit Callback-Funktion! 
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Do 17.04.03 15:26
Achja... werde dann mal mein gehi... google einschalten 
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Do 17.04.03 15:49
Hallo ShadowCaster!
Hier habe ich ein gutes Beispiel gefunden: Beispiel!
Gruß wulfskin!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Di 22.04.03 08:34
hey danke. Das ist cool 
|
|
ErnestoChe
      
Beiträge: 528
Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
|
Verfasst: Di 22.04.03 09:43
Hi,
ich hab auch so ein ähnliches Programm geschrieben und benutzte dabei eine ähnliche CallBack-Klasse wie im obigen Beispiel mit dem Unterschied, dass bei mir die OnProgress-Methode eine Möglichkeit zum Abbruch bietet:
Quelltext 1: 2: 3: 4: 5: 6: 7:
| abbruch: Boolean = False; // globale Variable
if (abbruch = True) then begin Result := E_ABORT; exit; end; |
Diese Abfrage einfach in die OnProgress-Methode einfügen.
MFG
- Ernesto -
|
|
ShadowCaster 
      
Beiträge: 312
|
Verfasst: Di 22.04.03 09:44
ich habs schon gesehen, in dem Thread vom oberen Beispiel ist auch ein Beitrag drinnen wie das mit onprogress geht, denke ich  Aber dennoch danke.
|
|