Für so ein komplexeres Gebilde wäre es sicher OK, über eine eigene Klasse nachzudenken. Die kann dann indizierte Eigenschaften haben, die Du über:
Shop.Gruppe[18].Untergruppe[5].Artikel[73].Bezeichnung
Ansprechen könntest. Dazu wären allerdings Methoden wie Add, Remove und Eigenschaften wie AnzahlGruppen etc. nötig. Dieser Ansatz ist aufwändiger als ein einfaches Array, aber möglicherweise leichter zu erweitern.
Ein Array könnte aber so aussehen:
TArtikelArray = array[0..19][0..19][0..99] of rec_artikel
Das ist ein mehrdimensionales Array, über das Du auf alle Artikel in allen Untergruppen in allen Gruppen (von rechts nach links gelesen) zugreifen kannst.
Der Nachteil ist, dass das komplette Array da ist, unabhängig davon, wieviele Artikel tatsächlich definiert sind.
Mit dynamischen Arrays kannst Du es auch machen, da musst Du aber darauf achten, dass die Anzahl der Einträge nicht überschritten wird.
Das eigentliche Problem bei einem einfachen Array dürfte aber sein, dass Du sagst, Du willst nebeneinander bis zu 100 Artikel und bis zu 20 Untergruppen. Das braucht eine etwas komplexere Gruppierung:
Delphi-Quellcode:
type
TArtikel = record
// so wie Du ihn definiert hast
end;
TArtikelArray = array of TArtikel;
TUntergruppe = record
Name: string;
// weitere Eigenschaften
Artikel: TArtikelArray;
end;
TUntergruppen = array of TUntergruppe;
TGruppe = record
Name: string;
// weitere Eigenschaften
Untergruppen: TUntergruppen;
Artikel: TArtikelArray;
TGruppen = array of TGruppe;
TShop = record
Name: string;
// weitere Eigenschaften
Warengruppen: TGruppen;
end;
var Shop: TShop
Damit kannst Du auf Artikel z.B. so zugreifen:
Delphi-Quellcode:
Shop.Name;
Shop.Warengruppen[i].Name;
Shop.Warengruppen[i].Artikel[j].Bezeichnung;
Shop.Warengruppen[18].Untergruppen[5].Artikel[i].Bezeichnung;
...
with Shop.Warengruppen[3].Untergruppen[9] do
for i := 0 to High(Artikel) do
begin
Output(Artikel[i].Bezeichnung); //'Output' steht für eine Aktion, die Du damit durchführst
Output(Artikel[i].Bestellnummer);
...
end;
Dabei musst Du noch Prozeduren zum Anfügen neuer Gruppen und Artikel schreiben, die dabei auf Höchstanzahl möglicher Gruppen/Artikel achten.
Viel Erfolg
Urs