Moin moin,
versuche doch mal bitte, Result erst nach dem "nil setzen" zu zuweisen, also so:
Delphi-Quellcode:
function GetLDAPDomain: String;
var
NSContainer : IADsContainer;
Enum : IEnumVariant;
hr : HRESULT;
varArr : OleVariant;
lNumElements : ULONG;
ADsItem : IADs;
res : String;
begin
res := '';
NSContainer := nil;
Enum := nil;
try
if ADsGetObject( 'LDAP:', IID_IADsContainer, NSContainer) = S_OK then
begin
hr := ADsBuildEnumerator(NSContainer, Enum);
while SUCCEEDED(hr) do
begin
hr := ADsEnumerateNext(Enum, 1, varArr, lNumElements);
if (lNumElements<=0) then Break;
if IDispatch(varArr).QueryInterface(IID_IADs, ADsItem) = S_OK then
res := res + ADsItem.ADsPath + #13;
end;
end;
finally
Enum := nil;
NSContainer := nil;
Result := res;
end;
end;