Cómo recuperar el número de versión de la aplicación

5151 vistas

Para poder recuperar este tipo de información, será necesario tener activada la casilla "Include versión information in project" en Projet|Option|Version Info, sino, la función provocarÃa una violación de acceso



delphi
  1. function ApplicationVersion: String
  2. var
  3.   VerInfoSize, VerValueSize, Dummy: DWord;
  4.   VerInfo: Pointer;
  5.   VerValue: PVSFixedFileInfo;
  6. begin
  7.   VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
  8.   { dos soluciones }
  9.   if VerInfoSize <> 0 then
  10.   { - la información de versión está incluida }
  11.   begin
  12.     { guardamos la memoria necesaria para el puntero de la información de versión }
  13.     GetMem(VerInfo, VerInfoSize);
  14.     { recuperamos dicha información }
  15.     GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
  16.     VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
  17.     { tratamos la información recuperada }
  18.     with VerValue^ do
  19.     begin
  20.       Result := IntTostr(dwFileVersionMS shr 16);
  21.       Result := Result + '.' + IntTostr(dwFileVersionMS and $FFFF);
  22.       Result := Result + '.' + IntTostr(dwFileVersionLS shr 16);
  23.       Result := Result + '.' + IntTostr(dwFileVersionLS and $FFFF);
  24.     end;
  25.  
  26.     { liberamos la memoria }
  27.     FreeMem(VerInfo, VerInfoSize);
  28.   end
  29.   else
  30.     { - La versión no está incluida }
  31.     { lanzamos excepción }
  32.     raise EAccessViolation.Create('La información de versión no está incluida');
  33. end;