我设计的一个通信程序,用clientsocket和serversocket进行通信。客户端发出命令代号后服务端再返回相关信息。
我设置的要求文件夹信息时,服务端以'||'为分割符将文件、文件夹的名称、大小连接成一个string,然后判断string长度,超过8kb则舍弃8k后面的部分,再发给客户端。由客户端进行分解显示到listview中。
但是在请求windows这个大内容的文件夹,99%会出错,错误还很奇怪:EcovertError?而且delphi往往停在我设置的显示远程路径的代码上,或停在代码结束处。
我请求其他的文件夹时都没有错,一切按预定目标进行,就是windows文件夹报错。
下面是我的代码:begin
      path.Add(temppath);   //path为Tstringlist,记录当前远程文件夹路径
      temp1:=copy(msg,4,3);   //msg前6位为信息的类别记号
      if temp1='215' then
        showmessage('信息残缺');  //判断是否有舍弃(大于8k),在请求windows文件夹时没有弹出这个消息
      if length(msg)=6 then
        showfile('')          //showfile(m:string)整理并显示文件信息,m为返回的文件信息
      else
      begin
        temp1:=copy(msg,7,lh-6);
        showfile(temp1);      //若有信息,显示。
      end;
      ooo:=path.Count;        //这句在请求windows文件夹时报错,什么EcovertError的
      showmessage(inttostr(ooo));
      path2:=strstofile(path);   //将Tstringlist转化为string,有时候也在这里报错
      window.addr.Caption:=path2;
    end;

解决方案 »

  1.   

    检查ooo的类型,是否是类型大小的限制
      

  2.   

    我把
    ooo:=path.Count;          
    showmessage(inttostr(ooo));这二句去掉了,问题依旧。
    问题出现在path2:=strstofile(path); 
    还是什么EcovertError的。
    而且,我请求其他的大文件夹,可以正常弹出“信息残缺”并显示,唯有windows目录一打开就出错。
      

  3.   

    如果你得path是公用得,有可能path已经被clear掉,或责destroy掉。你可以检查哈。