Mir ist da noch etwas aufgefallen.
Beim setzen der
SearchPreference werden zu Abfangen eines Fehlers statische 'Array of WideChar' verwendet
Delphi-Quellcode:
var
...
szErr : array[0..255] of WideChar;
szName : array[0..255] of WideChar;
idx : Integer;
found : Boolean;
begin
if SUCCEEDED(ADsGetObject(edtADsPath.Text, IDirectorySearch, Search)) then
begin
try
opt.dwSearchPref := ADS_SEARCHPREF_SEARCH_SCOPE;
opt.vValue.dwType := ADSTYPE_INTEGER;
opt.vValue.__MIDL_0010.Integer := ADS_SCOPE_SUBTREE;
if not SUCCEEDED(search.SetSearchPreference(opt, 1)) then
begin
ADsGetLastError(dwErr, @szErr[0], 254, @szName[0], 254); // <- hier klappt es
ShowMessage(WideCharToString(szErr));
Result := False;
Exit;
end;
...
liegt es hier
hr := search.ExecuteSearch(StringToOleStr('(objectCategory=' + Category + ')'), @Properties[0], dwCount, ptrResult);
nun daran, das ein dynamisches Array ist, oder aber ein
PWideChar?