我想获得WriteFile
缓冲区的大小,以了解我必须在缓冲区中写入多少数据。
缓冲区数据类型是指针Buffer:Pointer
,我尝试使用SizeOf(Buffer)
或SizeOf(@Buffer)
,但SizeOf
不返回' WriteFile' ,它只返回指针的大小'数据类型(8)。
我该怎么办?
{对不起我的英语不好}
答案 0 :(得分:4)
如果只有指向它的指针,则无法检索缓冲区的大小。您必须独立于指针跟踪缓冲区大小。
执行此操作的常用方法是将大小保存在与指针一起存储的单独变量中。将大小传递给任何需要它的函数。
另一种方法是使用动态数组。编译器和运行时自动跟踪动态数组的长度,可以使用Length
查询。您可以使用简单的强制转换获取指向缓冲区的指针:
var
Buffer: TBytes; // dynamic array of byte
....
Buffer := ...; // initialize
WriteBuffer(Pointer(Buffer), Length(Buffer));