AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree: IP Adressen sortieren

Ein Thema von Piro · begonnen am 27. Nov 2009 · letzter Beitrag vom 9. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 11:46
Moin,

ich würde gerne einmal wissen wie ihr die Sortierung von IP Adressen im VST gelöst habt.
Meine derzeitige Lösung sieht wie folgt aus:
Delphi-Quellcode:
procedure Tfrm_main.vst_network_subnetdetailsCompareNodes(
  Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex;
  var Result: Integer);
var
 SubnetDetailsData1 : TOSubnetDetailsData;
 SubnetDetailsData2 : TOSubnetDetailsData;
 IP1, IP2 : Integer;
begin
 SubnetDetailsData1 := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node1)^);
 SubnetDetailsData2 := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node2)^);
 IP1 := StrToInt(StringReplace(SubnetDetailsData1.ipaddress, '.','',[rfReplaceAll]));
 IP2 := StrToInt(StringReplace(SubnetDetailsData2.ipaddress, '.','',[rfReplaceAll]));

 if column > -1 then
 begin
   if vst_network_subnetdetails.Header.Columns[Column].Text = 'IP Address'  then Result := CompareValue(IP1, IP2);
   ...
 end;
end;
Leider werden Sie immer noch flasch sortiert. Ich habe mir schon überlegt, ob ich sie in 4 Teile zerlege und dann die Sortierung durchführe. Diesen Weg wollte ich aber erst am Schluss machen, da er sehr aufwendig ist.

Dank im voraus.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 11:53
Wäre es nicht sinnvoller, die IP-Adressen(zusätzlich) als DWORD vorzuhalten? Nach diesen könntest Du dann sortieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#3

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 11:56
Und ich schon wieder
Wie willst du sie denn sortieren? Auf-/absteigend? Oder nach Subnet?
Daraus die nächste Frage: Sortierung über HeaderClick (wie im Explorer) oder von außen gesteuert?
Je nachdem, wie du dir das gedacht hast, ändert sich auch der Ansatz...
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#4

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 12:14
OnHeaderClick auf/absteigend.

Wenn ich sie als DWORD abspeichere, ist es dann nicht das selbe was ich gemacht habe? Ich habe sie zum Integer umgewandelt. Oder irre ich mich?

Wie kann man denn aus einem String ein DWORD machen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 12:22
Das einfache Wandeln in Integer führt nur dann zum gleichen Ergebnis, wenn Du die einzelnen Oktetts 3-stellig im String vorliegen hast. Ansonsten müsstest Du den String zerlegen, die einzelnen Teilstrings in Byte umwandeln, per Bitshifting an die richtige Position verschieben und binär verodern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#6

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 12:24
Ich habe sie jetzt zerlegt und es funktioniert.

Danke.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

Re: VirtualStringTree: IP Adressen sortieren

  Alt 27. Nov 2009, 15:53
Zitat von DeddyH:
Das einfache Wandeln in Integer führt nur dann zum gleichen Ergebnis, wenn Du die einzelnen Oktetts 3-stellig im String vorliegen hast. Ansonsten müsstest Du den String zerlegen, die einzelnen Teilstrings in Byte umwandeln, per Bitshifting an die richtige Position verschieben und binär verodern.
Das klingt kompliziert.
Warum schreibst du die nicht als Hexzahl hinter einander weg und wandelst dann den Hex in ein DWord?

Code:
192.168.1.2 -> $c0 $a8 $01 $02 -> $c0a80102 -> 3232235778
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#8

Re: VirtualStringTree: IP Adressen sortieren

  Alt 7. Dez 2009, 21:40
Ich muss nochmal das Thema aufgreifen.

Ich verstehe das mit dem DWORD nicht ganz. Wenn ich den String der IP Adresse in ein DWORD umwandel, funktioniert die Sortierung dann wie gewünscht?

Wi wandelt man denn 192.168.1.29 in ein DWORD?

Vielen Dank im voraus.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#9

Re: VirtualStringTree: IP Adressen sortieren

  Alt 9. Dez 2009, 14:35
eine Möglichkeit:

Delphi-Quellcode:
var
  dwip: dword;
  a,b,c,d: byte;
begin
  a:=192;
  b:=168;
  c:=0;
  d:=1;
  dwip:=strtoint(
      '$'+
      IntToHex(a,2)+
      IntToHex(b,2)+
      IntToHex(c,2)+
      IntToHex(d,2)
  );
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.078 Beiträge
 
Delphi 12 Athens
 
#10

Re: VirtualStringTree: IP Adressen sortieren

  Alt 9. Dez 2009, 14:50
Das Ganze mit dem hexadezimalen Zeugs ist nur ein kleines Bissl unperformant

Zitat:
- String zerlegen
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- Integer in Hex-String umwandeln
- Integer in Hex-String umwandeln
- Integer in Hex-String umwandeln
- Integer in Hex-String umwandeln
- die 4 Strings zusammensetzen
- Hex in EINEN Integer umwandeln
statt nur
Zitat:
- String zerlegen
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- Zahl-String in Integer umwandeln
- die 4 Integer zusammensetzen
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:25 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