Entwickler-Ecke
Internet / Netzwerk - download
palama - Do 25.07.02 16:27
Titel: download
habe folgenden code:
Quelltext
1: 2: 3: 4: 5:
| uses urlmon;
lauf:=lauf+1; temp:='d:\webcam\fullsize'+inttostr(lauf)+'.jpg'; UrlDownloadToFile(nil, 'http://webcam.wippermann.de/fullsize.jpg', pChar(temp), 0, nil); |
das prog soll mittels timer immer wieder ein bild speichen. dieses jpg ändert sich aber von sekunde zu sekunde (webcam - zu beobachten im web-browser/aktualisieren). es sollten also viele verschiedene bilder entstehen!
es wird allerdings immer nur ganz oft das bild gespeichert, welches zu der zeit des programmstarts gehört. :(
was mache ich falsch?
cu euer palama
hitstec - Do 25.07.02 18:15
Hi,
kannst du deine Frage noch ein bißchen näher erleutern vielleicht mit mehr Quelltext.
Ich kann es nicht ganz nachvollziehen. :?
Ex0rzist - Do 25.07.02 23:38
Mit diesem Schnipsel Quelltext ist alles in Ordnung.
Was interessant ist, ist die OnTimerProzedur.
Kann es vielleicht sein, dass du nicht den aktualisierten Dateinamen verwendest?
Gruß,
Ex0rzist
M4EiB - Fr 26.07.02 02:41
*vermutung an*
ich benutzt urlmon zwar nicht aber, aber die proceduren werden ja auch vom internet-exploerer beuntzt.
es könnte ja sein das er das bild dann immer aus dem cache von der festplatte läd.
aber alles nur spekulation, habe keinen plan von urlmon.
*vermutung aus*
DeCodeGuru - Fr 26.07.02 10:33
Hi Leute,
@M4EiB: Deine Vermutung ist gar nicht so schlecht, weil man ja auch bemerkt, dass der Download von einer datei, die man zweimal am gleichen Tag, ohne dass ein Neustart erfolgte, beimzweiten mal wesentlich schneller war als zuvor. Soll heiße, dass die Datei eigentlich sofot da ist.
--> Die Datei liegt immer noch im Cache.
Man müsste also den Cache leeren, und die Datei dann runterladen. Ich werde mich mal in der Richtung auch ein bisschen umgucken.
Savage - Fr 26.07.02 11:48
Um das Cachen zu unterdrücken, könntest du auch direkt deinen Request mittels einer TClientsocket Kompo machen:
Du brauchst dazu "nur" unter Adresse die IP des Webservers oder eines Proxys anzugeben und den richtigen Port (ich glaube 80 oder 8080).
Wenn der TClientsocket dann richtig verbunden hat, sendest du einfach einen HTTP Request:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| if clientsocket1.Socket.Connected then begin clientsocket1.Socket.SendText('GET http://webcam.wippermann.de/fullsize.jpg HTTP/1.1'); clientsocket1.Socket.SendText('no-cache:'); //File nicht vom Cache holen clientsocket1.Socket.SendText(''); clientsocket1.Socket.SendText(''); //wichtig: 2 Leerzeilen senden. end; |
Danach wird dir vom Server wieder ein Header gesendet, danach eine Leerzeile und danch die Nutzlast - dein Picture, und wenn er fertig ist, wird die Connection wieder geschlossen. So zur theorie.
Näheres zum HTTP-Verkehr:
http://www.bolege.de/http-header/
Das wäre zumindest ein möglichkeit, es geht aber bestimmt auch noch anders.
Aber vieleicht konnte ich dir etwas helfen.
mfg
Savage
M4EiB - Fr 26.07.02 13:08
hi
probier es mal so: das idhttp ist der http cllient von indy, falls du das nicht hast, kannst du dir es hier downloaden:
http://www.nevrona.com/indy/
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var buffer:tfilestream; ... ... ... lauf:=lauf+1; buffer := tfilestream.create('d:\webcam\fullsize'+inttostr(lauf)+'.jpg',fmcreate,fmShareDenyNone); try idhttp1.Get('http://webcam.wippermann.de/fullsize.jpg',buffer); except end;
buffer.free; |
matze - So 29.09.02 15:44
nur nochmal zur sicherheit: damit wird jedes mal die Datei neu geladen ??? Ohne cache ??
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!