Moin Luckie,
das mit dem PChar ist einfach die Macht der Gewohnheit
Bei mir würde es so aussehen:
Code:
type
TcsInternetGetLastResponseInfo = function(lpdwError : PDWORD;lpszBuffer : PChar;lpdwBufferLength : PDWORD) : Boolean; stdcall;
var
InternetGetLastResponseInfo : TcsInternetGetLastResponseInfo;
implementation
var
hWininetDLL : DWORD;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
dwError : DWord;
szBuffer : PChar;
dwSize : DWord;
begin
dwSize := 0;
szBuffer := nil;
InternetGetLastResponseInfo(@dwError,szBuffer,@dwSize);
szBuffer := StrAlloc(dwSize);
try
if not InternetGetLastResponseInfo(@dwError, szBuffer, @dwSize) then
begin
ShowMessage(SysErrorMessage(GetLastError));
end
else
begin
ShowMessage(trim(szBuffer));
end;
finally
StrDispose(szBuffer);
end;
end;
initialization
begin
hWininetDLL := LoadLibrary('WININET.DLL');
if hWininetDLL <> 0 then
begin
@InternetGetLastResponseInfo := GetProcAddress(hWininetDLL,'InternetGetLastResponseInfoA');
if @InternetGetLastResponseInfo = nil then
begin
ShowMessage('InternetGetLastResponseInfo');
end;
end;
end;
finalization
begin
if hWininetDLL <> 0 then
begin
FreeLibrary(hWininetDLL);
end;
end;
Da wahrscheinlich eine ganze Menge drumherum fehlt, kommt bei mir immer 0, und kein Text
Den zweimaligen Aufruf mache ich, um die Buffergrösse zu ermitteln. Die Methode funkioniert ja bei vielen Funktionen, und es erspart einem den Test ob der Buffer gereicht hat.