Delphi DLL文件版本

Delphi DLL文件版本,delphi,dll,versioning,Delphi,Dll,Versioning,我有一个应用程序,它使用DLL生成fastReports文件 当我需要更改报表数据结构时,我只更改此DLL并将其分发给应用程序的所有用户。我如何保证在开始之前所有版本都是最新版本 如何从DLL文件生成/提取此信息。使用 获取文件版本需要预先设置文件版本。此函数将以字符串形式获取文件版本: function FileVersionGet( const sgFileName : string ) : string; var infoSize: DWORD; var verBuf: pointer

我有一个应用程序,它使用DLL生成fastReports文件

当我需要更改报表数据结构时,我只更改此DLL并将其分发给应用程序的所有用户。我如何保证在开始之前所有版本都是最新版本

如何从DLL文件生成/提取此信息。

使用


获取文件版本需要预先设置文件版本。

此函数将以字符串形式获取文件版本:

function FileVersionGet( const sgFileName : string ) : string;
var infoSize: DWORD;
var verBuf:   pointer;
var verSize:  UINT;
var wnd:      UINT;
var FixedFileInfo : PVSFixedFileInfo;
begin
  infoSize := GetFileVersioninfoSize(PChar(sgFileName), wnd);

  result := '';

  if infoSize <> 0 then
  begin
    GetMem(verBuf, infoSize);
    try
      if GetFileVersionInfo(PChar(sgFileName), wnd, infoSize, verBuf) then
      begin
        VerQueryValue(verBuf, '\', Pointer(FixedFileInfo), verSize);

        result := IntToStr(FixedFileInfo.dwFileVersionMS div $10000) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionMS and $0FFFF) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionLS div $10000) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionLS and $0FFFF);
      end;
    finally
      FreeMem(verBuf);
    end;
  end;
end;
函数FileVersionGet(const sgFileName:string):string;
var-infoSize:DWORD;
var-verBuf:指针;
变量版本化:UINT;
变量wnd:UINT;
var FixedFileInfo:PVSFixedFileInfo;
开始
infoSize:=GetFileVersioninfoSize(PChar(sgFileName),wnd);
结果:='';
如果infoSize为0,则
开始
GetMem(verBuf,infoSize);
尝试
如果是GetFileVersionInfo(PChar(sgFileName)、wnd、infoSize、verBuf),那么
开始
VerQueryValue(verBuf,'\',指针(FixedFileInfo),版本化;
结果:=IntToStr(FixedFileInfo.dwFileVersionMS div$10000)+'+
IntToStr(FixedFileInfo.dwFileVersionMS和$0FFFF)+'。'+
IntToStr(FixedFileInfo.dwFileVersionLS分区$10000)+“+
IntToStr(FixedFileInfo.dwFileVersionLS和$0FFFF);
结束;
最后
FreeMem(verBuf);
结束;
结束;
结束;

JCL拥有JclFileVersion。两行或三行就完成了。

获取Dll版本:

function GetDllVersion: string;  //Run in dll project
var
  fn: string;
begin
  fn := GetModuleName(HInstance); 
  Result := FileVersionGet(fn);  // use Matthias's function
end;

版本信息应包含在项目的
project/Options
下。对于.DLL项目,版本信息面板处于禁用状态。如何启用它来激活和设置版本信息?对于.DLL项目,“版本信息”面板处于禁用状态。如何启用它来激活和设置版本信息?@drokie:Add{$R*.res}到dll的项目文件中。