On 6/2/06, Vincent Snijders <[EMAIL PROTECTED]> wrote:
Split the version string in several numbers:
version := '4.0.12';
major := 4
minor := 0;
patch := 12;

I think this is the winner solution.

But you don´t have to do this:

versionnumber := major * 10000 + minor * 100 + patch

It´s better to just do many ifs, something like this:

type
 TVersao = packed record
   TamanhoDaEstrutura: Cardinal;
   VersaoMaior: Integer;
   VersaoMenor: Integer;
   Distribuicao: Integer;
   Construcao: Integer;
   Patch: Integer;
 end;

function IsVersionBigger(Esperada, Ver: TVersion): Boolean;
begin
 Result := False;

 if Esperada.VersaoMaior < Ver.VersaoMaior then
  Result := True
 else if Esperada.VersaoMenor < Ver.VersaoMenor then
  Result := True
 else if Esperada.Distribuicao < Ver.Distribuicao then
  Result := True
 else if Esperada.Construcao < Ver.Construcao then
  Result := True
 else if Esperada.Patch <= Ver.Patch then
  Result := True;
end;

This supports up to 4 dots separating 5 version parts. Of course, you
can build a dynamic structure to hold any number of version parts and
then do a while to hold the any number of ifs.

--
Felipe Monteiro de Carvalho
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to