Das Kernproblem lässt sich auch auf einen Integervergleich reduzieren:
Delphi-Quellcode:
function MakeVersion(major, minor, release, build:byte):Cardinal;
begin
result := (major shl 24) or (minor shl 16) or (release shl 8) or build;
end;
if MakeVersion(ReadInteger('Version', 'Major', 0), ....) > MakeVersion(Major, Minor, ...) then
Avaiable;
Kein Teil darf dann über 255 hinausgehen. (Aber Versionen wie 3.260.70.577 sind ja eher selten)
Sollte dies ein Problem sein, dann macht man eben einen Fliesskommazahlvergleich:
Delphi-Quellcode:
function MakeVersion(major, minor, release, build:integer):Double;
begin
result := (((major * 10000.0) + minor) * 10000.0 +release)*10000.0 + build;
end;