我使用的函数包含三个参数,其中一个参数需要一个标志(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';
答案 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.
我没有头文件,因此我无法填写值。