Einzelnen Beitrag anzeigen

Hackerl

Registriert seit: 8. Nov 2011
Ort: Darmstadt
10 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: dynamisch Records ansprechen

  Alt 3. Aug 2012, 07:27
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!
  Mit Zitat antworten Zitat