一段程序是用来读取电脑文件的数据,然后转化为系统中的重量的,昨天客户反映,此程序在某些电脑能用,某些不能用,电脑读取文件不缺少,重做系统也没用。并且奇怪的是,还有另外一个.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;
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;
ascjm返回的值会变吗?
仔细看一下,'C:\Program Files\LIDA\AutoCZ.txt'是不是生建时,先被删除然后重建。
也许是某个配置文件,程序第一次运行生成?
应该用ExtractFilePath取路径,再加文件名