Moin moin,
Zitat von
daywalker299:
...
Also wenn ich meine
IP Adresse zerlege bzw. die Punkte entferne und dann nur mit der Integer Zahl sortiere, ist Ergebnis falsch. Denn 192.168.2 würde nach 192.168.100 kommen, oder?
...
Weil die 2 in deiner
IP (192.168.2) ja eigentlich eine 002 ist und deswegen wurde dir vermutlich
vorgeschlagen, die einzelnen Bytes der
IP Adresse in einen DWord zu schreiben und dann zu sortieren.
(Warum der Umweg über String, Hex und dann wieder in einen Integer? Meistens liegen die
IP-Adressen sowieso
als DWORD bzw. ByteArray vor - dann könnte man gleich sortieren, aber das nur am Rande)
Hier mal ein Beispielcode, der auch das HEX in DWORD zeigt. Dabei dürfte deutlich werden,
das die Umwandlung in einen HEX(String) überflüssig ist.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type
TIP = Record
Case Integer of
0: (B: Array[0..3] of Byte);
1: (L: LongWord);
End;
var
dw:dword;
d2:tip;
begin
// Deine Hexwerte in einen DWORD schreiben
dw := $00000000; //$00.00.00.00
dw := dw or ($C0 shl 24); //$C0.00.00.00 oder auch dw := dw or (192 shl 24);
dw := dw or ($A8 shl 16); //$C0.A8.00.00 oder auch dw := dw or (168 shl 16);
dw := dw or ($01 shl 8); //$C0.A8.01.00 oder auch dw := dw or (1 shl 8);
dw := dw or $1D; //$C0.A8.01.1D oder auch dw := dw or 29;
// Methode meines Vorschreibers - hierbei aber auf die Umgedrehte Reihenfolge achten
d2.B[0]:= 29; // oder auch d2.B[0]:= $1D;
d2.B[1]:= 1; // oder auch d2.B[1]:= $01;
d2.B[2]:= 168; // oder auch d2.B[2]:= $A8;
d2.B[3]:= 192; // oder auch d2.B[3]:= $C0;
showmessage(inttostr(dw)+#13#10+
inttostr(d2.L));
end;