如何使用DLL中包含的标志?

时间:2012-10-03 05:36:23

标签: delphi delphi-xe

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

  

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

documentation表示有五个可用的标志。但是,当我使用任何标志时Delphi告诉我它是一个“未声明的标识符”。

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

注意:在uses部分我要求的功能是:

  

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

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

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

我没有头文件,因此我无法填写值。