有关指针转换成数组的问题。(50分)

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

daileking

Unregistered / Unconfirmed
GUEST, unregistred user!
Buffer: Pointer;
我想要对Buffer: 中的每个数以十六进制形式显示到Memo1中,比如‘a’显示0x61等等。
怎么实现?希望能详细一点。谢了。
 
老大,以什么数值结束,还是指定长度.
 
BufferLength:work
我想把Buffer转换成数组,这样就可以一个一个的操作了。
但是我不知道怎么把指针转换成数组!!!!》》?????
 
a:array of char;
buffer:point;
begin
setlength(a,sizeof(buffer));
move(buffer,a,sizeof(buffer));
for i:=0 to sizeof(buffer) do
inttohex(ord(a),2)
 
怎么在MEmo1中显示呢?
RichEdit1.Text:=RichEdit1.Text+inttohex(ord(a),2);
出错!
Buffer中有不可见字符,比如0x01,0x09,0x0d,等等!
好像不行吧!!!
 
move(buffer,a,sizeof(buffer));
这句在编译时可以通过,但是执行时,会出错!
我的代码完整如下:(是一个串口接受程序)
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
a:array of char;
i:integer;
begin
setlength(a,sizeof(buffer));
move(buffer,a,sizeof(buffer)); //这一句在串口有数据时出错。还有没有别的办法?
for i:=0 to sizeof(buffer) do
inttohex(ord(a),2)
end;
 
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
a:array of char;
i:integer;
begin
setlength(a,BufferLength);
move(buffer^,a[],BufferLength);
for i:=0 to BufferLength-1 do
richedit1.text:=richedit1.text+inttohex(ord(a),2);
end;
 
好像用Tlist来操作方便点
 
可不可以这样
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
buffer:pointer;
tt: pchar;
i:integer;
begin
tt:=buffer;
for i:=0 to bufferlength-1 do
richedit1.text:=richedit1.text+inttohex(ord(tt),2);
end;

 
接受答案了.
 
后退
顶部