Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

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

Re: Zugriffsverletzung ADSI, so was komisches hab ich noch n

  Alt 24. Feb 2010, 09:13
Zitat von Remko:
AdsOpenObject always returns a HRESULT which you can check against known values (case hr of). When you declare a function as safecall in Delphi a wrapper (sometimes called an exception firewall) is added that will raise exceptions for you. If you want you can declare the function as safecall (just replace stdcall with safecall) and use a try..except handler.

PS: the other functions in AdsHlp such as AdsGetObject have the same declaration using WideString so you should change those as well...
Hmm... und schon wieder schleicht sich ein Problem ein:

Wenn ich die Funktionen AdsGetObject/AdsOpenObject mit safecall deklariere, werden zwar die exceptions wieder ausgelöst nur verhaltet sich das Ganze wieder ähnlich unstabil wie vorher...
Diese Funktion zeigt mir einen Benutzer an und die dazugehörigen Gruppen... Dies funktioniert wenn ich die Funktionen im Wrapper mit stdcall deklariere, nicht aber mit safecall! >> wenn ich das Auflisten der Gruppen auskommentiere gehts... ist doch komisch oder?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  usr: IADsUser;
begin
  ClearFields;
  ShowUser(EdLDAP.Text, CBShowUser);
  sEditedFields.Clear;
  sOldObjectPath := EdLDAP.Text;

  if SUCCEEDED(AccessObject(EdLDAP.Text, IADsUser, usr)) then
    EnumGroupsOfUser(usr, ListBox1.Items); //<-- Access Violation here >> Die Haltepunkte in der Funktion kommen nicht zum Zug!!!
end;
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat