[fpc-pascal] Comparing version numbers
A.J. Venter
aj at getopenlab.com
Sat Jun 3 01:41:32 CEST 2006
> 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
More information about the fpc-pascal
mailing list