1

我有一个包含一些数据的字节数组...

CommandBytes : array of byte;

我有一个向蓝牙打印机发送命令的 VCL 功能。VCL函数原型是这个

SendData(PAnsiChar, Cardinal);

“此方法将字节从内存缓冲区传输到打开的设备”

如何正确传递字节数组以向打印机发送命令?

我是德尔福的新手,我试过:

SendData(PAnsiChar(@CommandBytes[0]), SizeOf(CommandBytes));

但它不起作用......

提前致谢。

4

2 回答 2

7

SizeOf()在动态数组上产生指针的大小。动态数组是一种引用类型,表示为指向数组第一个元素的指针。因此SizeOf()返回指针的大小。这对你没有用。

您需要Length()改用:

SendData(PAnsiChar(@CommandBytes[0]), Length(CommandBytes));

Length()函数返回数组中元素的数量。

更重要的是,我可能会简化您转换为PAnsiChar. 你可以像这样更简洁地做到这一点:

SendData(PAnsiChar(CommandBytes), Length(CommandBytes));

这很有意义CommandBytes,因为作为对动态数组的引用,它指向数组的第一个元素。

于 2013-04-09T08:27:05.313 回答
1

SizeOf(CommandBytes)返回指针的大小。

用于Length(CommandBytes)获取数组中的元素计数,在本例中是分配的缓冲区大小,因为 SizeOf(byte) = 1。

于 2013-04-09T08:27:03.270 回答