1

我正在使用的函数包含三个参数,其中一个参数需要一个标志 (fCreationDisposition):

function MpqOpenArchiveForUpdate(lpFileName: LPCSTR; fCreationDisposition, dwHashTableSize: DWord): THandle; stdcall; external 'lmpqapi.dll';

文档指出有五个可用的标志。但是,当我使用任何标志时,Delphi 告诉我它是“未声明的标识符”。

为了能够在没有 Delphi 告诉我它是“未声明的标识符”的情况下访问标志,我必须添加什么额外的东西吗?

注意:在uses我调用该功能的部分下:

function MpqOpenArchiveForUpdate(lpFileName: LPCSTR; fCreationDisposition, dwHashTableSize: DWord): THandle; stdcall; external 'lmpqapi.dll';

4

2 回答 2

5

您必须在代码中定义标志。在 Delphi 中,您必须从头开始定义所有内容,不能像在 C/C++ 中那样使用任何属于 DLL 的预制 API 头文件。所以你必须追踪标志数值(因为文档没有提供它们)并在你的代码中声明它们,例如:

// these values are just a guess, you will have
// to download the API and look them up...
const
  MOAU_CREATE_NEW = $1;
  MOAU_CREATE_ALWAYS = $2;
  MOAU_OPEN_EXISTING = $4;
  MOAU_OPEN_ALWAYS = $8;
  MOAU_MAINTAIN_LISTFILE = $10;
于 2012-10-03T06:16:13.040 回答
2

您需要在 C++ 头文件中找到标志值的声明。然后将这些声明翻译成您的 Delphi 代码。它看起来像这样:

const
  MOAU_CREATE_NEW = ...;
  MOAU_CREATE_ALWAYS = ....;
  etc.

我没有头文件,所以我无法填写值。

于 2012-10-03T06:18:40.200 回答