大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 用DELPHI制作在线程序升级信息查询

用DELPHI制作在线程序升级信息查询

时间: 2021-07-31 作者:daque

    越来越多的步调扶助在线晋级功效,正文引见的即是怎样从网站获得晋级消息。这边我重要运用本子消息来检验和测定能否须要载入晋级本子。大概道理如次:  1、安置消息文本到网站。  2、运用tnmhttp从网站消息文本获得文本实质。  3、领会文本领会所需消息。  4、比拟步调本子供给晋级消息。    开始,咱们安置一个消息文本到本人的网站,这个文本有本人的文献方法,我设置了如次的方法:  [update]    <ver>1.79.9.25</ver>    <url>http://delphibox.com/softm/3_update.zip</url>    <date>2002-9-25</date>  [/update]咱们不妨将它生存为update.txt文献,运用[]<>的标示符将消息分门别类,这边包括了步调名、本子、革新日子和载入地方。这边我纵然上传到http://2ccc.com/update.txt。    而后咱们运用tnmhttp组件从网站获得此文献的实质:function tform1.getupdatetext:string;begin  nmhttp1.inputfilemode := false;  nmhttp1.outputfilemode := false;  nmhttp1.reportlevel := status_basic;  nmhttp1.get('http://2ccc.com/update.txt'); { 获得网站文本 }  result:=nmhttp1.body;end;    获得文本此后,咱们要将个中的消息辨别,我运用了如次的因变量:function tform1.analyseupdate(body:string;var update:tupdate):boolean;var  tmpstr,ver:string;  function centerstr(src:string;before,after:string):string;  { 这个因变量用来辨别两个字符串中央的字符串,    比方 ..('delphibox.com','delphi','.com')=>'box'。 }  var    pos1,pos2:word;  begin    pos1:=pos(before,src)+length(before);    pos2:=pos(after,src);    result:=copy(src,pos1,pos2-pos1);  end;begin  tmpstr:=centerstr(body,'update'); { 获得步调名间的晋级消息 }  if tmpstr='' then    result:=false else { 找不到此文献晋级消息 }  begin    ver:=centerstr(tmpstr,'<ver>','</ver>');    update.version:=separateverstr(ver); { 领会本子 }    update.date:=strtodate(centerstr(tmpstr,'<date>','</date>')); { 领会日子 }    update.url:=centerstr(tmpstr,'<url>','</url>'); { 领会晋级地方 }    result:=true;  end;end;个中tupdate是我设置的消息的记载方法:  tsimpleversion=record  { 简化的本子消息 }    dwproductversionms: dword; { 主本子 }    dwproductversionls: dword; { 辅本子 }  end;  tupdate=record       { 晋级消息 }    name:string[63];  { 步调名 }    version:tsimpleversion; { 本子 }    date:tdate;  { 日子 }    url: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

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.