Hallo,
Zitat von
D0N:
nun wollte ich es mit Delphi 2009 compilieren nun zeigt er mir an
[DCC Fehler] Multi5.pas(73): E2010 Inkompatible Typen: 'Char' und 'AnsiChar'
mfg
Das WinSock-
API ist nicht
Unicode-fähig und arbeitet intern mit AnsiChars. Ab Delphi 2009 ist "String" aber
Unicode. Die Funktion muss so angepasst werden, dass
Unicode-Strings rein und raus gehen, intern aber wieder auf AnsiString umgewandelt wird:
Delphi-Quellcode:
function GetComputerName(IPAddr:
String):
string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(AnsiString(IPAddr)));
// <-- IP-Addr nach AnsiString wandeln
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <>
nil then
Result :=
string(StrPas(Hostent^.h_name))
// <- Hostname nach String wandeln
else
Result := '
';
end;
Dieser Code funktioniert unverändert auch mit D2007.
HTH
Achim