![]() |
Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln ?
das ist auch schon meine frage gitb es eine möglichkeit IPs in eine zahl zu verwandeln ? wenn ja würde ich gern wissen wie es geht ?
|
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
die ip hat folgenden aufbau X.X.X.X
hierbei kann X maximal 255 sein. Also genau so groß wie ein Byte. Also kannst du eine IP auch mit 4 Byte darstellen. 4Byte = 32 Bit = Cardinal/Integer Du müsstest also die Werte welche mit Punkt getrennt sind in ein Byte wandeln (IntToStr) und dann auf einen Cardinal packen (move) |
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
ich hätte jetzt grob gesagt du enfernst die punkte und achtest drauf das die einstelligen abschnitte bzw zweistelligen abschnitte mit "00" bzw "0" anfangen
bei der zahl an erster stelle ist es egal |
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
eine variante wäre auch die einzelnen Zahlen welche durch Punkte getrennt sind in Hex zu wandeln (2 Stellig) und zu einer Zahl zusammenzufügen. Mit StrToInt wird dann daraus die Zahl mit der man rechnen kann.
|
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
Ehrlich gesagt irritiert mich das ganze ein bisse :gruebel:
ich werd mal ne meditations runde einlegen ^^ |
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
Ok, hier ist eine Quick&Dirty-Lösung. Sie funktioniert allerdings nur für korrekt aufgebaute IP-Adressen:
Delphi-Quellcode:
Gruß Hawkeye
function IPtoInt (aIP: string): Cardinal;
var b1, b2, b3, b4 : Byte; k : Integer; begin Val (aIP, b1, k); Delete (aIP, 1, k); Val (aIP, b2, k); Delete (aIP, 1, k); Val (aIP, b3, k); Delete (aIP, 1, k); Val (aIP, b4, k); Result := b1 * $1000000 + b2 * $10000 + b3 * $100 + b4; end; |
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
|
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
okay ich hab jetzt alle informationen die ich hab hier rein gepackt
IPTOINT:
Delphi-Quellcode:
ps : es funzt ^^
function IPtoInt(aIP: string): Cardinal;
var i,j : integer; Teil1,Teil2,Teil3,Teil4: String; begin j:=1; for i:=1 to Length(aip) do begin if aip[i]<>'.' then begin case j of 1: Teil1:=Teil1+aip[i]; 2: Teil2:=Teil2+aip[i]; 3: Teil3:=Teil3+aip[i]; 4: Teil4:=Teil4+aip[i]; end; end else Inc(j); end; Result := MAKELONG(MAKEWORD(StrToInt(Teil1), StrToInt(Teil2)),MAKEWORD(StrToInt(Teil3), StrToInt(Teil4))); end; |
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
es scheint als hättest du den Hinweis auf den anderen Beitrag von marabu überlesen denn dort gibt es den Hinnweis auf die Funktion "inet_addr" aus der Unit "winsock" welche genau das macht was du wolltest. Es wäre also mit einem einzigen Funktionsaufruf erledigt gewesen.
|
Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
:oops: habs net durchgelesen ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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