为什么没人理的总是我?大侠们,帮帮我! (20分)

  • 主题发起人 主题发起人 小菜鸟
  • 开始时间 开始时间

小菜鸟

Unregistered / Unconfirmed
GUEST, unregistred user!
我做crc校验的一个函数:
Function getcrc(s:string):string;
var
aa:array[0..4] of string;
crc,i,j:integer;
begin
crc:=0;
for i:=0 to 4 do
aa:='$'+s[i*2]+s[i*2+1];{把edit1中的字符分开存放,有没有别的简单办法}
for j:=0 to 4 do
begin
crc:=crc xor strtoint(aa[j]);
crc:=crc_table[crc];{查表}
end;
crc:=crc xor $ff;
result:=inttohex(crc,2);
end;
当我再buttonclick中调用
getcrc(edit1.text);
出现这样的错误:
project project1.exe raised exception class
EconvertError with message''$
各位大侠帮帮我吧!
 
问题在于
StrToInt ---> StrToIntDef
InttoHex
 
对不起,
我是小菜鸟一个
能不能说明白一点
谢谢!
 
aa:='$'+s[i*2]+s[i*2+1];{把edit1中的字符分开存放,有没有别的简单办法}
改成
aa:='0X'+s[i*2]+s[i*2+1];
就可以了。
 
看看你的edit1中的字符是不是有0..9,a..f之外的字符???????
要知道16进制数是由0..9和a..f这16个数组成啊!!
 
测试了一下,发觉使用$和ox是一样的,你的问题不是出在这里。
那么应该是s[i*2]+s[i*2+1]为空,
就是说aa成了$,而不是$1什么的,当然出错了。
aa:='$'+s[i*2]+s[i*2+1];
这样改吧。
aa:='$'+s[i*2]+s[i*2+1];
if trim(aa)='$' then aa:='$0';
 
你的循环控制是0到4,可是字符串是从1开始计数的,这里错了
aa:='$'+s[i*2]+s[i*2+1];
改为
aa := '$' + s[i*2+1] + s[I*2+2]
 
在请教一下
aa钟的字符的确为0
但是为什么
我在edit1.text中输入abcdef1234
为什么aa还是0哪
 
哦,谢谢拉
 
后退
顶部