UrlDownloadToFile ???

Delphi

24/08/2006

Estou utilizando a função UrlDownloadToFile, mas apos fazer o download do arquivo, quando tento baixar um novo aqruivo acaba baixando o anterio o mesmo . Provavelmente o arquivo fica preso no Cache, alguém sabe se tem como liberar, para que sempre que eu realizar o dowload ele baixe o arquivo novo e não o antigo.
Desde já agradeço.


Semchance

Semchance

Curtidas 0

Respostas

Marcelo_mileris

Marcelo_mileris

24/08/2006

Olá, eu passei por esse mesmo problema e uma solução que eu encontrei foi usar uma função para limpar o cache.

// Limpa cache do Internet Explorer
procedure DeletaIECache;
var
   lpEntryInfo: PInternetCacheEntryInfo;
   hCacheDir: LongWord;
   dwEntrySize: LongWord;
begin
   dwEntrySize := 0;
   FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize) ;
   GetMem(lpEntryInfo, dwEntrySize) ;
   if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
   hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize) ;
   if hCacheDir <> 0 then
   begin
     repeat
       DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName) ;
       FreeMem(lpEntryInfo, dwEntrySize) ;
       dwEntrySize := 0;
       FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize) ;
       GetMem(lpEntryInfo, dwEntrySize) ;
       if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
     until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize) ;
   end;
   FreeMem(lpEntryInfo, dwEntrySize) ;
   FindCloseUrlCache(hCacheDir) ;
end;


Ao terminar o Download eu chamo ela.


GOSTEI 0
Semchance

Semchance

24/08/2006

Valeu..... Marcelo vou fazer os testes...


GOSTEI 0
Emir Neto

Emir Neto

24/08/2006

Não sei se precisa declarar alguma unit no USES ou algo parecido, mas aqui não funcionou. Dá erro em trechos do código que não deixam nem sequer compilar. Se alguém souber como corrigira... agradeço.


GOSTEI 0
Vinicius Granada

Vinicius Granada

24/08/2006

Ola Emir Neto, a funcao do marcelo está funcionando bem, basta declarar a uses "wininet".
GOSTEI 0
POSTAR