AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kann man "X: array of array of const" realisieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Kann man "X: array of array of const" realisieren?

Ein Thema von Panthrax · begonnen am 16. Dez 2006 · letzter Beitrag vom 17. Dez 2006
 
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

Kann man "X: array of array of const" realisieren?

  Alt 16. Dez 2006, 16:00
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.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz