У меня проблемы с использованием импортированной библиотеки типов в 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;
но затем, когда я пытаюсь передать nil
в качестве второго параметра, он снова жалуется.
Редактировать 1:
Tlb от Голеза как часть ответа на http://www.stackoverflow.com/questions/4184306 - приведенный выше код от его ответа - это равносильно проблемам, с которыми я также столкнулся, заставляя adsi работать.
Я использую 64-битный W7 - это не должно иметь никакого значения, так как adsi dll 32-битный.
Редактировать 2:
Я ошибочно предположил, что проблема была в функции из-за ошибки, возникающей там, потому что я слепо следовал коду. После добавления нескольких ловушек ошибок кажется, что объект никогда не создается, что, конечно, выдает av, когда я пытаюсь присвоить ему значение.
Ответ назначен, так как он первым указал на очевидное!