![]() |
Ältere Funktion mit inkompatiblen Typen PAnsiChar
Ich habe folgende Funktion zum ermitteln der Lokalen IP Adresse ausgegraben:
Delphi-Quellcode:
Ich weiß nicht genau welchen Datentyp Buffer annehmen muss damit die Funktionalität erhalten bleibt... Ich wollte aus Buffer einen PAnsiChar machen aber dann wird phe = nil durch die fehlgeschlagene GetHostByName Funktion... (Welche ja auch schon veraltet ist)
function GetLocalIP: Integer;
type PaPInAddr = ^TaPInAddr; TaPInAddr = array[0..$FFFE] of PInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer : array[0..MAXGETHOSTSTRUCT - 1] of Char; I: Integer; begin Result := -1; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(Buffer); if phe = nil then Exit; pptr := PaPInAddr(Phe^.h_addr_list); I := 0; while pptr^[I] <> nil do begin Result := pptr^[I]^.S_addr; Inc(I); end; end; |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Bei mir schaut es wie folgt aus:
Delphi-Quellcode:
Der Code für das Auslesen der IP-Adressen ist nicht von mit und ich weiß auch leider nicht mehr woher ich ihn habe. Habe ihn gerade auch abgetippt, von dem her hoffe ich mal, dass alles korrekt und vollständig ist.
function GetComputerName(): string;
var Size: DWORD; begin Size := MAX_COMPUTERNAME_LENGTH + 1; SetLength(Result, Size); if (not Winapi.Windows.GetComputerName(PChar(Result), Size)) then RaiseLastOSError(); SetLength(Result, lstrlen(PChar(Result)); end; function GetIpAddresses(): TArray<string>; const PPInAddr = ^PInAddr; var wsaData: TWSAData; HostInfo : PHostEnt; HostName : Array[0..255] of AnsiChar; Addr: PPInAddr; n : Integer; begin SetLength(Result, 0); if (WSAStartup($0101, wsaData) = 0) then begin try HostName := ''; if (Winapi.Winsock.GetHostName(@HostName, SizeOf(HostName)) = 0) then begin HostInfo := GetHostByName(@HostName); if (Assigned(HostInfo)) then begin Addr := Pointer(HostInfo^.h_addr_list); if (Assigned(Addr)) and (Assigned(Addr^)) then begin n := 0; while (Addr^ <> nil) do begin Inc(Addr); Inc(n); end; Addr := Pointer(HostInfo^.h_addr_list); SetLength(Result, n); n := 0; while (Addr^ <> nil) do begin Result[n] := string(inet_ntoa(Addr^^)); Inc(n); Inc(Addr); end; end; end; end; finally WSACleanup(); end; end; end; |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Wieso willst Du jetzt aus dem Buffer ein Pointer Array machen.
Denn pAnsiChar ist ein Pointer. Versuche char mal durch ansiChar zu ersetzen. Grüße Klaus |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Zitat:
Zitat:
Es gibt nicht umsonst die Abschnitte "Return value" und "Remarks". |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Zitat:
Ich habe hier eine ältere ICQ lib gezogen weil Ich versuchen wollte die pas files mit IntraWeb zu benutzen (hat mich intressiert) : ![]() Leider verbindet die DemoAnwendung welche mit dabei ist trotzdem nicht. Naja... Dann mach Ichs mit meinem eigenen kleinen Chat tool, jedenfalls wüsste Ich jetzt nicht wo Ich in den paar tausend Zeilen nen Fehler finden sollte zumal ich mich überhaupt nicht mit der API auskenne oder sonderlich viel Zeit aufbringen mag. Hat jemand von euch ansonsten ne funktionierende Demo dafür? Vielen Dank auch an shark, Grüße |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Die alte Lib, mit einem alten Delphi (bis D2007) compiliert, funktioniert?
ICQ und Co. ändern abundzu mal ihre Protokolle, weswegen die Libs abundzu auch mal angepaßt werden müßten. |
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Ja die lib funktioniert. In Xe2 läuft alles und die Demo startet ohne Fehler. Ich habe ca 30 Warnungen und wenn Ich mit meiner ID verbinde kommt keine Fehlermeldung oder sonstiges sondern als Status: Verbindung fehlgeschlagen. Den Server habe Ich auch 1-2 mal gewechselt ohne Erfolg. Ich glaube nicht das sich am grundsätzlichen Protokoll (OSCAR) viel ändert. Die erweiterten ICQ Funktionen brauche Ich eh nicht... leider ist das ICQ Thema auch scheinbar schon etwas länger vom Tisch.
|
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Zitat:
Zitat:
Zitat:
|
AW: Ältere Funktion mit inkompatiblen Typen PAnsiChar
Okay alles klar! Ich hab doch wirklich gedacht, dass das MSDN mit in der Delphi-Hilfe verwurschtelt ist und browse grade ein bisschen durch die WebSite. Ich werd das Gefühl nicht los das mich Himitsu jetzt für blöd hält :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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