Cita:
Empezado por delphi.com.ar
Mmmmm.. si compraras las versiones "1.1.0.10" contra "10.0.0.0" te dirá que la primera es mayor.
Si ya tienes armado el string, simplemente tienes que descomponerlo en números separándolo por los puntos y comparar parte a parte, mientras sean iguales de izquierda a derecha, en cuanto un valor es superior al otro, ya tienes identificado cual es la versión mayor.
Pero pregunto... este valor lo estas obteniendo con la winapi GetFileVersionInfo?... porque de ser así puedes comparar directamente los resultados de la misma.
Saludos!
|
Gracias, pensaba que habria algún modo mas simple de hacerlo,
uso esta función para extraer la versión:
Código Delphi
[-]function VersionExe(const ruta: string) : string;
var
Pt, Pt2: Pointer;
Size, Size2: DWord;
begin
Result := '';
if not FileExists(ruta) then Exit;
Size := GetFileVersionInfoSize(PChar(ruta), Size2);
if (Size > 0) then begin
GetMem(Pt, Size);
try
GetFileVersionInfo(PChar(ruta), 0, Size, Pt);
VerQueryValue (Pt, '\', Pt2, Size2);
with TVSFixedFileInfo (Pt2^) do begin
Result :=
IntToStr(HiWord(dwFileVersionMS))+'.'+
IntToStr(LoWord(dwFileVersionMS))+'.'+
IntToStr(HiWord(dwFileVersionLS))+'.'+
IntToStr(LoWord(dwFileVersionLS));
end;
finally
FreeMem(Pt);
end;
end;
end;
para rgstuamigo, gracias pero como bien dice delphi.com.ar eso es lo mismo que hacer un simple:
if Edit1.Text > edit2.text then ShowMessage('La mayor version es : '+Edit1.Text);
if Edit1.Text < edit2.text then ShowMessage('La mayor version es : '+Edit2.Text)
else ShowMessage('Son iguales');
ya que no hace falta pasarlos a int ni quitar los puntos para comprobar eso, pero no es correcto.