Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IPs aufteilen (https://www.delphipraxis.net/47083-ips-aufteilen.html)

BackOrifice 6. Jun 2005 15:58

Re: IPs aufteilen
 
Danke Schöööööön :dancer2:

BackOrifice 6. Jun 2005 18:05

Re: IPs aufteilen
 
Ich hab' nochmal ne Frage :D
Wollte dazu keinen neuen Thread aufmachen, weils relativ kleines Prob ist:

Ich habe 2 IP Adresse im Binären String; durch eine AND-Operation ergibt sich daraus eine neue (binäre) IP-Adresse.
Beide Adressen sind jeweils nur 32bit groß und trotzdem schmiert mir jedes mal das Programm ab ('111111111110100101010101010usw.. ist kein gültiger Integerwert').

Ich hab bereits schon INT64 versucht, bringt leider nichts :?

Hiermal n kleiner Ausschnitt ausm Quelltext (inzwischen so oft umgeändert..):
Code:
function Netzadresse (IP_adresse_bin, Netzmaske_bin : string) : string;
var Netz1,Netz3,Netz4 : int64;
     Netzadresse_2 : string;
begin
  Netz1:=0;     //<-- auch sehr lustig: Nach der Anweisung hat die Var immer noch einen Wert von -48546453
  Netz1:=StrToInt(IP_adresse_bin);    //<-- ab hier der Abbruch
  Netz3:=StrToInt(Netzmaske_bin);
  Netz4:=Netz1 and Netz3;
  Netzadresse_2:=IntToStr(Netz4);
  ShowMessage('Netzadresse: ' + Netz2);
  Netzadresse:=Netzadresse_2
end;
Jmd. ne Idee? :angel2:

Waldteufel 6. Jun 2005 18:12

Re: IPs aufteilen
 
Hi.

Du kannst nur Strings, die eine Zahl im Dezimalsystem beinhalten nach integer konvertieren. ;-)

BackOrifice 6. Jun 2005 18:17

Re: IPs aufteilen
 
Und nun? :wiejetzt:

Gibts ne Möglichkeit, diesen Umstand zu umgehen? Irgend nen Trick? ;)

Waldteufel 6. Jun 2005 18:21

Re: IPs aufteilen
 
Hi.

So müsste es gehen: (ungetestet)
Delphi-Quellcode:
function BinStrToInt(str : string) : integer;
var
  i : integer;
begin
  result := 0;
  for i := 1 to Length(str) do
    result := result + ( (Ord(str[i]) - Ord('0')) * Power(2, Length(str) - i) );
end;
Konvertiere die Zahlen einfach mit BinStrToInt(i) statt StrToInt(i) ;-)

Phistev 6. Jun 2005 18:23

Re: IPs aufteilen
 
Kleine Anmerkung am Rande: die Funktion kann weiterhelfen, wenn man weiß wie
Delphi-Quellcode:
var ip, temp TStringDynArray;
    suffix: string;
begin
  temp:= Explode('/',Adresse);
  suffix:= temp[1];
  ip:= Explode('.',temp[0]);
//Ip[0] bis ip[3] => die vier Blöcke
//suffix => der Teil nach dem Schrägstrich
Ein String aus dem Array kann man auch an Explode übergeben :mrgreen:

BackOrifice 6. Jun 2005 18:29

Re: IPs aufteilen
 
Danke danke - aber als was definierst du die Funktion "Power"? :angel:

//e: Thx Phistev, aber so kompiliziert wollt ichs nicht machen *g*

Waldteufel 6. Jun 2005 18:31

Re: IPs aufteilen
 
Hi.

Huppsala... :oops:
Delphi-Quellcode:
uses {...}, Math, {...};
fehlte noch... :oops:

BackOrifice 6. Jun 2005 18:42

Re: IPs aufteilen
 
narf, Inkompatible Typen: Integer und Extended :?
Und eine Funktion á la IntToExt hab ich leider auch nicht gefunden :cry:
Trotzdem danke nochma ;)

alcaeus 6. Jun 2005 19:06

Re: IPs aufteilen
 
Nun, da in diesem Fall sicher ein Integer rauskommt, kann man das Ergebnis von Power ganz einfach mit Delphi-Referenz durchsuchenTrunc in einen Integer verwandeln. Dabei werden alle Nachkommastellen abgeschnitten. Falls gerundet werden soll, so verwendest du einfach Delphi-Referenz durchsuchenRound. Du musst also nicht int nach extended casten (das muss man gar nicht, in die Richtung sind die Typen sogar kompatibel), sondern umgekehrt ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.
Seite 2 von 2     12   

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