【发布时间】:2011-05-05 13:25:27
【问题描述】:
我有一个 dll 库。我已经排除了 delphi 类型的内存单元。
这样,函数声明的合适Boolean 类型是什么?
是BOOL还是别的什么?
问题在于方法签名中:
function Test(Param1: BOOL; Param2: BOOL; docContent: PCharArray): Integer;
当程序离开该功能时,我得到了 AV。
我认为是这两个第一个参数的数据类型有问题。
【问题讨论】:
-
根据我的经验,布尔值永远不会导致 AV。 PCharArray 是我的候选人。是输入缓冲区还是输出缓冲区?
-
它是:PCharArray = PChar 数组;奇怪...现在我的错误消失了...:|
-
"array of PChar" 是一个动态数组,因此您需要在您的 dll 和主项目中使用 ShareMem-unit。或者使用固定大小的数组“array[0..9] of PChar”。
-
或者使用
PPAnsiChar,并在单独的参数中传递PAnsiChar元素的数量。