2012-10-03 24 views
1

我使用的函數包含其中其中一個需要的標誌三個參數(fCreationDisposition):有五個可用標誌如何使用包含在DLL中的標誌?

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

documentation狀態。但是,當我使用任何標誌時,德爾福告訴我這是一個「未聲明的標識符」。

有什麼額外的,我必須添加爲了能夠訪問標誌沒有德爾福告訴我,它是一個「未聲明的標識符」?

注:在uses節我都在呼籲功能:

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

回答

5

你在你的代碼來定義標誌。在Delphi中,你必須從頭開始定義所有的東西,你不能使用屬於DLL的任何預先創建的API頭文件,就像你在C/C++中所做的那樣。所以,你必須追查標誌數值(因爲文檔不爲他們提供),並在代碼中聲明它們,例如:

// 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; 
+0

我相信我找到了正確的值。它們採用0x00,0x08,0x04等形式。無論如何,美元符號在上面的代碼中表示的是什麼? – ple103

+1

@peter您是否閱讀過Delphi文檔?請花點時間這樣做。這是非常基本的。你應該知道這一點。 $前綴十六進制數字。就像C系列中的0x一樣。你必須閱讀:http://docwiki.embarcadero.com/RADStudio/XE3/en/Fundamental_Syntactic_Elements –

+0

@DavidHeffernan - 不,我沒有。我現在會讀它,謝謝。 – ple103

2

你需要找到在C++頭文件中的標誌值的聲明。然後將這些聲明轉換成你的Delphi代碼。它看起來像這樣:

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

我沒有頭文件,所以我無法填寫值。

相關問題