Ya que has insistido al final me he animado a hacerlo, pero he preferido no aprovechar los datos descompuestos de GetFileVersion, ya que tengo que usar una funcion para descomponer un valor prefiero sacar el valor de version con la función que he puesto mas arriba y luego descomponerlos los dos valores, ya que asi creo que es menos codigo .
Os pongo el código que he usado por si algún dia alguno la utilizais, creo que esta bién, tengo que probarlo mejor a ver:
Función para descomponer una cadena con 4 valores separados por 3 puntos:
Código Delphi
[-]
function Descompone(cadena: string; var cadena1, cadena2,cadena3,cadena4: string):string;
var i, j:integer;
begin
j:=1;
i:=pos('.', cadena);
cadena1:=copy(cadena, j, i-j);
j:=i+1;
i:=PosEx('.', cadena, j);
cadena2:=copy(cadena, j, i-j);
j:=i+1;
i:=PosEx('.', cadena, j);
cadena3:=copy(cadena, j, i-j);
j:=i+1;
i:=length(cadena);
cadena4:=copy(cadena, j, i);
end;
Función para comprobar que versión es mayor:
(devuelve 0 si son iguales, 1 si version1 es mayor y 2 si version2 es mayor)
Código Delphi
[-]
function cualesmayor(version1,version2:string):integer;
var cad1, cad2, cad3,cad4,cod1,cod2,cod3,cod4:string;
m:Integer;
begin
Descompone(version1, cad1,cad2,cad3,cad4);
Descompone(version2, cod1,cod2,cod3,cod4);
m:=2;
if cad1>cod1 then m:=1;
if cad1=cod1 then
begin
if cad2>cod2 then m:=1;
if cad2=cod2 then
begin
if cad3>cod3 then m:=1;
if cad3=cod3 then
begin
if cad4>cod4 then m:=1;
if cad4=cod4 then
begin
m:=0;
end;
end;
end;
end;
Result:=m;
end;
Para usarlo partiendo de dos edits y un botón:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var t:Integer;
begin
t:=cualesmayor(Edit1.Text,Edit2.text);
if t=0 then ShowMessage('son iguales');
if t=1 then ShowMessage('Edit1 es mayor');
if t=2 then ShowMessage('Edit2 es mayor');
end;