ShortString; {
下载地址 }
end;
而SeparateVerStr()函数是将得到字符串形式的升级版本信息转换为简化的版本信息格式:
function SeparateVerStr(s:String):TSimpleVersion;
const
Separator=''.''; { 以为''.''分割符 }
var
p,v1,v2,v3,v4:WORD;
begin
if Length(s)=0 then Exit;
p:=pos(Separator, s);
v1:=StrToInt(copy(s,1,p-1));
Delete(s,1,p);
p:=Pos(Separator,s);
v2:=StrToInt(copy(s,1,p-1));
Delete(s,1,p);
p:=Pos(Separator,s);
v3:=StrToInt(copy(s,1,p-1));
Delete(s,1,p);
v4:=StrToInt(s);
Result.dwProductVersionMS:=v1*$10000+v2;
Result.dwProductVersionLS:=v3*$10000+v4;
end;
最后要做的就是比较文件的版本信息,先得到自己的版本,我使用如下的函数:
function GetBuildInfo(FName:string):TSimpleVersion; { 得到自身版本信息 }
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(FName), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, ''\'', Pointer(VerValue), VerValueSize);
with VerValue^ do
begin
Result.dwProductVersionMS := dwFileVersionMS; { 主版本 }
Result.dwProductVersionLS := dwFileVersionLS; { 辅版本 }
end;
FreeMem(VerInfo, VerInfoSize);
end;
然后使用如下的函数比较网站的升级版本和现在的版本,如果返回TRUE,说明有新版本文件:
function VersionCheck(OriVer,NewVer:TSimpleVersion):Boolean;
begin
if (OriVer.dwProductVersionMS=NewVer.dwProductVersionMS) then
begin
Result:=OriVer.dwProductVersionLS<NewVer.dwProductVersionLS;
end else
begin
Result:=OriVer.dwProductVersionMS<NewVer.dwProductVersionMS
end;
end;
到这里基本方法就介绍完了,我在DELPHI+WIN2000环境调试通过,这里我没有写出完整的代码,在我的主页我做了演示
程序,大家可以
下载慢慢研究。
我的网址是:http://DelphiBox.com 或 http://2ccc.com
如果有
问题可以给我来信交流:mantousoft@vip.163.com
重庆 万重
西安科技学院143信箱 710054