Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Lectura errónea de la versión de mi aplicación (https://www.clubdelphi.com/foros/showthread.php?t=75830)

Manuel 22-09-2011 02:56:52

Lectura errónea de la versión de mi aplicación
 
Amigos de Club, gracias por leer este hilo, tengo esta procedure para leer la versión de me ejecutable:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);

   function  GetAppVersion:string;
   var
    Size, Size2: DWord;
    Pt, Pt2: Pointer;
   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:= ' Ver '+
                     IntToStr (HiWord (dwFileVersionMS)) + '.' +
                     IntToStr (LoWord (dwFileVersionMS)) + '.' +
                     IntToStr (HiWord (dwFileVersionLS)) + '.' +
                     IntToStr (LoWord (dwFileVersionLS));
         end;
       finally
         FreeMem (Pt);
       end;
     end;
   end;

 begin
   Form1.Caption:=Form1.Caption+GetAppVersion;
 end;

A pesar que en el IDE le cambio la versión, a cualquier número, me aparece siempre "Ver 3.0.0.0', a pesar que tengo activo la opción de incluir el numero de versión, en el proyecto, que podrá ser?

Casimiro Notevi 22-09-2011 03:08:50

Yo tengo esto, echa un vistazo a las diferencias:

Código Delphi [-]
function GetmVersion(cExe:string='') : string;
var
  InfoSize, H, RsltLen: Cardinal;
  VersionBlock: Pointer;
  Rslt: PVSFixedFileInfo;
begin
  if (cExe='') or (not FileExists(cExe)) then
    cExe := Application.ExeName;
  //
  //InfoSize := GetFileVersionInfoSize(PChar(Application.ExeName), H);
  InfoSize := GetFileVersionInfoSize(PChar(cExe), H);
  VersionBlock := AllocMem(InfoSize);
  try
    //GetFileVersionInfo(PChar(Application.ExeName), H, InfoSize, VersionBlock);
    GetFileVersionInfo(PChar(cExe), H, InfoSize, VersionBlock);
    VerQueryValue(VersionBlock, '\', Pointer(Rslt), RsltLen);
    Result := Format('%d.%d.%d.%d', [
    Rslt.dwProductVersionMS div 65536,
    Rslt.dwProductVersionMS mod 65536,
    Rslt.dwProductVersionLS div 65536,
    Rslt.dwProductVersionLS mod 65536]);
  finally
    FreeMem(VersionBlock);
  end;
end;

DarKraZY 22-09-2011 11:04:00

Cita:

Empezado por Manuel (Mensaje 412947)
A pesar que en el IDE le cambio la versión, a cualquier número, me aparece siempre "Ver 3.0.0.0', a pesar que tengo activo la opción de incluir el numero de versión, en el proyecto, que podrá ser?

En Delphi 2007 funciona perfectamente el código que has puesto ;)

Manuel 22-09-2011 14:31:38

Gracias por sus respuestas.
 
Amigos como siempre tan gentiles, y agradezco el tiempo que se toman en responder los hilos del foro, el problema no era la rutina para capturar la versión, les cuento si a alguien le puede servir:

El nombres del proyecto originalmente era notas, pero después le cambie el nombre del archivo .drp a notasV3, pero internamente el unit seguía llamándose notas, por lo tanto la información del proyecto (Ej.: Número versión) seguía en el archivo notas.res, al cambiarlo de "unit notas" a "unit notasv3", se actualizo el número de versión real, escribo esto si alguien le pudiera servir en un futuro.

Nuevamente agradezco su ayuda.


La franja horaria es GMT +2. Ahora son las 03:24:57.

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