An der Zeit liegt's doch nicht. Habe probeweise ein Variable working (Boolean) eingefügt. Die war auf True solange die Internettime abgefragt wird und am Ende der Procedure wurde sie wieder auf false gesetzt.
Am Anfang der Function GetINetTime wurde nun diese Variable abgefragt. Bei working=true -> exit. Das half aber auch nichts
Danach hab ich dein Programm nochmal durch den Debugger gejagt
Delphi-Quellcode:
if(s <> INVALID_SOCKET) and (hostent <> nil) then
begin
ZeroMemory(@saddr,sizeof(TSockAddr));
saddr.sin_addr.S_addr := integer(pointer(hostent^.h_addr_list^)^);
saddr.sin_family := PF_INET;
saddr.sin_port := htons(37);
res := connect(s,saddr,sizeof(TSockAddr));
if(res <> SOCKET_ERROR) then
res := recv(s,i,sizeof(i),0);
Bei der letzten Codezeile bleibt das Programm hängen. Nie beim ersten Mal!!(?Warum?) Aber auch nicht immer beim zweiten Mal. War unterschiedlich.
Kannst du da nicht eine Art Timeout einfügen (eine Sekunde auf Antwort warten, ansonsten Fehler - nächster Versuch beim nächsten Timer Ereignis)?
MfG Hitzi