Mój programik wykonuje dość dużo zapytań do serwera WWW (np. żeby potwierdzić, że jest online, co 5 sekund) i... na WinXP działa prawie zawsze, tylko czasami nie udaje mu się pobrać pliku (dlaczego?), za to na Win98 potrafi nie pobrać 10 plików z rzędu (tzn próbuje 10 razy ten sam plik pobrać i nic), chociaż problemów z netem nie ma :-|. Oba kompy są w tym samym LANie, więc różnica parametrów neta nie wchodzi w grę... Jedyne różnice to:
- Komp z Win98 ma świerzo zainstalowany system
- Win98 codzi na sporo słabszym kompie (650MHz, gdy XP na Ath3000+)
kod wygląda tak: może coś zepsułem?
function getweb(modul : string) : string;
var
output: string;
http : TIdHTTP;
src : TIdMultiPartFormDataStream;
i : integer;
done : boolean;
begin
Application.ProcessMessages;
loguja('Wykonuję komendę '+modul);
done := false;
i := 0;
while (i < webtries) and (not done) do
begin
Application.ProcessMessages;
inc(i);
output := 'BLAD';
http := TIdHTTP.Create(nil);
src := TIdMultiPartFormDataStream.Create;
try
src.AddFormField('modul', modul);
output := http.Post(siteurl, src);
loguja('Komenda '+modul+' wykonana, wynik: '+output);
src.Free;
http.Free;
done := true;
except
loguja('Komenda '+modul+' NIE wykonana!');
src.Free;
http.Free;
end;
Application.ProcessMessages;
sleep(chkdelay*100);
end;
result := output;
end;
a stałe tak:
webtries = 3;
siteurl = <adres_do_skryptu>;
chkdelay = 10;
błąd wygląda w ten sposób, że wywołuje się to co jest między except i end i powoduje to funkcja Post(), tyle że DLACZEGO?
Jeszcze jedno - na WinXP pomaga odczekanie 0,1s, a na Win98 jakichś 1-5 sekund...