Hallo Ihr beiden. Erst mal danke für die prompte Hilfestellung.
@Blub
Du hast jetzt einfach die Funktionen remove angesprochen oder? - ansonsten mache ich das ja nirgens explizit.
An dem kanns aber nicht liegen, da ich diese Funktionen im ganzen Programm noch nicht verwendet habe. (Und werde dies folglich auch nicht tun)
> Grundsätzlich sollte aber ein solches Konstrukt, mal abgesehen von den removeFunctions funktionieren,
Oder macht man das einfach nicht und verwenden immer TObjectList o.ä. ?
@Uwe Raabe
Danke für den Hinweis... muss zugestehen, dass ich davon nichts wusste bis jetzt...
Hab jetzt mal n paar Sachen drüber gelesen und einfach mal propiert. Das kam dabei raus:
Delphi-Quellcode:
unit UUserCrossTable;
interface
uses
Windows, SysUtils, Variants, Classes, Dialogs, Generics.Collections;
type
// type for filesettings
TDirectory =
class(TObject)
public
Name:
string;
FullAccess: Boolean;
Modify: Boolean;
Execute: Boolean;
List: Boolean;
Read: Boolean;
Write: Boolean;
end;
// type for optional ad attributes
TOptAttr =
class(TObject)
public
name:
string[50];
value:
string[255];
end;
// type for group
TGroup =
class(TObject)
public
name:
string[50];
ldappath:
string[255];
end;
// type for quota
TQuota =
class(TObject)
public
volume:
string[255];
limit: Integer;
Threshold: Integer;
end;
TDirectories = TObjectList<TDirectory>;
TOptAttrs = TObjectList<TOptAttr>;
TGroups = TObjectList<TGroup>;
TQuotas = TObjectList<TQuota>;
// THIS IS ONE USER
TUser =
class(TObject)
private
public
sAMAccountName:
string[50];
givenName:
string[50];
sn:
string[50];
password:
string[50];
Directories: TDirectories;
OptionalAttributes: TOptAttrs;
Groups: TGroups;
Quotas: TQuotas;
end;
implementation
end.
Folgendes hat schon mal funktioniert:
Delphi-Quellcode:
uct: TObjectList<TUser>;
usr: TUser;
implementation
....
usr := TUser.Create;
usr.sAMAccountName := Edit1.Text;
usr.givenName := Edit1.Text;
usr.password := 'pw';
uct.Add(usr);
Wenn ich jetzt aber z.B. eine Gruppe an einen User hinzugügen möchte klappt folgendes nicht:
Delphi-Quellcode:
grp := TGroup.Create;
grp.name := Edit2.Text;
grp.ldappath := 'ldap://'+Edit2.Text;
uct.Items[ListBox1.ItemIndex].Groups.Add(grp); // << Zugriffsverletzung...
Zuvor habe ich versucht die Gruppen, Directories usw. als Records statt als Klassen zu definiren, das Ergebnis war dasselbe...
Was mache ich falsch?