Einzelnen Beitrag anzeigen

Markus
(Gast)

n/a Beiträge
 
#1

Extrem seltsames verhalten einer procedure...

  Alt 30. Mai 2004, 19:50
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?
  Mit Zitat antworten Zitat