Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comparar version de Aplicacion para Actualizar (https://www.clubdelphi.com/foros/showthread.php?t=40876)

amadis 01-03-2007 00:24:22

Comparar version de Aplicacion para Actualizar
 
Que tal Gente.

Estoy tratando de hacer un actualizador para mi aplicación,
para ello me valí de algunos datos que recopile de otros hilos,
con uno descargo un archivo txt de una web con la version disponible,

y luego obtengo la version de mi programa en ejecución.

Aquí el codigo de Neftali para ver la version disponible en el servidor

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var
  b:Boolean;
  TS:TStrings;
  Str:String;

  //----------------------------------------------------------------------------
  function DownloadFile(Source, Dest: string): Boolean;
  begin
    // proteccion
    try
      Source := AnsiReplaceStr(Source, '/', '\');
      Result := UrlDownloadToFile(nil, PChar(Source), PChar(Dest), 0, nil) = 0;
    except
      Result := False;
    end;
  end;
  //----------------------------------------------------------------------------
begin

  // descargar
  b := DownloadFile('http://neftali.clubdelphi.com/temp/test_vrs.txt',
                    'c:\temp\test_vrs.txt');
  // correcto?
  if (b) then begin
    // Crear TStrings
    TS := TStringList.Create();
    // Coger la version
    TS.LoadFromFile('c:\temp\test_vrs.txt');
    Str := TS[1];
    // Avisar
    MessageDlg('Versión en el Servidor: ' + Str, mtInformation, [mbOK], 0);
    // Liberar
    TS.Free;
  end;
end;

Y aquí la función que me dice ¿que versión estoy ejecutando?

Código Delphi [-]
uses
  Windows, SysUtils;

function GetAppVersion : string;
   begin
        Size := GetFileVersionInfoSize(PChar (ParamStr (0)), Size2);
        if Size > 0 then
         begin
              GetMem (Pt, Size);
              try
                 GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
                 VerQueryValue (Pt, '\', Pt2, Size2);
                 with TVSFixedFileInfo (Pt2^) do
                  begin
                       Result:= ' Versión '+
                                IntToStr (HiWord (dwFileVersionMS)) + '.' +
                                IntToStr (LoWord (dwFileVersionMS)) + ' Build ' +
                                IntToStr (HiWord (dwFileVersionLS)) + '.' +
                                IntToStr (LoWord (dwFileVersionLS));
                  end;
              finally
                     FreeMem (Pt);
              end;
         end;
   end;

El tema es que con la primera Funcion descargo el TXT en el cual coloco los numeros de version (ej 1.0.2.4) eso esta bien.
Pero la segunda función me da como resultado VERSION 1.0 BUILD 2.4.

De que forma puedo obtener la versión actual en NUMERO, cosa de comparar
if VERSIONDISPONIBLE > VERSIONACTUAL then ACTUALIZAR.

Gracias!

pvizcay 01-03-2007 00:27:21

Modifica el codigo de la ultima funcion y no conviertas los version numbers a cadenas devuelvelos como parametros..
los componentes JEDI tienen uno si mal no recuerdo que te los da en propiedades tambien

salu2

luisgutierrezb 01-03-2007 01:07:44

de la segunda funcion sustituye donde dice ' BUILD ' por '.'
o tambien, de la segunda funcion has un programa que te genere el archivo de texto, asi te lo generara con BUILD y demas


La franja horaria es GMT +2. Ahora son las 21:18:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi