![]() |
Number2IP
Hallo,
Ich habe eine Funktion geschrieben, die eine IP Adresse in eine Zahl verwandelt:
Delphi-Quellcode:
Num schaffe ich es aber nicht das Gegenstück zu diesem Code zu schreiben :oops: , also
uses StrUtils, Math;
function IP2Number(const sIP: String): Extended; var iPos, iPrevPos, iNumber, i: Integer; begin Result := 0; iPos := 0; iPrevPos := 0; for i := 1 to 4 do begin if i = 4 then iPos := Succ(Length(sIP)) else iPos := PosEx('.', sIP, Succ(iPos)); iNumber := StrToInt(Copy(sIP, Succ(iPrevPos), Pred(iPos - iPrevPos))); Result := ((iNumber Mod 256) * Power(256, (4 - i))) + Result; iPrevPos := iPos; end; end;
Delphi-Quellcode:
Es scheitert immer an der letzten Zahl.
function Number2IP(const eNumber: Extended): String;
begin end; Hoffe mir kann jemand helfen. Danke |
Re: Number2IP
Hi,
warum nimmst du extended als Zahlenformat und nicht Cardinal. Das würde nämlich genau passen und dann wird's auch einfach... Gruss |
Re: Number2IP
Zitat:
Inwiefern wirds dadurch einfacher? Einfach ist es bestimmt, ich komm nur nicht drauf. :gruebel: |
Re: Number2IP
Du brauchst doch Power nicht dazu....
Eine IP Adresse besteht aus 4 Zahlen im Bereich von 0..255 was also 4 byte entspricht. Passt also genau in einen Cardinal rein. Du hast ja schon in deiner ersten Funktion die Zahlen ermittelt. Durch geschicktes shiften kannst Du sie in ein Cardinal zusammenführen. Umgekehrt lassen sich die 4 byte aus einem Cardinal natürlich ganz einfach wieder herausholen. Die Zauberworte für diese Funktionen heissen SHL SHR AND und OR. Du wirst es schaffen :thumb: .... Gruss |
Re: Number2IP
Danke thkerkmann,
//edit Problem gelöst. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 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