Ver Mensaje Individual
  #4  
Antiguo 20-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Reputación: 16
cocute Va por buen camino
Cita:
Empezado por delphi.com.ar Ver Mensaje
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.

Última edición por cocute fecha: 20-01-2010 a las 18:35:53.
Responder Con Cita