Delphi2010怎样获取程序内部自身版本?

时间:2024-08-08 22:34:20

用原来的GetFileVersionInfo仅仅能获取Delpi7的程序版本,用在Delphi2010中就无论用了

//------ 获取文件版本

function F_GetFileVersion(FN: string): string;

var

  Temp, InfoSize: Cardinal;

  FileData: Pointer;

  FileInfo: PVSFixedFileInfo;

begin

  Result := '';

  if not FileExists(FN) then Exit;



  InfoSize := GetFileVersionInfoSize(PChar(FN), Temp);

  if InfoSize  = 0 then Exit;       //没有版本

  FileData := GetMemory(InfoSize);

  try

    if not GetFileVersionInfo(PChar(FN), 0, InfoSize, FileData) then Exit;

    if not VerQueryValue(FileData, '\', Pointer(FileInfo), Temp) then Exit;

    Result := Format('%d.%d.%d.%d',

      [FileInfo.dwFileVersionMS div $10000,

       FileInfo.dwFileVersionMS mod $10000,

       FileInfo.dwFileVersionLS div $10000,

       FileInfo.dwFileVersionLS mod $10000]);

  finally

    FreeMemory(FileData)

  end;

解决方法是用第三方控件Rave。里面有个RzVersionInofo,放上去编译的时候勾选Including version information in project,就能够获取版本了,获取方法:Showmessage(RzVersionInofo1.FileVersion);