例如我在Options里面设置了版本信息,那么我怎么通过自身调用,获取这些版本信息?

解决方案 »

  1.   

    参考下面:
    function GetBuildInfo: string;
    var VerInfoSize: DWORD;
        VerInfo:pointer;
        VerValueSize: DWORD;
        VerValue: PVSFixedFileInfo;
        Dummy: DWORD;
        V1, V2, V3, V4: Word;
    begin
       VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
       if VerInfoSize = 0 then
        begin
         Dummy := GetLastError;
         Result := '0';
        end;   GetMem(VerInfo, VerInfoSize);   GetFileVersionInfo(PChar(ParamStr(0)), 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(V4);
      FreeMem(VerInfo, VerInfoSize);
    end;
      

  2.   

    function GetBuildInfo: string;
    var
      VerInfoSize: DWORD;
      VerInfo:pointer;
      VerValueSize: DWORD;
      VerValue: PVSFixedFileInfo;
      Dummy: DWORD;
      V1, V2, V3, V4: Word;
    begin
       VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
       if VerInfoSize = 0 then
        begin
         Dummy := GetLastError;
         Result := '0';
        end;   GetMem(VerInfo, VerInfoSize);   GetFileVersionInfo(PChar(ParamStr(0)), 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(V4);
      FreeMem(VerInfo, VerInfoSize);
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      showmessage(GetBuildInfo);
    end;
      

  3.   

    这个函数取的是Build,可我想取得整个Module Version Number包括:Major Version ;Minor Version ;Release ; Build
      

  4.   

    if VerInfoSize = 0 then
        begin
         Dummy := GetLastError;
         Result := '0';
        end;
      

  5.   

    修改一下就得到你要的了:包括:Major Version ;Minor Version ;Release ; Build
    修改如下:
    把GetBuildInfo中的Result改成:
    Result := IntToStr(V1)+'.'+IntTostr(V2)+'.'+IntTostr(V3)+'.'+IntTostr(V4);
      

  6.   

    哈哈,果然是,完整的函数应该是:================function GetBuildInfo: string;
    var
      VerInfoSize: DWORD;
      VerInfo:pointer;
      VerValueSize: DWORD;
      VerValue: PVSFixedFileInfo;
      Dummy: DWORD;
      V1, V2, V3, V4: Word;
    begin
       VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
       if VerInfoSize = 0 then
        begin
         Dummy := GetLastError;
         Result := '0';
        end;   GetMem(VerInfo, VerInfoSize);   GetFileVersionInfo(PChar(ParamStr(0)), 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;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      showmessage(GetBuildInfo);
    end;