Co zrobić aby po kolejnym użyciu urldownloadtofile....w tej samej sesji
programu ściągany plik był aktualizowany?
Do tej pory mam problem bo powtarzana co 30 min operacja ściągania pliku
jest wykonywana ale zapisywany jest zawsze ten sam plik co był ściągany jako
pierwszy(ściągam jpg)..
innymi słowy aktalizacja nie nastepuje. - tak jakby komputer pamiętał to co
ściągnał z danego adresu i więcej się nie trudził. Uruchomienie programu
ponownie uaktualnia ściągany plik- ale przecież nie mogę tylko po to zamykać
i uruchamiać programu aby uaktualnić plik.
Czy istnieje jakiś rozkaz do skasowania tej podręcznej pamięci ściąganych
plików przez urldownloadtofile? lub inny sposób by poniższa procedura za
każdym razem wywołania ściągała nowy plik?
oto proc. która tylko raz ściąga plik- potem zapis następuje z jakiejś
pamięci.. zamiast z podanego adresu.
if
(urldownloadtofile(nil,'http://www.infomet.fcr.es/meteosat/ir-latest.jpg',
'c:\pogoda.jpg',0,nil)<>0) then goto koniec;
Bardzo proszę o pomoc jestem początkujący więc jeśli jakieś makabryczne byki
porobiłem to z góry przepraszam.
Krzysiek
Polecam do tego celu prosty komponencik HTTPGet. Do pobrania z:
http://www.utilmind.com/delphi/httpget.zip Demko:
http://www.utilmind.com/delphi/exe-demo/HTTPGetDemo.exe
Ma mozliwosc cache'owania pobranego pliku lub nie.
Krotki opis niektorych detali:
Properties:
FileName: String - ścieżka do lokalnego pliku w którym
zapisany będzie na dysku ściągany plik.
Password, UserName - ustawić ,jeśli chcesz pobierać dane
z katalogu zabezpieczonego hasłem.
URL: String - adres internetowy do sciąganego pliku
UseCache: Boolean - jeśli ustawione na True,pobierze ściągany
plik z Temporary Internet Files (jeśli juz tam jest),
jesli
False,to pobiera z netu zawsze swiezy plik.
Sam sprawdzalem.
Methods:
GetFile - pobiera plik z internetu i zapisuje go pod
nazwą FileName
GetString - rozpoczyna pobieranie danej z internetu i zwraca
ją jako String. String otrzymasz po wywołaniu
zdarzenia OnDoneString jako Result funkcji.
Abort - zatrzymuje ściąganie
Events:
OnDoneFile - występuje,gdy plik się ściągnął
OnDoneString - występuje gdy łańcuch się ściągnał
OnError - występuje,gdy pojawi się jakiś błąd
OnProgress - występuje,gdy ściąga się BINARY DATA,można
wykorzystać do ProgressBar-a
Pzdr.
Marek
> if
> (urldownloadtofile(nil,'http://www.infomet.fcr.es/meteosat/ir-latest.jpg',
> 'c:\pogoda.jpg',0,nil)<>0) then goto koniec;
Hej,
gdzies/kiedysz czytalem ze jest nieopublikowany parameter - to zero, co
wstawiasz,
i jedna wartosc [1 ?] moze byc taka, zeby nie czytal z cache....
byc moze jest to zeby nie zapisywal do cache - teraz juz nie wiem...
i nie moge tego naraze odnalezc.... jeszcze poszukam..
DWORD dwReserved,
pozdrawiam,
slava
--
Květoslav Jansta
LCS International, a.s.
KJ(_at_at).Lcs.cz , http://www.Lcs.cz,
icq : 51076087
> > "krzysiek" <las...@wp.pl> wrote in message
news:bsk2cs$l7r$1...@nemesis.news.tpi.pl...
> >
(urldownloadtofile(nil,'http://www.infomet.fcr.es/meteosat/ir-latest.jpg',
> > 'c:\pogoda.jpg',0,nil)<>0)
> i jedna wartosc [1 ?] moze byc taka, zeby nie czytal z cache....
> byc moze jest to zeby nie zapisywal do cache - teraz juz nie wiem...
> i nie moge tego naraze odnalezc.... jeszcze poszukam..
OR :
3. příspěvek ve větvi
Od:Randy Birch (rgb_rem...@mvps.org)
Předmět:Re: URLDownloadToFile reads cached version on second attempt
View this article only
Newsgroups:microsoft.public.vb.winapi
Datum:2003-10-22 19:54:24 PST
Someone mentioned setting the reserved parameter in the API call to 2
prevented this. Give that a try.
-----
slava
interface
uses
Classes, UrlMon, ExtActns;
type
TDownloader = class(TDownLoadURL)
protected
function GetBindInfo(out grfBINDF: Cardinal;
var bindinfo: _tagBINDINFO): HRESULT; reintroduce; stdcall;
end;
implementation
{ TDownloader }
function TDownloader.GetBindInfo(out grfBINDF: Cardinal;
var bindinfo: _tagBINDINFO): HRESULT;
begin
grfBINDF := BINDF_ASYNCHRONOUS or BINDF_ASYNCSTORAGE or
BINDF_DONTUSECACHE or BINDF_NOWRITECACHE or BINDF_PRAGMA_NO_CACHE;
Result := E_NOTIMPL;
end;
end.
</code>
... a potem używac tego:
<code>
procedure TForm1.DownloadProgressHTML(Sender: TDownLoadURL; Progress,
ProgressMax: Cardinal; StatusCode: TURLDownloadStatus;
StatusText: String; var Cancel: Boolean);
begin
case StatusCode of
dsFindingResource, dsConnecting:
begin
ProgressBar1.Visible := True;
lblInfo1.Visible := True;
end;
dsBeginDownloadData:
begin
ProgressBar1.Max := ProgressMax;
ProgressBar1.Position := Progress;
end;
dsDownloadingData:
begin
ProgressBar1.Position := Progress;
lblInfo1.Caption := format('Pobieranie... %d z %d kB', [Progress div
1000, ProgressMax div 1000]);
end;
dsEndDownloadData:
begin
BitmapProgressBar1.Visible := False;
lblInfo1.Visible := False;
end;
end;
Application.ProcessMessages;
end;
// tutaj caly kod
durl := TDownloader.Create(self);
try
durl.URL := http://www.kokoloko.pl/source.zip';
durl.Filename := 'C:\target.zip';
durl.OnDownloadProgress := DownloadProgressCallback;
durl.ExecuteTarget(nil);
finally
durl.Free;
end;
</code>
prawda że proste?
pozdrawiam serdecznie...
-----------
Andrzej Wąsik
> prawda że proste?
Jeszcze nie. ;-)
Będzie proste, kiedy wrzucisz mi na priv
TDownLoadURL. Na pewno do piątki nie ma.
Pozdrawiam
Tocbac.
> > prawda że proste?
> Będzie proste, kiedy wrzucisz mi na priv
> TDownLoadURL. Na pewno do piątki nie ma.
no, jakosz w D5Ent tego tez nie widze :o(
A jak to tam jest konkretno zrobione ?
albo podeszlij mi na priv tez....
thx.,
slava
-----------
Andrzej Wąsik
no, miej wiecej tak mam moj kod napisany w D5 :o)
ExtActns.pas jest chyba az od Delphi 6...
hm... znow widze, ze nie ma poco przejsc z D5 dalej :o(
,bo jest tam kod, ktory juz dawno mam, tak samo jak bylo z XMLDOM.
aha, tak to calkowicie przegapilem, ze v UrlMon jest jeszcze :
BINDF_PRAGMA_NO_CACHE = $00002000;
zawsze uzywalem tylko :
BINDF_NOWRITECACHE = $00000020;
i w tym bedzie zakopany pies.
ok, dzienki za wskazanie nowego flag-a :o),
btw. tutaj jest caly opis BINDF
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guide_ppc/htm/urlmon3_lkss.asp
pozdrawiam,
slava
--
Květoslav Jansta
LCS International, a.s.
KJ(at_at).Lcs.cz , http://www.Lcs.cz,
icq : 51076087