AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.com
Hi
Will auf unser AD zugreiffen... auf www.agnisoft.com habe ich einige Beispiele gedownloaded und die englische Einführung hebe ich durchgelesen. Bin also grad dran eine dll zu erstellen die mir alle user des AD in eine TreeView schreiben soll... Es erscheint dieser Fehler beim Kompilieren...
Delphi-Quellcode:
...von diesem Code:
[Pascal Fehler] ADSI.dpr(47): E2250 Es gibt keine überladene Version von 'ADsEnumerateObjects', die man mit diesen Argumenten aufrufen kann
Delphi-Quellcode:
Ich denke wenn du die von mir, resp. die von Agnisoft.com verwendete Methode nicht kennst, kannst du mir auch nicht helfen.
library ADSI;
{ enemyleft[at]gmail.com - 05.10.2007 } uses SysUtils, Classes, ActiveDs_TLB, adshlp, Variants, ComCtrls; var trUser: TTreeView; {$R *.res} // open winnt (ActiveDirectory) with other username and password function OpenWinNT(domain, username, password: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsOpenObject('WinNT://' + domain, username, password, 1, IADsContainer, dom); result := trUser; end; // open winnt (ActiveDirectory) with current user function GetWinNT(domain: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsGetObject('WinNT://' + domain, IADsContainer, dom); result := trUser; end; // adds the user to the chosen list procedure AddToTree(disp: IADs); begin trUser.Items.Add(nil, disp.Name); end; // set some properties for open winnt procedure OpenProperties(dom: IADsContainer); begin dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, AddToTree); end; exports OpenWinNT, GetWinNT; begin end. Die Dateien: ActiveDs_TLB.pas und adshlp.pas habe ich von agnisoft... hilf mir |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
Hallo,
hast du übersehen, dass AddToTree() eine procedure of object sein muss, damit du diese procedure als CallBack in AdsEnumerateObjects() verwenden kannst? Bastel dir ein helper object und mache deine freien Routinen zu Methoden. Grüße vom marabu |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
hey marabu
vielen dank. Die Grundidee versteh ich nun aber kA wie man das macht.. du wirst jetzt wahrscheinlich lachen.. aber habs mal so versucht...
Delphi-Quellcode:
Fehler -> disp.Name ist dann nicht deklariert?!?!?
library ADSI;
{ enemyleft[at]gmail.com - 05.10.2007 } uses SysUtils, Classes, ActiveDs_TLB, adshlp, Variants, ComCtrls; var trUser: TTreeView; helper: TObject; dn : IADs; type THelper = class(TObject) procedure AddToTree; private public end; {$R *.res} // open winnt (ActiveDirectory) with other username and password function OpenWinNT(domain, username, password: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsOpenObject('WinNT://' + domain, username, password, 1, IADsContainer, dom); result := trUser; end; // open winnt (ActiveDirectory) with current user function GetWinNT(domain: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsGetObject('WinNT://' + domain, IADsContainer, dom); result := trUser; end; // adds the user to the chosen list procedure THelper.AddToTree(disp: IADs); begin trUser.Items.Add(nil, disp.Name); end; // set some properties for open winnt procedure OpenProperties(dom: IADsContainer); begin dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, THelper.AddToTree); end; exports OpenWinNT, GetWinNT; begin end. |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
:stupid: :stupid: :stupid: :stupid: :stupid:
LOL logo... dem Objekt fehl der Link zu ActiveDs_TLB, adshlp -> aber wie stelle ich die meinem Obj zur Verfügung? |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
Dein helper object hat den falschen Typ, besser so:
Delphi-Quellcode:
Im Initialisierungscode deiner library musst du dann auch dein helper object instanzieren.
uses
SysUtils, Classes, ActiveDs_TLB, adshlp, Variants, ComCtrls; type THelper = class(TObject) procedure AddToTree; private public end; var trUser: TTreeView; helper: THelper; dn : IADs; |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
also die einzige änderung von mir zu dir war
Delphi-Quellcode:
das hat aber nicht viel gebracht, findet disp immer noch nicht...
helper: THelper;
sieht jetz also so aus bei mir:
Delphi-Quellcode:
library ADSI;
uses SysUtils, Classes, ActiveDs_TLB, adshlp, Variants, ComCtrls; type THelper = class(TObject) procedure AddToTree; private public end; var trUser: TTreeView; helper: THelper;
Delphi-Quellcode:
[Pascal Fehler] ADSI.dpr(47): E2003 Undefinierter Bezeichner: 'disp'
|
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
ok bin jetzt ein bisschen weiter mit diesem Code:
Delphi-Quellcode:
erhalte ich nun die folgende neue Fehlermeldung:
library ADSI;
{ [email]enemyleft@gmail.com[/email] - 05.10.2007 } uses SysUtils, Classes, ActiveDs_TLB, adshlp, Variants, ComCtrls; type THelper = class(TObject) procedure AddToTree(disp: IADs); private public end; var trUser: TTreeView; helper: THelper; {$R *.res} // open winnt (ActiveDirectory) with other username and password function OpenWinNT(domain, username, password: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsOpenObject('WinNT://' + domain, username, password, 1, IADsContainer, dom); result := trUser; end; // open winnt (ActiveDirectory) with current user function GetWinNT(domain: String): TTreeView; stdcall; var dom: IADsContainer; begin ADsGetObject('WinNT://' + domain, IADsContainer, dom); result := trUser; end; // adds the user to the chosen list procedure THelper.AddToTree(disp: IADs); begin trUser.Items.Add(nil, disp.Name); end; // set some properties for open winnt procedure OpenProperties(dom: IADsContainer); begin dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, THelper.AddToTree); end; exports OpenWinNT, GetWinNT; begin end.
Delphi-Quellcode:
[Pascal Fehler] ADSI.dpr(54): E2010 Inkompatible Typen: 'TADsEnumCallBack' und 'Procedure'
|
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
Entweder du instanzierst das helper object oder du musst eine Klassenmethode verwenden:
Delphi-Quellcode:
type
THelper = class(TObject) class procedure AddToTree(disp: IADs); end; var trUser: TTreeView; dn : IADs; // ... // adds the user to the chosen list class procedure THelper.AddToTree(disp: IADs); begin trUser.Items.Add(nil, disp.Name); end; // set some properties for open winnt procedure OpenProperties(dom: IADsContainer); begin dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, THelper.AddToTree); end; |
Re: AD zugriff mit ActiveDs_TLB und adshlp - www.agnisoft.co
Super marabu. Vielen Dank für deine Hilfe... meine dll sieht im moment so aus und funktioniert bestens...
ich werde sie noch ausbauen und wenn sie, falls sie, ausgereift genug wird, stelle ich sie im opensource zur verfügung... dann könnt ihr dann auch gleich noch anbringen wo man was verbessern muss! LG enemyleft
Delphi-Quellcode:
library ADSI;
{ enemyleft[at]gmail.com - 05.10.2007 } uses SysUtils, Classes, ActiveDs_TLB, adshlp, Variants; type T2dStringArray = Array of Array of String; TStringArray = Array[0..1] of String; THelper = class(TObject) procedure AddToTreeUsers(disp: IADs); end; var values: T2dStringArray; value: TStringArray; helper: THelper; i: integer = -1; {$R *.res} // enumerate users procedure GettingUsers(dom: IADsContainer); begin dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, helper.AddToTreeUsers); end; // DOMAIN // open winnt (ActiveDirectory) with other username and password function OpenUsers(domain, username, password: String): T2dStringArray; stdcall; var dom: IADsContainer; begin ADsOpenObject('WinNT://' + domain, username, password, 1, IADsContainer, dom); GettingUsers(dom); result := values; end; // DOMAIN // open winnt (ActiveDirectory) with current user function GetUsers(domain: String): T2dStringArray; stdcall; var dom: IADsContainer; begin ADsGetObject('WinNT://' + domain, IADsContainer, dom); GettingUsers(dom); result := values; end; // USER DETAIL // open winnt (ActiveDirectory) with current user function GetUsersDetail(domain, username: String): TStringArray; stdcall; var usr: IADsUser; begin ADsGetObject('WinNT://' + domain + '/' + username, IADsUser, usr); value[0] := usr.FullName; value[1] := usr.Description; result := value; end; // add the users into the array procedure THelper.AddToTreeUsers(disp: IADs); begin Inc(i); SetLength(values, i+1, 2); values[i,0] := disp.Name; values[i,1] := disp.Schema; end; exports OpenUsers, GetUsers, GetUsersDetail; begin end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz