AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IP-Adressen sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

IP-Adressen sortieren

Ein Thema von sminds · begonnen am 28. Dez 2004 · letzter Beitrag vom 28. Dez 2004
Antwort Antwort
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#1

IP-Adressen sortieren

  Alt 28. Dez 2004, 09:19
Habe eine kleine Anwendung geschrieben, wo alle IP-Adressen unserer Fa. gesammelt werden.
Die IP-Adresse trage ich in ein String-Feld ein; allerdings habe ich bisher
keine Möglichkeit gefunden, die IP-Adressen in sortierter Reihenfolge auszugeben.

Vielleicht kennt jemand eine Funktion, der aus dieser Liste

10.250.150.1
10.250.150.10
10.250.150.11
10.250.150.2
...

diese macht

10.250.150.1
10.250.150.2
10.250.150.10
10.250.150.11
...

Vielen Dank und noch allen Frohe Weihnachten
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 09:22
Da musst Du selbst Hand anlegen. Mir ist dafür keine Standard-Funktion bekannt. Ein nach dem Punkt [dp:dbe1a94717=split]splitten[/dp:dbe1a94717] und dann die einzelnen Integerwerte jeweils vergleichen.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#3

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 09:26
Zitat von sakura:
Da musst Du selbst Hand anlegen. Mir ist dafür keine Standard-Funktion bekannt. Ein nach dem Punkt [dp:2747ac72ab=split]splitten[/dp:2747ac72ab] und dann die einzelnen Integerwerte jeweils vergleichen.

......

OK,
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#4

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 09:38
IP`s in sringliste laden und dann stringlist.sort
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#5

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 09:40
Hallo arbu man,
dann kommt das raus, was man nicht haben will ...

bye
Claus
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#6

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 09:56
Dann Spliten und die Zahlen mit dieser funktion sortieren

Delphi-Quellcode:
procedure sort2 (var a: array of word);
var bis,i,j,k : longint;
    h : word;
begin
    bis := high(a);
    k := bis shr 1; { div 2 }
    While k > 0 do begin
        For i := 0 To bis - k do begin
            j := i;
            While (j >= 0) And (a[j] > a[j + k]) do begin
                h := a[j];
                a[j]:= a[j + k];
                a[j + k] := h;
                dec(j,k);
            end;
        end;
        k := k shr 1; { div 2 }
    end;
End;
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 10:17
@arbu man: Ich weiß absolut nicht, was Deine Funktion erreichen soll. Du solltest etwas mehr Code liefern, zumal ich glaube, dass Du am Problem vorbei denkst...

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 10:39
Folgender Funktionsentwurf würde gehen. Dieser ist jetzt weder schön noch gut, aber sollte gehen und Dir einen Ansatz liefern Voraussatzung ist, dass die Werte in einer TStringListe stehen.
Delphi-Quellcode:
// diese Funktion wird an die CustomSort methode der StringList übergeben
// siehe weiter unten für das Beispiel...
function IPSort(List: TStringList; Index1, Index2: Integer): Integer;
var
  S1, S2: String;
  // indizies
  I11, I12, I21, I22,
  // bytewerte
  I1B, I2B: Byte;
begin
  S1 := List[Index1];
  S2 := List[Index2];
  // erstes Byte vergleichen
  I11 := Pos('.', S1);
  I1B := StrToIntDef(Copy(S1, 1, Pred(I11)), -1);
  I21 := Pos('.', S2);
  I2B := StrToIntDef(Copy(S2, 1, Pred(I21)), -1);
  if I1B < I2B then
  begin
    Result := -4
  end
  else if I1B > I2B then
  begin
    Result := 4
  end
  else
  begin
    // zweites Byte vergleichen
    Inc(I11);
    I12 := PosEx('.', S1, I11);
    I1B := StrToIntDef(Copy(S1, I11, I12 - I11), -1);
    Inc(I21);
    I22 := PosEx('.', S1, I21);
    I2B := StrToIntDef(Copy(S2, I21, I22 - I21), -1);
    if I1B < I2B then
    begin
      Result := -3
    end
    else if I1B > I2B then
    begin
      Result := 3
    end
    else
    begin
      // drittes Byte vergleichen
      Inc(I12);
      I11 := PosEx('.', S1, I12);
      I1B := StrToIntDef(Copy(S1, I12, I11 - I12), -1);
      Inc(I22);
      I21 := PosEx('.', S1, I22);
      I2B := StrToIntDef(Copy(S2, I22, I21 - I22), -1);
      if I1B < I2B then
      begin
        Result := -2
      end
      else if I1B > I2B then
      begin
        Result := 2
      end
      else
      begin
        // viertes Byte vergleichen
        Inc(I11);
        I12 := PosEx('.', S1, I11);
        I1B := StrToIntDef(Copy(S1, I11, MaxInt), -1);
        Inc(I21);
        I22 := PosEx('.', S1, I21);
        I2B := StrToIntDef(Copy(S2, I21, MaxInt), -1);
        if I1B < I2B then
        begin
          Result := -1
        end
        else if I1B > I2B then
        begin
          Result := 1
        end
        else
        begin
          Result := 0;
        end;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SL := TStringList.Create;
  try
    /// WERTE IN DIE STRING-LISTE EINTRAGEN
    ....
    /// STRING-LISTE SORTIEREN
    SL.CustomSort(IPSort);

    /// und zum beispiel in ein Memo schreiben
    Memo1.Lines.Assign(SL);
  finally
    SL.Free;
  end;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
sminds

Registriert seit: 16. Jun 2003
Ort: Südtirol
21 Beiträge
 
#9

Re: IP-Adressen sortieren

  Alt 28. Dez 2004, 10:48
Danke für die vielen Antworten!

Habe es jetzt mit einer SQL-Abfrage gelöst, da ich die IP-Adressen in einer Datenbank habe.

SQL-Code:
select ipadresse,
ip1=cast(substring(substring(ipadresse,8,10),1,patindex('%.%',substring(ipadresse,8,10))-1) as integeR),
ip2=cast(substring(substring(ipadresse,8,10),patindex('%.%',substring(ipadresse,8,10))+1,10) as integer)
from computer
order by ip1,ip2

Resultat:

ipadresse ip1 ip2
--------------- ----------- -----------
10.250.74.13 74 13
10.250.90.10 90 10
10.250.90.11 90 11
10.250.90.12 90 12
10.250.90.20 90 20
10.250.150.4 150 4
10.250.150.5 150 5
10.250.150.6 150 6
10.250.150.7 150 7
10.250.150.8 150 8
10.250.150.9 150 9
10.250.150.10 150 10


PS. Funktioniert, da wir das Subnet 255.255.0.0 haben und somit 10.250. immer fix bleibt.
  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 02:36 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