Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi GetComputerName Delphi 2009 (https://www.delphipraxis.net/135147-getcomputername-delphi-2009-a.html)

D0N 5. Jun 2009 14:37


GetComputerName Delphi 2009
 
Hallo

ich hab ne frage...

ich hab in der Code Library

diese Funktion gefunden

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(IPAddr);
  HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    Result := StrPas(Hostent^.h_name)
  else
    Result := '';
end;
nun wollte ich es mit Delphi 2009 compilieren nun zeigt er mir an

Delphi-Quellcode:
[DCC Fehler] Multi5.pas(73): E2010 Inkompatible Typen: 'Char' und 'AnsiChar'
ich kenn mich noch net so gut aus mit Delphi 2009 daher weiß ich nicht was ich tun muss vllt willst ihr ja wie ich es zum laufen bekomme

mfg

Achim Kalwa 5. Jun 2009 15:01

Re: GetComputerName Delphi 2009
 
Hallo,

Zitat:

Zitat von D0N
nun wollte ich es mit Delphi 2009 compilieren nun zeigt er mir an

Delphi-Quellcode:
[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

D0N 5. Jun 2009 15:15

Re: GetComputerName Delphi 2009
 
Cool funktioniert.

danke

:-D

nur ne kurze frage noch was benutz ich am besten um ne exe auszuführen.

auch mit parametern

z.b. kann man ja vnc.exe mit der ip hintendran ausführen dann muss man nurnoch (falls vorhanden) das Passwort angeben.

ich hab mal irgendwo WinExec gelesen

und auch irgendwas mit ShellExecute


was benutz ich am besten?

Bernhard Geyer 5. Jun 2009 15:16

Re: GetComputerName Delphi 2009
 
WinExec ist veraltet (Win16-Zeiten). ShellExecute ist oft die beste Methode. Ab und Zu auch CreateProcess. Beispiele findest du genügend im Forum.

D0N 5. Jun 2009 23:58

Re: GetComputerName Delphi 2009
 
okay danke :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz