Форум: "Сети";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизОткрытие УРЛ и очистка кэша Найти похожие ветки
← →
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 вся ветка
Форум: "Сети";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c