Mir fällt dazu spontan ein, dass die Version ja als String vorliegt. Somit kann man die Punkte rausnehmen, um einen gültigen Integer umrechnen zu können.
Damit da aber ein korrekter Vergleich erfolgen kann, sollte man den Versionsstring lieber splitten, um führende Nullen zu entfernen/hinzuzufügen.
Ansonsten kann das ganze nach Hinten (im wahresten Sinne) los gehen. Bsp: 1.5.003 wäre größer als 1.5.3, wenn man es als String umwandelt.
Per Splitting kann man die einzelnen Strings dann in Integer umwandeln, die Nullen werden automatisch entfernt. Als Sicherheit sollte man dann die einzelnen Integer wieder mit führenden Nullen in Strings umwandeln, zu einem einzigen String zusammenführen und das dann in einen Integer umwandeln.
Beispiel:
VersionA = "1.5.043"
VersionB = "1.6.3"
Split VersionA in Einzelstrings ->
Split_A[0] = "1"
Split_A[0] = "5"
Split_A[0] = "043"
Split VersionB in Einzelstrings ->
Split_A[0] = "1"
Split_A[0] = "6"
Split_A[0] = "3"
In einzelne Integer ->
Split_A[0] = 1
Split_A[0] = 5
Split_A[0] = 43
In einzelne Integer ->
Split_B[0] = 1
Split_B[0] = 6
Split_B[0] = 3
Hier könnte man die Version schon vergleichen, indem man die einzelnen Arrayelemente direkt vergleicht.
Einfacher geht es, wenn alles wieder zusammengefügt wird. Wenn man die Integer nun als String zusammenfassen würde, wäre VersionA größer als VersionB, da es mehr Stellen hat. Daher wieder Nullen hinzufügen.
In einzelne Strings formatieren mit führenden Nullen ->
Split_A[0] = "00001"
Split_A[0] = "00005"
Split_A[0] = "00043"
Split_B[0] = "00001"
Split_B[0] = "00006"
Split_B[0] = "00003"
Wieder zu einem String:
VersionA = "000010000500043"
VersionB = "000010000600003"
Und letztendlich zu einem Integer:
VersionA = 10000500043
VersionB = 10000600003
Das ganze erinnert ein wenig an Klöße kochen - von der rohen Kartoffel angefangen, ist aber in meinen Augen eine Lösung, welche funktioniert.
Edit: gerade nochmal gegoogelt.
www.delphipraxis.net...ern-vergleichen.html
www.delphipraxis.net...ben-vergleichen.html
Ich habe Buchstaben bei meinen Vergleichen nicht bedacht!
Nachtrag:
www.delphi-forum.de/...leichen_89919,0.html