> Simple, just a variation of your first try. Use ASCII comparation, > but all parts must have the same digits, in your case, you padd the > 3rd part (or any part) with any letter down the ascii code of 0, for > example ' ' (a space) This was a brilliant idea as far as I can see. MUCH simpler than the debian way. And my code for it is a LOT shorter than yours ;)
function CompareVersion(Version1,Version2:String):Boolean; Var L1,L2,I : Integer; V1,V2 : String; Begin V1 := Version1; V2 := Version2; L1 := Length(V1); L2 := Length(V1); If L1 > L2 then For I := L2 to L1 do V2 := V2 + ' '; If L2 > L1 then For I := L1 to L2 do V1 := V1 + ' '; CompareVersion := V1 > V2; end; The debian version on the other hand is well over 200 lines of code by itself, and I am not entirely sure my version is going to be stable on all testdata yet. With the testdata I have right now, which is a very good representation of INTENDED usage (and we all know how rarely that is only usage) both now seem to give the exact same results. So - I am leaving the debian version in the code, but commented out, and going with Eduardo's unless I find a VERY good reason to go with the other later - because THIS one is guaranteed WAY easier to maintain, much less likely to puke on bad data and I cannot see a difference in results. Thanks a great deal. A.J. -- "there's nothing as inspirational for a hacker as a cat obscuring a bug by sitting in front of the monitor" - Boudewijn Rempt A.J. Venter Chief Software Architect OpenLab International www.getopenlab.com www.silentcoder.co.za +27 82 726 5103 _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal