delphi2007中软件生成含有版本号,如何比较两个版本大小?请高手指教。

解决方案 »

  1.   

    function GetVersion(FileName:string):string;   //获得文件版本号
    var   
      InfoSize,   Wnd:   DWORD;
      VerBuf:   Pointer;
      szName:   array[0..255]   of   Char;
      Value:   Pointer;
      Len:   UINT;
      TransString:string;
    begin
      Result := '';
      InfoSize := GetFileVersionInfoSize(PChar(FileName),Wnd);
      if InfoSize<>0 then
      begin
        GetMem(VerBuf,InfoSize);
        try
          if GetFileVersionInfo(PChar(FileName),Wnd,InfoSize,VerBuf) then
          begin
            Value:=nil;
            VerQueryValue(VerBuf,'\VarFileInfo\Translation',Value,Len);
            if Value<>nil then
            TransString:=IntToHex(MakeLong(HiWord(Longint(Value^)),LoWord(Longint(Value^))),8);                Result:='';
      //      StrPCopy(szName,'\StringFileInfo\'+Transstring+'\ProductVersion');
            StrPCopy(szName,'\StringFileInfo\'+Transstring+'\FileVersion');
            if VerQueryValue(VerBuf,szName,Value,Len) then
              Result:=StrPas(PChar(Value));
          end;
        finally
          FreeMem(VerBuf);
        end;
      end;
    end;
    这样获得版本号,然后比较大小,如果两个版本分别是:1.0.0.10和1.0.0.2,比较之后,后者版本号大。怎么办呢?是不是要把版本号分开一个一个比较?
      

  2.   

    不能比较字符串
    直接比较版本信息,是个DWORD值
      

  3.   

    function   GetVersion(FileName:string):string;       //获得文件版本号
    版本号是string类型的,怎么比较版本信息?