在DELPHI里建一个工程 如果在代码里面知道自己本身的版本信息?

解决方案 »

  1.   

    注意,是窗体DLL 我用A.EXE 调用窗体B.DLL 那么我在B.DLL中怎么知道自己B.DLL的版本信息呢
      

  2.   

    function GetBuildInfo(const FileName:string): string; //////////// 读取版本信息
    var
      VerInfoSize: DWORD;
      VerInfo: pointer;
      VerValueSize: DWORD;
      VerValue: PVSFixedFileInfo;
      Dummy: DWORD;
      V1, V2, V3, V4: Word;
    begin
      VerInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
      if VerInfoSize = 0 then
      begin
        Dummy := GetLastError;
        Result := '0';
      end;
      GetMem(VerInfo, VerInfoSize);
      GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, VerInfo);
      VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
      with VerValue^ do begin
        V1 := dwFileVersionMS shr 16;
        V2 := dwFileVersionMS and $FFFF;
        V3 := dwFileVersionLS shr 16;
        V4 := dwFileVersionLS and $FFFF;
      end;
      Result := IntToStr(V1) + '.' + IntToStr(V2) + '.' + IntToStr(V3) + '.' + IntToStr(V4);
      FreeMem(VerInfo, VerInfoSize);
    end;窗体加载时候
    var
      fn:string ;
    begin
      fn:=GetBuildInfo(ExtractFilePath(Application.ExeName) + '\Lib\wms_billUseOutRp.xlp');
    //因为是A.EXE主程序调用 \Lib\wms_billUseOutRp.xlp
      //////////// 窗体加载
      cxPropertiesStore1.StorageName := 'c:\wms_billUseOutRp.' + fn + '.ini';
      cxPropertiesStore1.StorageType := stIniFile;
      cxPropertiesStore1.Active := True;
      cxPropertiesStore1.RestoreFrom;
      cxPropertiesStore1.Active := False;
      ///////////
    //////////// 窗体关闭保存
      cxPropertiesStore1.Active := True;
      cxPropertiesStore1.StoreTo(True);
      cxPropertiesStore1.Active := False;
    /////////////////////////////////