AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Aus Int64 die Oktette einer IP Adresse berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Int64 die Oktette einer IP Adresse berechnen

Ein Thema von jensw_2000 · begonnen am 15. Aug 2006 · letzter Beitrag vom 15. Aug 2006
Antwort Antwort
jensw_2000
(Gast)

n/a Beiträge
 
#1

Aus Int64 die Oktette einer IP Adresse berechnen

  Alt 15. Aug 2006, 22:19
Moin Moin,

Ich benutze die Funktion MakeIpAddress aus der commctr.pas um den "Wert" einer IP Adresse (String) zu ermitteln.

Delphi-Quellcode:
function GetIpValue(IPS:String):int64;
  var sl:TStringList;
begin
  sl:=TStringList.create;
  try
    // Oktette der IP Adresse splitten
    sl.Delimiter:='.';
    sl.DelimitedText:=IPS;
    if sl.count=4 then
    begin
      // 4 Oktette > IP String könnte gültig sein
      try
        result:=MakeIpAddress(strToInt(sl[0]),strToInt(sl[1]),strToInt(sl[2]),strToInt(sl[3]));
      except
        // ungültiger IP String (IPS) > Result auf Broadcastadresse setzen
        result:=4294967296; // 255.255.255.255
      end;
    end
    else begin
      // ungültiger IP String (IPS) > Result auf Broadcastadresse setzen
      result:=4294967296; // 255.255.255.255
    end;
  finally
    sl.free;
  end;
end;
Die Funktion liefert folgende Ergebnisse

167772161 // 10.0.0.1
167772162 // 10.0.0.2
3232235777 // 192.168.1.1
3232235778 // 192.168.1.2

Die Ergebnisse entsprechen dem Deizmalwert der IP Adresse.

Code:
Rechenbeispiel 192.168.1.1:

---Oktett 4 - Wert Dezimal 1 ------------------------
  2^0   *  1 = 1
  2^1   *  0
  2^2   *  0
  2^3   *  0
  2^4   *  0
  2^5   *  0
  2^6   *  0
  2^7   *  0
---Oktett 3 - Wert Dezimal 1 ------------------------
  2^8   *  1 = 256
  2^9   *  0
  2^10  *  0
  2^11  *  0
  2^12  *  0
  2^13  *  0
  2^14  *  0
  2^15  *  0
---Oktett 2 - Wert Dezimal 168 ------------------------
  2^16  *  0
  2^17  *  0
  2^18  *  0
  2^19  *  1 = 524288
  2^20  *  0
  2^21  *  1 = 2097152
  2^22  *  0
  2^23  *  1 = 8388608
---Oktett 1 - Wert Dezimal 192 ------------------------
  2^24  *  0
  2^25  *  0
  2^26  *  0
  2^27  *  0
  2^28  *  0
  2^29  *  0
  2^30  *  1 = 1073741824       
  2^31  *  1 = 2147483648
=============================================================
             = 3232235777  // 192.168.1.1

Ich scheitere jetzt den Weg zurück (vom int64 zum String).

Delphi-Quellcode:
function GetAddressString(value:int64):String;
  var okt1,okt2,okt3, okt4: integer;
begin
  
  // Das 4. Oktett kann ich noch selber. :mrgreen:
  okt4 := Value mod 256;
  okt3 := :coder2:
  okt2 := :coder2:
  okt1 := :coder2:
  
  result:=inttostr(okt1)+'.'+inttostr(okt2)+'.'+inttostr(okt3)+'.'+inttostr(okt4);


end;

Kann mir bei den Oktetten 1 bis 3 jemand helfen ?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Aus Int64 die Oktette einer IP Adresse berechnen

  Alt 15. Aug 2006, 22:39
Hallo,

so geht's:
Delphi-Quellcode:
okt4 := Value and $FF;
okt3 := (Value shr 8) and $FF;
okt2 := (Value shr 16) and $FF;
okt1 := (Value shr 24) and $FF;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Aus Int64 die Oktette einer IP Adresse berechnen

  Alt 15. Aug 2006, 23:19
Hallo,

zu später Stunde noch ein Link: klick

Gruß Hawkeye
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: Aus Int64 die Oktette einer IP Adresse berechnen

  Alt 15. Aug 2006, 23:35
Danke euch Beiden.
@xaromz ... funktioniert
@Hawkeye ... sehr interessanter Link.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz