Hallo,
erst einmal herzlichen Dank für die schnellen antworten!
Ich bin relativ neu in Delphi
und arbeite mit der Version XE2.
Zum besseren Verständnis hier noch einmal ein ausführlicherer Code Ausschnitt:
Delphi-Quellcode:
type TADUser =
record
cn,
name,sn,givenName,displayName,department,company:
String;
streetAddress,l,telephoneNumber,userPrincipalName:
String;
mail,createTimeStamp,objectSid,distinguishedName:
String;
objectGUID,lastLogon,pwdLastSet,badPasswordTime:
String;
end;
...
var
ADUser: TADUser;
...
function read_ADFields(OBJECTClass):ADUser;
var
rs, conn,
com: Variant;
DOMAIN:
String;
count: Integer;
begin
DOMAIN := '
''
LDAP://dc=xx,dc=xx-xxxxxxxxx,dc=de''
';
CoInitialize(
nil);
try
conn := CreateOleObject('
ADODB.Connection');
com := CreateOleObject('
ADODB.Command');
conn.Provider := '
ADsDSOObject';
conn.open;
com.ActiveConnection := conn;
Com.CommandText := '
select cn,givenname,displayname,sn from '+Domain+'
where objectclass='+'
''
'+OBJECTClass+'
''
'+'
and objectclass<>'+'
''
computer''
ORDER by cn';
com.Properties['
Page Size'] := 10;
Com.Properties['
Timeout'] := 600;
Com.Properties['
Cache Results'] := False;
Com.Properties['
Size Limit'] := 200;
rs :=
COm.Execute;
count := 0;
While Not rs.EOF
do
begin
if not VarIsNull(rs.Fields[0].Value)
then
begin
[COLOR="Red"]ADUser.[B](rs.fields[1].
name)[/B] := rs.fields[1].Value;[/COLOR]
inc(count,1);
end;
rs := NULL;
finally
CoUninitialize;
com := NULL;
conn.Close;
conn := NULL;
end;
end;
Meine Frage bezieht sich auf die rot geschriebene Zeile:
Ich definiere ein Record mit dem Namen TADUser und ddefinierten Feldern, die namentlich auch im AD
existieren. Nach meiner AD-Abfrage möchte ich innerhalb einer Schleife die Werte aus den AD-Feldern
in die zugehörigen Recordfelder schreiben. Wie bringe ich Delphi bei, dass die AD-Werte
z.B. aus displayName nach 'ADUser.displayName' geschrieben werden.
@Blup
Dein Code ist für einen Anfänger wie mich ein verdammt harter Toback!