0

这是我试图调用的函数:

function TPipeClient.Write(var Buffer; Count: Integer): Boolean;

我有另一个类是要写入的 tMessages 队列:

tMessage = class
  public
    function getData(): PByte; virtual; abstract;
    function getLen(): integer; virtual; abstract;
end;

因此,当我尝试调用时: TPipeClient.Write 像这样:

FClient.Write(queue[pos].getData(), queue[pos].getLen());

(Fclient 是一个 tClientPipe,队列是 tMessage 的数组)

我收到一条错误消息,说没有匹配的重叠版本,所以我做了一个:

FClient.Write(@(queue[pos].getData()), queue[pos].getLen());

我得到另一个编译错误:需要变量。

关于如何投射它以便它通过并发送出去的任何想法?

4

1 回答 1

2

这是一个无类型var参数,文档中有详细介绍。简而言之,您需要传递一个变量。

在您的情况下,您需要定义一个:

var
  P: PByte;

然后你可以像这样调用你的函数:

P := queue[pos].getData();
FClient.Write(P^, queue[pos].getLen());
于 2013-09-07T19:48:13.517 回答