我在 Delphi 2010 中使用导入的类型库时遇到问题,并且我一生都无法弄清楚如何修复它。
ActiveDs_TLB
定义如下:
function SetSearchPreference(var pSearchPrefs: ads_searchpref_info; dwNumPrefs: LongWord): HResult; stdcall;
我假设这需要一个指向 ads_searchpref_info 数组的指针,但我不能执行以下操作:
SetSearchPreference(@MySearchPref,1);
因为然后我看到了可怕的E2033 Types of Actual and formal var parameters must be identical
错误
再往下,ActiveDs_TLB
定义:
function ExecuteSearch(pszSearchFilter: PWideChar; var pAttributeNames: PWideChar;
dwNumberAttributes: LongWord; out phSearchResult: Pointer):HResult; stdcall;
但是当我尝试将 anil
作为第二个参数传递时,它再次抱怨。
编辑1:
tlb 来自 Golez,作为对http://www.stackoverflow.com/questions/4184306的回答的一部分——上面的代码来自他的回答——这等同于我遇到的问题也让 adsi 工作。
我正在使用 W7 64 位 - 这不应该有所作为,因为 adsi dll 是 32 位的。
编辑2:
我错误地认为问题出在函数上,因为我盲目地遵循了代码。在抛出一些错误陷阱之后,似乎从未创建过该对象,当我尝试为其赋值时,这当然会抛出 av 。
分配的答案,因为它是第一个指出显而易见的!