Buscar

Testar qual versão de programa é maior

Código

{Muitas vezes queremos, via programa, verificar se a versão de um programa (padrão do windows e delphi) pois ela é um texto que possuí varias partes.

   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;  

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 29/01/04
Por: Luciano Cargnelutti
Visualizada: 3255 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009