Durch das Free ist IdHTTP1 ja gar nicht mehr existent, daher muss ja jeder weitere Zugriff scheitern. Hast Du evtl. Code ausgelassen, ich kann mir nicht vorstellen, dass Achim so ein Klopper passiert sein soll?
[edit] Du kannst es aber auch mal so versuchen (ohne
Indy):
Delphi-Quellcode:
uses WinInet;
function IsUrlValid(const sUrl: string; CheckTimeout: DWORD = 3000): Boolean;
var
hInet, hConnect: HINTERNET;
StatusCode, dummy, bufLen, Option: DWORD;
begin
Result := False;
hInet := InternetOpen(PChar(Application.Title),
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0);
if Assigned(hInet) then
try
Option := CheckTimeout;
InternetSetOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, @Option,
SizeOf(Option));
InternetSetOption(hInet, INTERNET_OPTION_RECEIVE_TIMEOUT, @Option,
SizeOf(Option));
hConnect := InternetOpenUrl(hInet, PChar(trim(sUrl)), nil, 0,
INTERNET_FLAG_NO_UI, 0);
if Assigned(hConnect) then
try
dummy := 0;
bufLen := SizeOf(StatusCode);
if HttpQueryInfo(hConnect, HTTP_QUERY_STATUS_CODE or
HTTP_QUERY_FLAG_NUMBER, @StatusCode, bufLen, dummy) then
Result := StatusCode = HTTP_STATUS_OK;
finally
InternetCloseHandle(hConnect);
end;
finally
InternetCloseHandle(hInet);
end;
end;
Das setzt zwar einen installierten InternetExplorer voraus, aber davon kann man wohl ausgehen.[/edit]