'1.97' = '1.a'
'1.23' = '12.3'
ich glaub ein/zwei Sachen mußt'e noch anpassen.
Tipp: Strings nicht in Zahlen umwandeln und die Strings vorher an Zahlen-/Buchstabengrenzen aufteilen, sowie den Punkt nicht ignorieren und alles was über Punkte (das sind ja typische Versionsnummernteileteiler

) getrennt vergleichen.
Als Rückgabewert lieber einen "verständlicheren" Enum oder einfach nur ein
TCompareValue TValueRelationship (bei Fehlern eine
Exception werfen) verwenden.
[edit]
Komisch, mir war so, als wenn es mal ein TCompareValue gab.
Delphi-Quellcode:
type
TValueRelationship = -1..1;
const
LessThanValue = Low(TValueRelationship);
EqualsValue = 0;
GreaterThanValue = High(TValueRelationship);
Ein Therapeut entspricht 1024 Gigapeut.