【问题标题】:How to pass pointer to array of byte to function?如何将指向字节数组的指针传递给函数?
【发布时间】:2018-08-18 13:22:21
【问题描述】:

我正在尝试将指向数据的指针传递给函数。但我收到错误不兼容的类型:'Array' 和'TBytes'。我不知道如何解决它。

type TBytes = array of byte;
type PTBytes = ^TBytes;

procedure Dictionary.WriteData(Data: PTBytes);
begin
  try
    DataStream.Write(Data[0], sec[sid].grp[grp].META.dataLength);
  finally
  end;
end;

我之前试过

pData: ^TBytes;
PData := Data^;

我终于打电话了

writeData( data);

但它会产生错误指针类型要求

编辑

我已将过程 appendData 替换为 writeData。现在更轻松了。

【问题讨论】:

  • 将指针类型命名为PBytes 会更惯用。 (更一般地,给定一个类型TMyThing,我们经常定义PMyThing = ^TMyThing。)
  • 但是你根本不使用pData。最好描述真正的问题。
  • TBytes 的变量本身就是一个指针。
  • 我认为您至少应该编辑您的代码(以及您已接受的答案),以便它们不那么荒谬(不使用输入数据并且对局部变量进行无用操作)。同时-1和VTC。
  • @MartynA:问题已更新。希望它现在更有意义。

标签: delphi


【解决方案1】:

因为 IVO GELOV 没有更新他的代码和/或没有删除他的答案,所以我正在添加我正在使用的当前代码。

type TBytes = 字节数组;

过程 Dictionary.WriteData(var Data: TBytes);

begin
  try
    DataStream.Write(Data[0], sec[sid].grp[grp].META.dataLength);
  finally
  end;
end;

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多