Código
Eu tive este problema e não localizei nenhuma função para isto na Internet. Bem, isto não foi problema, criei a minha própria.
Agora quero dividir isto com você, e quem sabe você pode me ajudar também, caso encontre algum erro ou tenha alguma sugestão para a melhoria desta função, favor entre em contato comigo pelo e-mail:llutti@hotmail.com.}
Const
VERSAO_IGUAL = 0;
VERSAO_MAIOR = 1;
VERSAO_MENOR = 2;
Function MaiorVersao(pVersao1, pVersao2: String): Integer;
Var
Aux,
MajorVersion1,
MajorVersion2,
MinorVersion1,
MinorVersion2,
Release1,
Release2,
Build1,
Build2:String;
Passo:Integer;
begin
Result := VERSAO_IGUAL;
if pVersao1 = pVersao2 then
exit;
Aux := pVersao1;
Passo := 1;
MajorVersion1 := '';
MinorVersion1 := '';
Release1 := '';
Build1 := '';
While Aux <> '' do
begin
if Aux[1] = '.' then
begin
Inc(Passo);
Delete(Aux,1,1);
end;
Case Passo of
1: MajorVersion1 := MajorVersion1 + Aux[1];
2: MinorVersion1 := MinorVersion1 + Aux[1];
3: Release1 := Release1 + Aux[1];
4: Build1 := Build1 + Aux[1];
end;// case
Delete(Aux,1,1);
end;
MajorVersion1 := AddChar(MajorVersion1,'0',3);
MinorVersion1 := AddChar(MinorVersion1,'0',3);
Release1 := AddChar(Release1,'0',4);
Build1 := AddChar(Build1,'0',6);
Aux := pVersao2;
Passo := 1;
MajorVersion2 := '';
MinorVersion2 := '';
Release2 := '';
Build2 := '';
While Aux <> '' do
begin
if Aux[1] = '.' then
begin
Inc(Passo);
Delete(Aux,1,1);
end;
Case Passo of
1: MajorVersion2 := MajorVersion2 + Aux[1];
2: MinorVersion2 := MinorVersion2 + Aux[1];
3: Release2 := Release2 + Aux[1];
4: Build2 := Build2 + Aux[1];
end;// case
Delete(Aux,1,1);
end;
MajorVersion2 := AddChar(MajorVersion2,'0',3);
MinorVersion2 := AddChar(MinorVersion2,'0',3);
Release2 := AddChar(Release2,'0',4);
Build2 := AddChar(Build2,'0',6);
if MajorVersion1 <> MajorVersion2 then
begin
if MajorVersion1 > MajorVersion2 then
Result := VERSAO_MAIOR
else
Result := VERSAO_MENOR;
exit;
end;
if MinorVersion1 <> MinorVersion2 then
begin
if MinorVersion1 > MinorVersion2 then
Result := VERSAO_MAIOR
else
Result := VERSAO_MENOR;
exit;
end;
if Release1 <> Release2 then
begin
if Release1 > Release2 then
Result := VERSAO_MAIOR
else
Result := VERSAO_MENOR;
exit;
end;
if Build1 <> Build2 then
begin
if Build1 > Build2 then
Result := VERSAO_MAIOR
else
Result := VERSAO_MENOR;
exit;
end;
end;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009