Einzelnen Beitrag anzeigen

Achim Kalwa

Registriert seit: 2. Apr 2005
Ort: Lienen
110 Beiträge
 
Delphi 12 Athens
 
#2

Re: GetComputerName Delphi 2009

  Alt 5. Jun 2009, 16:01
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
Achim
  Mit Zitat antworten Zitat