想做一个简单的 提示更新
我现在的思路是 
在FTP 上放个 1.txt 并取得 1.txt的修改时间
当用户 使用软件的登陆的时候 会把 配置文件中的时间和 1.txt的修改时间做比较
如果相同 登陆成功 
如果不同 就提示软件有更新 请到网站下载最新版本
不知道哪位有没有更好的方法指点一下
如果我的思路还可以的话
那么应该如何 获取FTP中的1.txt的修改时间
请高手指点一下

解决方案 »

  1.   

    这个话题太难了。
    我建议LZ看一下,AutoUpgrader 的源代码。
      

  2.   

    http协议 LastModify判断文件时间。
      

  3.   

    使用时间来判断文件是否更新是不可靠的,首当其冲的就是你如何保证FTP服务器和客户电脑的时间是一致的?
    既然现在文件升级都使用版本比较,为什么不在配置文件中使用版本呢?
      

  4.   

    在FTP上放置一个配置文件 里面包含版本号信息
    那么应该 如何获取 这个配置文件的版本号信息呢?
      

  5.   

    盒子上很多,去看看吧.
    http://www.2ccc.com/search.asp?keyword=%D7%D4%B6%AF%B8%FC%D0%C2&keyrange=0&Catalog=0&SubCatalog=0&Submit=%CC%E1%BD%BB
      

  6.   

    任何理论都要经过实践的检验,口头探讨只能得出答案中很少的一部分。
    以下给你提供几个文件操作函数,希望能给你帮助(别忘记结贴给分!)
    //获取当前文件的版本号 GetFileVersion
    var
      s: string;
      i: Integer;
    begin
      s := 'C:\WINDOWS\notepad.exe';
      i := GetFileVersion(s);  //如果没有版本号返回 -1
      ShowMessage(IntToStr(i));  //327681 这是当前记事本的版本号(还应该再转换一下)
    end;
    //获取文件的创建时间 FileAge; FileDateToDateTime
    var
      FileName: string;
      ti: Integer;
      dt: TDateTime;
    begin
      FileName := 'c:\temp\Test.txt';
      ti := FileAge(FileName);
      ShowMessage(IntToStr(ti));  //返回: 931951472, 需要转换  dt := FileDateToDateTime(ti);  //转换
      ShowMessage(DateTimeToStr(dt));  //2007-12-12 14:27:32
    end;
      

  7.   

    我的配置文件为1.ini
    [Version]
    Version=1.2
    然后将  s := 'C:\WINDOWS\1.ini';
    返回为-1 未获取版本号
    这个版本号 在配置文件里应该怎么写呢?
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
      var
     IniFile:TIniFile;
      szStr:String;
      T2:String;
      TempList:TStrings;begin
      szStr:=ExtractFilePath(Application.ExeName)+'Test.ini';
      IniFile:=TIniFile.Create(szStr);
      TempList:=TStringList.Create;
      IniFile.ReadSectionValues('Version',TempList);
      T2 := TempList[0];
      Edit1.Text:=T2;
      //Destroy
      IniFile.Free;
      TempList.Free;end;
    此段代码能够将软件客户端配置文件Test.ini中的Version=1.2 附给T2
    那么只要能够获取 FTP服务器上的 1.ini的Version的值
    并附给T3 
    将T2与T3比较 
    不同就提示升级
    现在的问题是如何获取 FTP服务器上的 1.ini的Version的值
    高手指点一下
      

  9.   

    下载到本地,做.ini文件处理。或者下载到内存流,按特定格式处理。
      

  10.   

    客户端的VERSION既然能够读取,为什么服务器端的你读取不了了呢?
      

  11.   

    主要是对网络懂的不多啊
    1.ini 在FTP 服务器上
    我就不知道怎么弄了
      

  12.   

    现在我是否可以把你的问题理解为对一个.ini文件的读写操作?
      

  13.   

    恩 基本上是对.ini的操作
    唯一的区别就是
    一个是客户端的 一个是FTP服务器上的
      

  14.   

    我明白你的意思了,服务端和客户端的程序都是你写的吗?如果是,我建议你可以在服务端和客户端加入以下功能:
    1.客户端一登陆,就读取当前配置文件中的VERSION,然后发送给服务端;
    2.服务端接收到后,读取服务器上的VERSION,在服务器端进行比较
      

  15.   

    我感觉还是 能够读取到 FTP服务器上的配置文件 进行比较
    简单一些
      

  16.   

    是复杂了,你能否将FTP上的INI文件下载到本地?要是能就直接可以在客户端进行判断~判断完后在删除
      

  17.   

    呵呵 FTP是自己的可以下载
    我现在的问题就是 如何把ini文件下载到本地 和比较之后的删除啊
      

  18.   

    不要用txt 用ini , Inifiles API,  你可以下载一个 IdHTTP控件用来下载 ini文件,例:use Inifiles,IdHTTP
    var DownloadFile:TFileStream;
    DownloadFile:=TFileStream.Create(ExtractFileDir(Application.ExeName)+'\update.ini,fmCreate);
    IdHTTP1.Get('服务器地址',DownloadFile);
    except on E:Exception do
    begin
      showmessage('网络未连接将无法检测到更新程序');
    end;
    end;
    DownLoadFile.Free;
      

  19.   

    服务器 ini文件:['WebService config]
    version=2本地 ini文件
    [LocalService config]
    version=1var iniF:TIniFile,version1:string,version2:string;
    iniF:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'/下载的ini文件);version1:=iniF.ReadString('WebService config','version','');
    iniF:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'/本地的ini文件);
    version2:=iniF.ReadString(LocalService config','version','');
    比较  version1 和 version2
    然后更新,更新完删除下载的ini文件下载文件也是用 IdHTTP1.Get()