C
czonghui
Unregistered / Unconfirmed
GUEST, unregistred user!
本人编写的代码使用(delphi5.0),对string进行操作:
procedure TForm1.BtnOriginClick(Sender: TObject);
var
tmpStr1,tmpStr2,tmpStr3,tmpStr4:string;
sec:int64
begin
sec:=0;
//从ListBox中的第一行取出String的值
//该String是使用CoCreateGuid()函数生成的GUID
tmpStr1:=lbxResult.Items.Strings[0];
//从String中一定位置读出字符,由于GUID每一位字符都在0-9,a-f之内
//即在16进制数的表示范围之内
tmpStr2:=Copy(tmpStr1,2,1);
tmpStr3:=Copy(tmpStr1,4,1);
tmpStr4:=Concat(tmpStr2,tmpStr3);
tmpStr4:=TrimLeft(tmpStr4);
//转换后的tmpStr4的每一位字符都在0-9,a-f之内,在16进制数的表示范围之内
tmpStr4:='$'+tmpStr4;
//将tmpStr4用字符串表示的16进制数转换成整数
sec:=StrToInt64(tmpStr4);//不出现正确的结果!!!
sec:=88-sec;
end;
代码的实际运行情况是第一行(sec:=0;)和最后1行(sec:=88-sec;)不执行,也加不上断点。
倒数第二行执行(sec:=StrToInt64(tmpStr4),但不出正确的结果,结果总显示0(单布调试显示
sec的结果还是0).
以上代码是程序的一部分,程序中有两处代码使用了类似的算法StrToInt64(),一处正常,另一处
(就是以上代码)却不能出现正确的结果。两处代码结构完全相同,只是变量名称不同。将程序重新
编译、重启计算机,将代码移植到delphi4.0,改变变量的名称,,使用StrToInt()代替StrToInt64()
等都没有任何效果。
本人对tmpStr4直接赋值,例如tmpStr:='$4A';程序可以出现正确的结果。这是不是delphi的bug?
请问各位专家,这是什么原因,如何解决?以上代码有什么问题?