Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln ? (https://www.delphipraxis.net/68560-gibt-es-eine-moeglichkeit-ips-eine-zahl-zu-verwandeln.html)

pacman1986 1. Mai 2006 18:19


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 ?

SirThornberry 1. Mai 2006 18:23

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)

Flo85 1. Mai 2006 18:25

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

SirThornberry 1. Mai 2006 18:29

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.

pacman1986 1. Mai 2006 18:33

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 ^^

Hawkeye219 1. Mai 2006 18:37

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:
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;
Gruß Hawkeye

marabu 1. Mai 2006 18:46

Re: Gibt es eine Möglichkeit IPs in eine zahl zu verwandeln
 
Hier noch eine Diskussion zum Thema: klick

Grüße vom marabu

pacman1986 1. Mai 2006 19:08

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:
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;
ps : es funzt ^^

SirThornberry 1. Mai 2006 19:13

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.

pacman1986 1. Mai 2006 19:19

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