一个奇怪的问题!!!!!!(10分)

  • 主题发起人 主题发起人 hksoobe
  • 开始时间 开始时间
H

hksoobe

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,s:shortstring;
xh,yh:byte;
begin
s:='2406@598#';
xh:=pos('@',s);
yh:=pos('#',s);
x:=copy(s,1,xh-1);
y:=copy(s,xh+1,yh-xh-1);
showmessage(x+' '+y);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s:shortstring;
x,y,xh,yh:byte;
begin
s:='2406@598#';
xh:=pos('@',s);
yh:=pos('#',s);
x:=strtoint(copy(s,1,xh-1));
y:=strtoint(copy(s,xh+1,yh-xh-1));
showmessage(inttostr(x)+' '+inttostr(y));
end;
两个结果应该是一样的,可为什么出来的结果不同呢?
我只是把类型转过去又转回来了一下,为什么结果就不同了?????????
 
s:shortstring;
x,y,xh,yh:byte;
begin
s:='2406@598#';
xh:=pos('@',s);
yh:=pos('#',s);
x:=strtoint(copy(s,1,xh-1))
//copy(s,1,xh-1)=2406>byte(255) ???????
//将x 定义成Integer
y:=strtoint(copy(s,xh+1,yh-xh-1));
showmessage(inttostr(x)+' '+inttostr(y));
 
没注意到!!!!谢谢!!!!!!!
 
上面的结果是是正确的

-=----------------------------------------
byte 取 0--255
下面是将 2406 ($966) 转换成 int 后再给 byte 丢失高 3字节 得 102 ($66)
所以显示 102 86

over
 

Similar threads

后退
顶部