我開發了一個程式,客戶端的版本是,1.0.0.0,報務器的版本是:1.0.0.1,在程式裡我怎樣進行版本比較?
看了其它前輩的之後,抄到下面後,我就不知道怎樣比較客戶端與服務器端的不同了?function TMainForm.GetVersionInfo:String;
var
  VerInfoSize:DWORD;
  VerInfo:Pointer;
  VerValueSize:DWORD;
  VerValue:PVSFixedFileInfo;
  Dummy:DWORD;
  V1,V2,V3,V4:DWORD;
begin
  VerInfoSize:=GetFileVersionInfoSize(PChar(ParamStr(0)),Dummy);
  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;

解决方案 »

  1.   

    看你的客户端和服务器怎么通讯了如果是用的数据库,把这个版本写到数据库里来读取如果是TCP\IP、SOCKET通讯的话,发个数据包接受一下就行了阿
      

  2.   

    我说个办法给你吧,不需要特殊的服务器程序,而且一般都这么搞的,主要是方便灵活。在服务器端开设一个FTP或者http,把客户端的最新程序放在FTP或者http上,为了减少比较版本的的数据量,你在FTP上同时放上一个updata.ini文件,里面写上这个FTP上的最新客户端的版本。客户端,每次启动的时候,首先启动更新程序,更新程序首先从FTP上下载updata.ini文件,怎么下载?用ShellAPI去搞,copy一个过来就可以了。然后检查下载的updata.ini和本地客户端的updata.ini中记录的版本是不是一样,不一样的画,就下载客户端覆盖(copy)。更新程序完成后,就启动客户端程序,然后自己结束掉。还有的,updata.ini中不直接记录版本号,而是记录文件的散列,更新程序比较的是客户端程序的散列是不是和服务器上的一致来判断的,这种方法用在客户端需要严格保证文件来源的地方。
      

  3.   

    to  chijingde(AD) :
    樓上教訓的是,我用Delphi不久,才2個多月,確實暈得很!謝謝啦!