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...