Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Containerinhalt auflisten ADSI

  Alt 8. Sep 2010, 12:09
Hi there...
Ich hab in meinem Programm ein AD Browser...
nun wollte ich zusätzlich in der Detailtabelle die Spalte "Anzeigename" oder displayName, nun wenn ich jetzt auf eine OU klicke
passiert zwar was ich will, nur das Tempo ist inakzeptabel geworden. Die Funktion hat jetzt (je nach Inhalt) z.B. 5 statt 0.5 sec.

Delphi-Quellcode:
procedure TEADSObject.EnumObjectsOfContainer(ADSPath: string; CallbackFunction: TCallbackObjectEx);
var
  Enum: IEnumVariant;
  Container: IADSContainer;
  varObj: OleVariant;
  Obj: IADS;
  Temp: LongWord;
  displayName: string;
begin
  AccessObject(ADSPath, IID_IADSContainer, Container);
  Enum := Container._NewEnum as IEnumVariant;
  if Enum <> nil then
  begin
    while (Enum.Next(1,varObj, Temp) = S_OK) do
    begin
      Obj := IDispatch(varObj) as IADS;
      try displayName := Obj.Get('displayName'); except displayName := ''; end; // OHNE DIESE EINE ZEILE IST DIE FUNKTION 10x SCHNELLER!
      CallbackFunction(Obj.Name, obj.Class_, obj.ADsPath, displayName);
    end;
  end;
end;
Ich denke es hat allgemein was mit Obj.get() zu tun, das scheint wohl viel zu langsam zu sein...
stell dir vor ich möchte noch mehr attribute auslesen, dann kann ich mir ja dazu einen Kaffe kochen!!!

Weiss jemand wie ich schneller an die Attribute komme?

Danke schon ma.
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat