try
try
... ... ...
except
result:=false;
end
finally
if assigned(hfile) then InternetCloseHandle(hfile);
if assigned(hsession) then InternetCloseHandle(hsession);
end;
Das würde ich auch gerne wissen warum. Ist für mich völlig unlogisch.
Bei mir lauft diese Routine in einer Klasse, und es liegt mir nahe, alle Objekte nach getaner Arbeit wieder zurückzusetzen. Der Fehler muss an dieser Routine liegen, da alle anderen Funktionen, die in der Klasse sind erst nachher zum Zug kommen. Und der Fehler entsteht immer erst dann, wenn ich diese Routine verlasse.
Das ganze Projekt besteht mitlerweile aus ca. 10 Units mit je etwa 4000 Programmzeilen. Das sollte für Lazarus doch kein Problem sein.
Nun so funktioniert es jetzt, und somit ist es für mich in Ordnung. Ist aber trotzdem komisch.
10 Units mit je 4000 Zeilen sind kein Problem. Ich habe ein Projekt mit 50 Units und eine Datei davon hat sogar über 50000 Zeilen. Dazu kommen noch die vielen 100000 Zeilen von Lazarus selbst.
var iNFile:tIFile;
sText:string;
begin
try
iNFile:=tIFile.Create;
sText:=iNFile.ReadFile('www.irgendwo.com/einefile.html');
if sText<>'nil' then
begin
{... ... ...}
end;
finally
FreeAndNil(iNFile);
end;
function tIFile.ReadFile(const url: string): string;
var sl:tStringList;
begin
try
result:='nil';
sl:=tStringList.Create;
if CheckUrl(url) then
if httpGetText(url,sl) then
if sl.Count>0 then result:=sl.text;
finally
FreeAndNil(sl);
end;
end;