Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Inkompatible Typen (https://www.delphipraxis.net/205086-inkompatible-typen.html)

lukdelphias 30. Jul 2020 08:20

Inkompatible Typen
 
Hallo liebes Forum,

ich habe hier aus dem Forum einen alten Quellcode ausgekramt.
Allerdings lääst diser sich in der heutigen Delphi-Version nicht mehr kompilieren. Ich weiß allerdings auch nicht an welchen Stellen ich hier etwas korrigieren muss um das ganze lauffähig zu bekommen.

Kann mir hier eventuell jemand helfen?

Hier der Code dazu:

Delphi-Quellcode:
function TFrmVTP.DetectHostIP: Boolean;
var
  wsdata: TWSAData;
  hostname: array[0..255] of char;
  hostEnt: PHostEnt;
  addr: PChar;
begin
  WSAStartup($0101,wsdata);
  try
    gethostname(hostname,sizeof(hostname));
    hostEnt := gethostbyname(hostname);
    if Assigned(hostEnt) then
      if Assigned(hostEnt^.h_addr_list) then
        begin
          addr := hostEnt^.h_addr_list^;
          if Assigned(addr) then
            begin
              HostIP := Format('%d.%d.%d.%d',[byte(addr[0]),byte(addr[1]),byte(addr[2]),byte(addr[3])]);
              Result := True;
            end
          else
            Result := False;
        end
      else
        Result := False
    else
      begin
        MessageDlg(Format('WinSock Error %d', [WSAGetLastError]),mtError,[mbOK],0);
        Result := False;
      end;
  finally
    WSACleanup;
  end;
end;
Und die Fehlermeldungen:
Delphi-Quellcode:
E2010 Inkompatible Typen: 'PAnsiChar' und 'array[0..255] of Char'
E2010 Inkompatible Typen: 'PAnsiChar' und 'array[0..255] of Char'
E2010 Inkompatible Typen: 'PWideChar' und 'PAnsiChar'
Die Fhler beziehen sich hier auf die Zeilen 10, 11 und 15.

Vielen Dank schon mal.
gruß

KodeZwerg 30. Jul 2020 08:25

AW: Inkompatible Typen
 
probiere mal
Delphi-Quellcode:
addr: PChar;
nach
Delphi-Quellcode:
addr: PAnsiChar;
umzubenennen. Klappts?

//edit vergessen:
Delphi-Quellcode:
hostname: array[0..255] of char;
->
Delphi-Quellcode:
hostname: array[0..255] of Ansichar;

lukdelphias 30. Jul 2020 08:33

AW: Inkompatible Typen
 
Funktioniert perfekt. Vielen Dank!:-D

KodeZwerg 30. Jul 2020 08:47

AW: Inkompatible Typen
 
Ist doch schön wenn's flutscht und gern geschehn (hatte schon angst das nun noch mehr fehler kommen wegen ansi)

KodeZwerg 30. Jul 2020 09:04

AW: Inkompatible Typen
 
Zusatz:
mit Delphi Rio würde ich es so in etwa machen:

Delphi-Quellcode:
uses IdStack;


//lokale
function GetIP : String;
begin
  TIdStack.IncUsage;
  try
    Result := GStack.LocalAddress;
  finally
    TIdStack.DecUsage;
  end;
end;


//vom host
function GetIP(const HostName: string): string;
var
  WSAData: TWSAData;
  R: PHostEnt;
  A: TInAddr;
begin
  Result := IPNULL; // '0.0.0.0'
  WSAStartup($101, WSAData);
  R := Winsock.GetHostByName(PAnsiChar(AnsiString(HostName)));
  if Assigned(R) then
  begin
    A := PInAddr(r^.h_Addr_List^)^;
    Result := WinSock.inet_ntoa(A);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

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