简单问题,有答必有分。。。。进来看看呀!!!

danliyou 2002-04-27 09:50:58
各位我现在想完成的功能是:
在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;//s1='1234567890abcdef'
for i:=1 to 10 do
begin
s:=copy(s1,(2*i-1),2);//第一次取‘12’,第二次取‘34’......
a1[i]:=byte($s);//将‘12’做为一个字节送给a1[1],‘34’做为一个字节
送给a2[2]......这句话为什么不对呢?
end;
end;
十分感谢各位的回答。
...全文
49 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xutantan 2002-04-29
  • 打赏
  • 举报
回复
Charles Calvert的《Delphi 2 程序设计大全》里有例子,不过挺复杂的,编了一个函数把字符转入16进制,和楼上的代码神似,好像更完善一些。可以一看。
xutantan 2002-04-29
  • 打赏
  • 举报
回复
gz
hxshanji 2002-04-27
  • 打赏
  • 举报
回复
还有。
$55的意思是十六进制的55。。。。。
hxshanji 2002-04-27
  • 打赏
  • 举报
回复

S是string怎么可以用byte!!当然错

不用byte用strtoint就可以了
danliyou 2002-04-27
  • 打赏
  • 举报
回复
那我看过subf[1]:=byte($55)是对的。
现在之不过是把55换为屹屹变量而已,就不行了。无奈呀。
King_Dragon 2002-04-27
  • 打赏
  • 举报
回复
function IntToHex(Value: Integer; Digits: Integer): string; overload;将整形转换为16进制;
例子:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
i := StrToInt(copy(Trim(Edit1.text),1,2));
label1.Caption := IntToHex(i,1);
end;
jiaorg 2002-04-27
  • 打赏
  • 举报
回复
a[1]是只能放一个字符,怎么可以放‘12’
你可以半则转换成HEX后在给他
danliyou 2002-04-27
  • 打赏
  • 举报
回复
大家能给点帮助吗???
感谢呀!!!
ggdw 2002-04-27
  • 打赏
  • 举报
回复
是一道算术题哦·~
================================================================

delphi菜鸟联盟 http://bbs.at.8800.org 欢迎你的到来!!!
我们是菜鸟,我们怕谁??
大菜鸟(沉默的高羊)的QQ:16730133 Email:ggdw@cn99.com
╭══╮ 
╭╯ΘΘ║ 
╰⊙═⊙╯。oо○ 
    
delphi菜鸟联盟灌水专用!!!

hxshanji 2002-04-27
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1:string;
al:array[1..8] of byte;
i:integer;
begin
//s1:=memo1.Lines.Text;
s1:='1234567890abcdef';
setlength(s,2);
for i:=1 to 8 do
begin
s:=copy(s1,(2*i-1),2);
if byte(s[1])>=97 then al[i]:=(byte(s[1])-87)*16
else if byte(s[1])>=65 then al[i]:=(byte(s[1])-55)*16
else al[i]:=(byte(s[1])-48)*16;
if byte(s[2])>=97 then al[i]:=al[i]+(byte(s[1])-87)
else if byte(s[2])>=65 then al[i]:=al[i]+(byte(s[1])-55)
else al[i]:=al[i]+(byte(s[2])-48);
end;
end;

存在al中的是18,52,86,120,144,170,204,238也就是十六进的12h,34h,56h,78h,90h,abh,cdh,efh
skill2002study 2002-04-27
  • 打赏
  • 举报
回复
用强制转换命令
danliyou 2002-04-27
  • 打赏
  • 举报
回复
是呀,我知道的.
例如:现在就是在memo框中输入'1234567890abcdef',
第一次取出12作为a1[1],第二次取出34作为a1[2],第三次取出56作为a1[3]......
依次类推.注意数组a1为byte类型.
怎么实现呢?
谢谢!!

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧