一段程序是用来读取电脑文件的数据,然后转化为系统中的重量的,昨天客户反映,此程序在某些电脑能用,某些不能用,电脑读取文件不缺少,重做系统也没用。并且奇怪的是,还有另外一个.exe程序,也用到了同样的这段程序,读取重量。在同一个电脑上,这个不能用,而另外一个.exe文件就能用。这可能会是什么方面的原因?代码如下,出错结果就是提示“磅单数据丢失”:
if FileExists('C:\Program Files\LIDA\AutoCZ.txt') then   //liubo
  begin
    mjjsjk[0]:=StrToInt(ascjm);  //将 sTemp中的字符串转化为整型,赋值给数组
    mgbcs:=1;
    //如果五次内数字一样则该值为重量
    while  mgbcs<=2  do
    begin
      ascjm;  //调用ascjm函数
      mjjsjk[mgbcs]:=StrToInt(ascjm); //将 sTemp中的字符串转化为整型,赋值给数组
      kzl:=mjjsjk[mgbcs];
      //显示目前的是第几次重量为多少
      Application.MessageBox(PChar('目前重量:'+floattostr(kzl/1000)),PChar(' 系统提示:'+'('+inttostr(mgbcs)+')'),64);      //如果前后两次重量不相等
      if  kzl<>mjjsjk[mgbcs-1] then
      begin
        mjjsjk[mgbcs-1]:= mjjsjk[mgbcs];    //后一次重量赋给前一次
        mjjsjk[mgbcs]:=0;
      end
      else
      begin
        mgbcs:=mgbcs+1;  //次数加1
      end;
    end;    Result:=Roundex(kzl/1000,3);   // kzl/1000四舍五入转化并保留三位小数
  end
  else
  begin
    Application.MessageBox('磅单数据丢失!','提示',64);
    Exit;
  end;

解决方案 »

  1.   

    ascjm;  //调用ascjm函数这里ascjm怎么孤独的调用
    ascjm返回的值会变吗?
      

  2.   

    磅单数据丢失,这个出现的条件是什么,是FileExists这个条件不满足吗,如果是,就检查它就是了,如果是其他的,自己为每一步操作写个日志,记录一下就清楚了
      

  3.   

    'C:\Program Files\LIDA\AutoCZ.txt'这个是什么文件?
      

  4.   

    应该是这个原因:
    仔细看一下,'C:\Program Files\LIDA\AutoCZ.txt'是不是生建时,先被删除然后重建。
      

  5.   

    FileExists('C:\Program Files\LIDA\AutoCZ.txt')
    也许是某个配置文件,程序第一次运行生成?
      

  6.   

    很明显是fileexist不成立,就是说找不到文件不应该直接写死路径判断,一般程序的相关文件是跟随在程序目录下面的
    应该用ExtractFilePath取路径,再加文件名
      

  7.   

    不会是操作系统权限问题吧,如果是Win7的操作系统,很有可能出现这种问题。必须使用管理员用户登录才能访问!如果不是Win7操作系统。有可能文件正在使用什么的。导致判断错误。
      

  8.   

    我在WIN7上遇见过类似的问题,要管理员权限
      

  9.   

    权限问题, 加入uac 判断, 运行前如果是win7类没有权限的,自动提示需要管理员权限
      

  10.   

    多个程序访问同一个文件?有可能出现这种问题,导致了FileExstis判断错误。比如把这个文件映射到内存中,多个程序共同访问映射的文件。这样应该没有问题!