Einzelnen Beitrag anzeigen

Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Versionsnummern vergleichen?

  Alt 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
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat