Hallo,
es geht um folgende Funktion:
Delphi-Quellcode:
procedure ADsEnumerateObjects(Container : IADsContainer; Func : TADsEnumCallback);
var
e : IEnumVARIANT;
varArr : OleVariant;
lNumElements : ULong;
obj : IADs;
hr : integer;
begin
hr := ADsBuildEnumerator(Container,e);
while(Succeeded(Hr)) do
begin
hr := ADsEnumerateNext(e,1,
varArr ,lNumElements);
if (lNumElements=0) then
break;
IDispatch(varArr).QueryInterface(IADs, obj);
if obj<>nil then
begin
Func(obj);
end;
varArr := NULL;
end;
// do not call ADsFreeEnumerator(e); since e will be released by Delphi
end;
Wenn ich diese nun in einer Schleife aufrufe, z.B. so:
Delphi-Quellcode:
procedure test;
var i: integer;
cont: IADsContainer;
begin
for i:=0
to 5
do begin
ADsGetObject('
LDAP://DC=domain,DC=com', IADsContainer, cont);
showmessage(inttostr(i));
//hier ist i=0
ADsEnumerateObjects(cont, callback);
showmessage(inttostr(i));
//hier ist i=4659983
end;
end;
Wie kann sowas sein?
Die Callback-Procedure sieht so aus:
Delphi-Quellcode:
procedure TForm1.Callback (disp: IAds);
begin
liste.add(disp.text);
end;
Warum macht er das mit i?
In der procedure kann ich mit i nichts finden.
Ich habe die oberste procedure nicht selbst geschrieben, ich habe sie von hier:
http://www.agnisoft.com/adsi/Conf2000/3132.htm
Könnt ihr mir dabei helfen?