X
xgcs
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟发的一个帖子,为了感谢回答的网友,送了100分,那个帖子就不见了?为么啊?[!]
还有问题没解决呢...我只好拷贝过来请教更多的富翁.....
原文题目 mscomm接收来的二进制数据,如何转换成十六进制并显示在edit中?
如题.试了好多方法,总是类型不匹配...郁闷ing...
接受来得数据存在一个variant变量buffer中,我需要将其转换为十六进制文本..
delphi7中有bintohex函数,可是我怎么试也不能满足函数对参数类型的要求,总是说我给它的参数类型不匹配高手救救小弟啊.在线等..............
china_delphi兄的回复:
var
s:string;
a : array of byte;
i:integer;
begin
setlength(a,bufferlength);
move(^buffer,a,bufferlength);
for i:=1 to bufferlength do
s := s + inttohex(a,2)+' ';
edit1.text :=s;
end;
新问题(我得回复)
修改后的程序,第一次启动能接受,多发几次数据就出现一下错误(弹出一错误提示框):
project project1.exe raised exception class EAccessViolation with message
'Access violation at address 00464B1C' in module 'project1.exe'.Read of address 00002012'.Process stopped. Use Step or Run to continue.
另外,move(^buffer,a,bufferlength);好像有错误,这个符号"^"好像不认,我把^去掉了,即
move(buffer,a,length(buffer))
还有,接收成功的时候,接收数据也不正确.是不是我得发送程序不正确?(即在一个edit输入十六进制文本,转换成二进制data发送)这是我自己写的发送程序,烦请高手指教哈:
s1:=edit1.Text;//edit1中输入十六进制的文本.
for i:=1 to length(s1) do
mscomm1.Output:=chr(strtoint('$'+s1));//将每个字符依次转换为data发送.
初学delphi,问题低级的很,望高手不吝指教啊.另,china_delphi兄的100分已经送上.
还是在线等........
还有问题没解决呢...我只好拷贝过来请教更多的富翁.....
原文题目 mscomm接收来的二进制数据,如何转换成十六进制并显示在edit中?
如题.试了好多方法,总是类型不匹配...郁闷ing...
接受来得数据存在一个variant变量buffer中,我需要将其转换为十六进制文本..
delphi7中有bintohex函数,可是我怎么试也不能满足函数对参数类型的要求,总是说我给它的参数类型不匹配高手救救小弟啊.在线等..............
china_delphi兄的回复:
var
s:string;
a : array of byte;
i:integer;
begin
setlength(a,bufferlength);
move(^buffer,a,bufferlength);
for i:=1 to bufferlength do
s := s + inttohex(a,2)+' ';
edit1.text :=s;
end;
新问题(我得回复)
修改后的程序,第一次启动能接受,多发几次数据就出现一下错误(弹出一错误提示框):
project project1.exe raised exception class EAccessViolation with message
'Access violation at address 00464B1C' in module 'project1.exe'.Read of address 00002012'.Process stopped. Use Step or Run to continue.
另外,move(^buffer,a,bufferlength);好像有错误,这个符号"^"好像不认,我把^去掉了,即
move(buffer,a,length(buffer))
还有,接收成功的时候,接收数据也不正确.是不是我得发送程序不正确?(即在一个edit输入十六进制文本,转换成二进制data发送)这是我自己写的发送程序,烦请高手指教哈:
s1:=edit1.Text;//edit1中输入十六进制的文本.
for i:=1 to length(s1) do
mscomm1.Output:=chr(strtoint('$'+s1));//将每个字符依次转换为data发送.
初学delphi,问题低级的很,望高手不吝指教啊.另,china_delphi兄的100分已经送上.
还是在线等........