Hallo zusammen.
Ich habe verschiedene Klassen die Objektlisten verwalten. Dabei haben einige Listen Unterlisten. Alle Listen haben gemeinsam, dass Starteinträge zur Programmierzeit bereits feststehen. Ich möchte daher dem Kontruktor diese Starteinträge mit auf den Weg geben. Für die Listen
ohne Unterlisten sieht der Kontruktur beispielhaft so aus:
Delphi-Quellcode:
TMyObjectList1 =
class(TObjectList)
...
constructor Create(
const Items:
array of const);
...
end;
constructor TMyObjectList1.Create(
const Items:
array of const);
var
Index: Integer;
begin
inherited Create;
for Index := 0
to High(Items)
do
if Items[
Index].VType = vtObject
then Add(Items[
Index].VObject)
else Exception.Create('
Typ des Elements im Array-Parameter kann nicht verarbeitet werden.');
end;
Ich hätte auch gern den Listen
mit Unterlisten die Starteinträge dem Konstruktor übergeben; etwa so:
Delphi-Quellcode:
TMyObjectList2 =
class(TObjectList)
...
constructor Create(
const Items:
array of const);
...
end;
constructor TMyObjectList2.Create(
const Items:
array of const);
var
Index: Integer;
begin
inherited Create;
for Index := 0
to High(Items)
do
if Items[
Index].VType =
{?}...
{/?}
then Add(TMyObjectList1.Create(
{?}Items[
Index]
{/?}))
else Exception.Create('
Typ des Elements im Array-Parameter kann nicht verarbeitet werden.');
end;
Das würde es gestatten eine Liste auf höherer Ebene wie folgt zu erzeugen:
Delphi-Quellcode:
MyObjectList:=TMyObjectList.Create([
[
[TObject1.Create(...),TObject2.Create(...),TObject3.Create(...)],
[TObject1.Create(...),TObject4.Create(...),TObject4.Create(...),TObject5.Create(...)]
],
[
[TObject1.Create(...),TObject6.Create(...)],
[TObject7.Create(...),TObject7.Create(...)],
// ...
],
// ...
]);
Momentan ist das Erzeugen und Befüllen der Listen ein Wust aus Variablen, Kontruktoren und Add-Funktionen.
Aber wenn ich versuche ein Array, wie oben gezeigt, als Parameter zu übergeben, teilt mir der Compiler beim ersten Unterelement-Array mit: "Ordinaltyp erforderlich." Gibt es eine Möglichkeit die Unterelement-Arrays sicher als Ordinaltyp zu kaschieren?
Gruß,
Panthrax.