Autor Beitrag
ShadowCaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: 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
ausblenden Quelltext
1:
Application.ProgressMessages;					

ausführt, sozusagen ein AntoFreeze.
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Do 17.04.03 13:05 
Achso. Na dann...
Du könntest in den Indy-Units nachschaun, wie die das gemacht haben.
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Do 17.04.03 13:10 
Oha. OK. Hast mich geschlagen. Mehr kann ich dir nicht mmehr helfen, sorry.

:?
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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? :wink:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Do 17.04.03 15:26 
Achja... werde dann mal mein gehi... google einschalten :dance2:
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Di 22.04.03 08:34 
hey danke. Das ist cool :)
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: 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:


ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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.