PDA

Ver la Versión Completa : Lectura errónea de la versión de mi aplicación


Manuel
22-09-2011, 02:56:52
Amigos de Club, gracias por leer este hilo, tengo esta procedure para leer la versión de me ejecutable:

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:

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
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
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.