Thema: Delphi ADS - Fullname

Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: ADS - Fullname

  Alt 31. Jan 2007, 19:15
Hallo MarLe,

ich möchte es mal so erklären.

IADsUser ist ein Interface, dh. die darüber referenzierten Objekte sind tasächlich schon vorhanden.
In diesem Fall im Active Directory. Über ADsGetObject holst Du dir einen 'Zugriff' auf das Objekt
und möchtest eine bestimmtem Wert zwischenspeichern.
Delphi-Quellcode:
  ADsGetObject('WinNT://' + Domain + '/' + Username, IADsUser, usr);
  assert(usr <> nil);
  s := usr.FullName;
Da Referenzen auf Interface-Objecte nicht frei gegeben werden (müssen/können/dürfen); i.d. Fall dürfen,
da ansonsten das referenzierte Objekt in der ADS freigegeben wird, wird legendlich die Referenz auf
das Objekt gelöscht. Sprich "usr = nil", ohne Dein zutun, da usr nicht mehr benötigt wird.

Da jedoch S := usr.FullName; auch nur eine Referenz ist und damit auch
  Result := S; werden auch diese Referenzen gelöscht, und es kommt zur Zugriffsverletzung.

Ich hoffe es bringt etwas für das Verständnis.

Vielleicht Morgen etwas mehr.

Gruss
  Mit Zitat antworten Zitat