Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Вниз

GetUrlCacheEntryInfo   Найти похожие ветки 

 
Schummi   (2003-07-02 08:13) [0]

Мастаки! Ища информацию, наткнулся на вот этот файлик в сети http://www.kemsu.ru/Collection/ActiveX/sweep/sweep061.htm Вот я и стал бомбить:

var
E:Integer;
B:DWORD;
I:TInternetCacheEntryInfo;
p:pansichar;
l:bool;
begin
New(p);
p:=" http://delphimaster.net/view/14-1055599349/";
l:=GetUrlCacheEntryInfo(@p,I,b);
if not l then
begin
E:=GetLastError;
ShowMessage(SysErrorMessage(E));
end
else ShowMessage("ura!");
Dispose(p);


p - пробовал и полный путь к файлу и просто имя фийла. В любом случае выдаёт ошибку: Параматр задан неверно.

Поможите, плз!!!


 
Schummi   (2003-07-04 15:41) [1]

Опять играем в молчанки???


 
Schummi   (2003-07-06 19:59) [2]

Вот Вы скажите, почему Вы так? Бойкот тут устроили?


 
Ihor Osov'yak   (2003-07-06 20:19) [3]

Так в чем вопрос то? Раз говорит что неверно, значит неверно.

Это во первых. А во вторых - New(p); и Dispose(p); совершено лишние.

А в третих, если говорит, что параметр задан неверно - то нужно в TFM, который Read рекромендуется все же посмотреть. А там написано:

BOOL GetUrlCacheEntryInfo(
IN LPCTSTR lpszUrlName,
IN LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
IN OUT LPDWORD lpdwCacheEntryInfoBufferSize
);

The actual syntax of this function varies between its ANSI and Unicode implementations. For more information, see Win32 Internet Functions Syntax.

Parameters

lpszUrlName
Address of a string that contains the name of the cache entry. The name string should not contain any escape characters.

То есть ожидает "the name of the cache entry" что несколько отлично от URL.



 
Набережных С.   (2003-07-06 20:28) [4]

var
B:DWORD;
I:PInternetCacheEntryInfo;
s: string;
begin
s:=" http://delphimaster.net/view/14-1055599349/";
b:=0; I:=nil;
if
(not GetUrlCacheEntryInfo(@s[1],I^,b)) and
(GetLastError = ERROR_INSUFFICIENT_BUFFER)
then
begin
GetMem(I, B);
try
if not GetUrlCacheEntryInfo(PChar(s),I^,b) then
ShowMessage(SysErrorMessage(GetLastError))
else
ShowMessage("ura!");
finally
FreeMem(I);
end;
end;
end;


 
Ihor Osov'yak   (2003-07-06 21:05) [5]


Да, по поводу
> "the name of the cache entry" что несколько отлично от URL.

я был несколько неправ, вернее совсем не прав..

Единственное, что посмею уточнить - обработка случая, если соотв. вещи нет в кеше:


procedure pp;

var
B:DWORD;
I:PInternetCacheEntryInfo;
s: string;
begin
s:=" http://delphimaster.net/view/14-1055599349/";
b:=0; I:=nil;
if
(not GetUrlCacheEntryInfo({@s[1]}PChar(s),I^,b)) and
(GetLastError = ERROR_INSUFFICIENT_BUFFER)
then
begin
GetMem(I, B);
try
if not GetUrlCacheEntryInfo(PChar(s),I^,b) then
ShowMessage(SysErrorMessage(GetLastError))
else
ShowMessage(I^.lpszLocalFileName);
finally
FreeMem(I);
end;
end
else ShowMessage("not present in cashe");

end;


 
Набережных С.   (2003-07-06 21:21) [6]

>Ihor Osov"yak © (06.07.03 21:05)

Тогда уж
else ShowMessage(SysErrorMessage(GetLastError));
:)))
Да и требуемый размер между вызовами GetUrlCacheEntryInfo, в принципе, может измениться


 
Ihor Osov'yak   (2003-07-06 21:28) [7]

> Да и требуемый размер между вызовами GetUrlCacheEntryInfo, в принципе, может измениться

Интересное замечание.. Что интересно, никогда об этом не задумывался :-(.. Не для GetUrlCacheEntryInfo, а вообще для аналогичной техники работы с буферами для возврата значений.. Нужно будет иметь ввиду.. Вполне может быть ситуация, что для определенных вызовов это будет актуально.. Хотя с ходу и не могу сообразить, где вероятность нарваться на это есть такой, что ее реально нужно учитывать.. Но за подсказку спасибо..


 
Schummi   (2003-07-19 09:50) [8]

Народ!!! Ура!!! Я и сам разобрался.
Вот:

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, WinInet;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function GetUrlCacheEntryInfo(lpszUrlName: PChar; lpCacheEntryInfo: PInternetCacheEntryInfo; var lpdwCacheEntryInfoBufferSize: DWORD): BOOL; stdcall;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
winetdll = "wininet.dll";

function GetUrlCacheEntryInfo; external winetdll name "GetUrlCacheEntryInfoA";

function FileTimeToDt(Ft: TFileTime): string;
var
l: Integer;
lft: TFileTime;
begin
FileTimeToLocalFiletime(Ft, lft);
if FileTimeToDosDateTime(lft, Longrec(l).Hi, Longrec(l).Lo) then
result := DateTimeToStr(FiledateToDatetime(l)) else
result := "";
end;

procedure TForm1.Button1Click(Sender: TObject);
var
B,size,ii:cardinal;
I:PInternetCacheEntryInfo;
St:String;
l:bool;
header:pbyte;
s:string;//array of byte;
// aa:array[1..1000] of byte;
begin
b:=0;
st:=Edit1.Text;
GetUrlCacheEntryInfo(PChar(st),nil,b);
if (b<>0) then
begin
GetMem(I,b);
l:=GetUrlCacheEntryInfo(PChar(st),I,b);
if l then
begin
//ShowMessage(IntToSTr(b));
Label1.Caption := "Last time accessed: " + FileTimeToDt(I^.LastAccessTime);
Label2.Caption := "Last time syncronized: " + FileTimeToDt(I^.LastSyncTime);
Label3.Caption := "LocalFileName: "" + I^.lpszLocalFileName+""";

size:=I^.dwHeaderInfoSize;
showmessage(IntToStr(size));
setlength(s,size);
move(header,s[1],size);
for ii:=1 to size do
memo1.Lines.Strings[0]:=memo1.Lines.Strings[0]+IntToHex(ord(s[ii]),2)+" ";
//label4.Caption:=s;
{aa:=I^.lpHeaderInfo;
ShowMessage(IntToStr(I^.CacheEntryType));}

end;
FreeMem(I,b);
end
else showmessage("netu!!!");
end;

end.


Но дальше идет такая вещь: в строке s всякий бред! И что это вообще за заголовок такой?


 
Schummi   (2003-07-19 09:54) [9]

Просто я сначала стал искать в Инете, но ничего не нашел! Потом задал вопрос на форум, но за долгим ожиданием ответа, пришлось снова залезть и тогда нашел ответ.


 
Набережных С.   (2003-07-19 14:23) [10]

>Schummi © (19.07.03 09:50)
>Народ!!! Ура!!! Я и сам разобрался.

Молодец, так держать!


 
Schummi   (2003-07-25 08:47) [11]


>
> Набережных С. © (19.07.03 14:23)
> >Schummi © (19.07.03 09:50)
> >Народ!!! Ура!!! Я и сам разобрался.
>
> Молодец, так держать!

Ну, оваций не надо!



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

Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
1-33095
Alex-21
2003-07-28 21:30
2003.08.11
Два окна


3-33067
Relaxxx
2003-07-18 16:04
2003.08.11
Вычисляемое поле


1-33158
Relaxxx
2003-07-28 11:43
2003.08.11
Как мне узнать какого числа в указаном месяце выходные (т.е. суб)


3-33063
VS
2003-07-17 16:47
2003.08.11
Изменение записи


14-33319
Schummi
2003-07-02 08:13
2003.08.11
GetUrlCacheEntryInfo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский