Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
Delphi 2010 Professional
|
Re: Versionsnummern vergleichen?
27. Nov 2007, 18:19
Hi,
hier mal was aus meinem Fundus
Delphi-Quellcode:
function NumDots(s: string): integer;
var
i: integer;
begin
result := 0;
for i := 1 to length(s) do
if s[i] = '.' then
inc(result);
end;
function CmdSplit(var S: string; c: char): string;
var
i: integer;
begin
i := pos(c, s);
if i = 0 then
begin
result := s;
s := '';
end
else
begin
result := copy(s, 1, i - 1);
if i < length(s) then
s := copy(s, i + 1, length(s) - i)
else
s := '';
end;
end;
function CompareVersion(v1, v2: string): integer;
var
iv_1: integer;
iv_2: integer;
begin
result := 0;
if NumDots(v1) > NumDots(v2) then
result := 1 // v1 hat mehr punkte als v2 -> v1 ist jünger
else if NumDots(v1) < NumDots(v2) then
result := -1 // v2 hat mehr punkte als v1 -> v2 ist jünger
else
begin // gleich viele punkte im versions-string
while (length(v1) > 0) and (length(v2) > 0) do
begin
iv_1 := StrToIntDef(CmdSplit(v1, '.'), 0);
iv_2 := StrToIntDef(CmdSplit(v2, '.'), 0);
if iv_1 < iv_2 then
begin
result := -1;
break;
end
else if iv_1 > iv_2 then
begin
result := 1;
break;
end
else // if equal
begin
// continue compare loop
end;
end;
end;
end;
Viel Spass damit
Gruss
|
|
Zitat
|