简单问题,进来看看,有答必给分。。。。。。。。。。。。谢谢!! (10分)

  • 主题发起人 主题发起人 danliyou
  • 开始时间 开始时间
D

danliyou

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1:string;
a1:array[1..10] of byte;
i:integer;
begin
s1:=memo1.Lines.Text;
for i:=1 to 10 do
begin
s:=copy(s1,(2*i-1),2);
a1:=byte($s);//这句话为什么不对呢?
end;
end;
 
s1:=byte($s);//这句话hehe不对呢?
 
s2:=byte($s);应为
a1:=byte($s);
可是还是不对?
头晕了................
 
你的s1里面输入的是不是0-9 and a,b,c,d,e,f
如果不是肯定出错
 
我读书少,问个笨问题:$干什么用。直接用a1:=byte(s)行不?
 
是十六进制数字。
 
$代表16进制,
s:=$+copy(s1,(2*i-1),2);
ss:=strtoint(s)(自己定义一个int类型的)
a1:=inttostr(ss);
这样是不是能达到你的要求
 
a1:=inttostr(ss);
左边字节,右边是字符串怎么行呢?
 
直接用$加字符串是不能实现你需要的功能的,
就好像你的窗口上有个edit1,然后你写道:
var
a,b,c:String;
begin
a:='E';
b:='dit1';
c:=(a+b).Text;
end;
这是肯定不行的,因为a+b得到的是字符串而不是TEdit类型。
我认为你可以这样做:
s:='$'+copy(s1,(2*i-1),2);
整型变量:=StrToInt(s);
al:=Byte(IntToStr(整型变量));
 
刚才写错了
只要
s:=$+copy(s1,(2*i-1),2);
a1:=strtoint(s);
就行了


 
呵呵,也写错了,是
al:=Byte(整型变量);
 
各位我现在想完成的功能是:
在Memo框中输入十六进制数字,然后依次取两个作为一个字节,
将其赋给a1数组(a1是byte)。
比如说:在memo框中输入:1234567890abcdef,先取出‘12’送给a1[1],
再取‘34’送给a1[2],依次这样取完。
十分感谢各位的回答。
 
各位有空来看看呀。
等待中...............
 
怎么没人说话呢?
 
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1:string;
a1:array[1..10] of byte;
i:integer;
begin
s1:=memo1.Lines.Text;
for i:=1 to 10 do
begin
s:=copy(s1,(2*i-1),2);
a1:=byte(StrToInt('$'+s));//好了!
end;
end;
 
多人接受答案了。
 
后退
顶部