Вниз
Скачать: CL | DM;

Открытие УРЛ и очистка кэша   Найти похожие ветки 

 
Lex_! ©   (2005-05-26 16:20) [0]

Имеется такой код:

Function Stat(url:string):String;
var
   lpEntryInfo : PInternetCacheEntryInfo;
   hCacheDir   : LongWord;
   dwEntrySize : LongWord;
   dwLastError : LongWord;

   vHttp: OleVariant;
   s:string;
begin
 try
   vHttp := CreateOleObject("MSXML2.XMLHTTP"); { Requires IE5 Microsoft.XMLHTTP}
   vHttp.open("GET", url, False, EmptyParam, EmptyParam);
   vHttp.send("");
   s:=vHttp.ResponseText;
   stat:=s;
   
   dwEntrySize := 0;
   FindFirstUrlCacheEntry( NIL, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );
   GetMem( lpEntryInfo, dwEntrySize );
   hCacheDir := FindFirstUrlCacheEntry( NIL, lpEntryInfo^, dwEntrySize );
   If ( hCacheDir <> 0 ) Then
       DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );
   FreeMem( lpEntryInfo );
   Repeat
       dwEntrySize := 0;
       FindNextUrlCacheEntry( hCacheDir, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );
       dwLastError := GetLastError();
       If ( GetLastError = ERROR_INSUFFICIENT_BUFFER ) Then Begin
           GetMem( lpEntryInfo, dwEntrySize );
           If ( FindNextUrlCacheEntry( hCacheDir, lpEntryInfo^, dwEntrySize ) ) Then
               DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );
           FreeMem(lpEntryInfo);
       End;
   Until ( dwLastError = ERROR_NO_MORE_ITEMS );

 except
   stat:="Ошибка";
 end;
end;

Очищается ВЕСЬ кэш, как можно сделать чтобы удалялся из кеша только URL а не всё что в нем есть?...
ЗЫ - заранее предвидя вопрос зачем оно надо: процедура используется в цикле, и если не очищаю кэш то повторное использование дет тот же результат что и первое ... (на повторяющихся УРЛах.)


 
Lex_! ©   (2005-05-27 06:31) [1]

:о\
мда...


 
Lex_! ©   (2005-05-27 10:41) [2]

Спасибо что откликнулись ...... :о\ ...
сделал так:

Function Stat(url:string):String;
var
   lpEntryInfo : PInternetCacheEntryInfo;
   hCacheDir   : LongWord;
   dwEntrySize : LongWord;
   dwLastError : LongWord;

   vHttp: OleVariant;
   s:string;
begin
 try
   vHttp := CreateOleObject("MSXML2.XMLHTTP"); { Requires IE5 Microsoft.XMLHTTP}
   vHttp.open("GET", url, False, EmptyParam, EmptyParam);
   vHttp.send("");
   s:=vHttp.ResponseText;
   stat:=s;

   dwEntrySize := 0;
   FindFirstUrlCacheEntry( NIL, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );
   GetMem( lpEntryInfo, dwEntrySize );
   hCacheDir := FindFirstUrlCacheEntry( NIL, lpEntryInfo^, dwEntrySize );
   If ( hCacheDir <> 0 ) Then
       if lpEntryInfo^.lpszSourceUrlName=url then
       DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );
   FreeMem( lpEntryInfo );
   Repeat
       dwEntrySize := 0;
       FindNextUrlCacheEntry( hCacheDir, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );
       dwLastError := GetLastError();
       If ( GetLastError = ERROR_INSUFFICIENT_BUFFER ) Then Begin
           GetMem( lpEntryInfo, dwEntrySize );
           If ( FindNextUrlCacheEntry( hCacheDir, lpEntryInfo^, dwEntrySize ) ) Then
               if lpEntryInfo^.lpszSourceUrlName=url then
               DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );
           FreeMem(lpEntryInfo);
       End;
   Until ( dwLastError = ERROR_NO_MORE_ITEMS );

 except
   stat:="Ошибка";
 end;
end;


вроде работает ....



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.047 c
2-1123688945
pasha_golub
2005-08-10 19:49
2005.09.18
FreePascal


14-1124728464
programania
2005-08-22 20:34
2005.09.18
Броузер для экономии трафика


2-1123680070
Radgar
2005-08-10 17:21
2005.09.18
TChart


1-1125065257
Fostr
2005-08-26 18:07
2005.09.18
Просмотр изображений в TImage


6-1117434978
silvestr
2005-05-30 10:36
2005.09.18
Как изменить программно основной шлюз и DNS в настройках




   Наверх