Die Funktionen ergeben folgende GetLastError_Ergebnisse:
Delphi-Quelltext
1: 2: 3: 4: 5:
| res:=SendARP(dwremoteIP, 0, @pMacAddr, @PhyAddrLen); ShowMessage('GetLastError:'+IntToStr(GetLastError)+':'+SysErrorMessage(GetLastError));
RTT:=Ping.Execute(EditIP.Text, StrToInt(EditTimeout.text)); ShowMessage('GetLastError:'+IntToStr(GetLastError)+':'+SysErrorMessage(GetLastError)); |
Auf dem Entwicklungsrechner mit Windows 7 und IPHLPAPI.DLL vom 03.10.2003:
Mit GetLastError und WSAGetLastError gleich:
________________
res:=SendARP:
GetLastError=0=der Vorgang wurde erfolgreich beendet
res=1 (ERROR_INVALID_FUNCTION)
________________
RTT:=Ping.Execute:
RTT=-2 (Systemfehler)
das heißt in der unit ping:
ReplyCount:=IcmpSendEcho(bla..) gibt 0 zurück, also noReply und
GetLastError=1=unzulässige Funktion (ERROR_INVALID_FUNCTION))
________________
Auf dem Testrechner mit Windows XP funktionieren beide Funktionen problemlos!
Ping.Execute kümmert sich wenig um Timeout unter 1000ms, es dauert immer mindestens etwa 500ms.
"ZoneAlarm" ist komplett ausgestellt.
"arp -a" zeigt die korrekten IPs und MACs.
Was hat sich auf dem Windows7-PC verändert da das Ping.Execute einmal schon funktionierte?