我有一个带有一些数据的字节数组......
CommandBytes : array of byte;
Run Code Online (Sandbox Code Playgroud)
我有一个VCL功能,可以向蓝牙打印机发送命令.VCL功能原型就是这样
SendData(PAnsiChar, Cardinal);
Run Code Online (Sandbox Code Playgroud)
"此方法将字节从内存缓冲区传输到打开的设备"
我怎样才能正确传递字节数组以向打印机发送命令?
我是Delphi的新手,我试过:
SendData(PAnsiChar(@CommandBytes[0]), SizeOf(CommandBytes));
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
提前致谢.
SizeOf()在动态数组上产生指针的大小.动态数组是一种引用类型,表示为指向数组第一个元素的指针.因此SizeOf()返回指针的大小.这对你没用.
您需要使用Length():
SendData(PAnsiChar(@CommandBytes[0]), Length(CommandBytes));
Run Code Online (Sandbox Code Playgroud)
该Length()函数返回数组中的元素数.
更重要的是,我可能会简化你的演绎方式PAnsiChar.你可以这样简洁地做到这一点:
SendData(PAnsiChar(CommandBytes), Length(CommandBytes));
Run Code Online (Sandbox Code Playgroud)
这是有意义的,因为CommandBytes作为对动态数组的引用,指向数组的第一个元素.
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |