Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Multidimensional assoziatives array (https://www.delphipraxis.net/183893-multidimensional-assoziatives-array.html)

FAM 12. Feb 2015 08:45

Delphi-Version: 5

Multidimensional assoziatives array
 
Hallo Zusammen,

wie implementiert man in Delphi folgendes:

Delphi-Quellcode:

// Level 0
Arr[0, 'Foo', 'Bar1'] := 'Lorem Ipsum';
Arr[0, 'Foo', 'Bar2'] := 'Lorem Ipsum';
Arr[0, 'Foo', 'Bar3'] := 'Lorem Ipsum';

Arr[0, 'Foo1', 'Bar1'] := 'Lorem Ipsum';
Arr[0, 'Foo2', 'Bar2'] := 'Lorem Ipsum';
Arr[0, 'Foo3', 'Bar3'] := 'Lorem Ipsum';

// Level 1
Arr[1, 'Foo', 'Bar1'] := 'Lorem Ipsum';
Arr[1, 'Foo', 'Bar2'] := 'Lorem Ipsum';
Arr[1, 'Foo', 'Bar3'] := 'Lorem Ipsum';

Arr[1, 'Foo1', 'Bar1'] := 'Lorem Ipsum';
Arr[1, 'Foo2', 'Bar2'] := 'Lorem Ipsum';
Arr[1, 'Foo3', 'Bar3'] := 'Lorem Ipsum';
Hatte schon versucht mit verschatelten TStringList zu arbeiten, funzt aber nicht.

FAM 12. Feb 2015 09:39

AW: Multidimensional assoziatives array
 
Ok habs,

Delphi-Quellcode:

var

  TempStringList: TStringList;
  TempArr: TDictionary<string, TStringList>;
  Arr: array of TDictionary<string, TStringList>;

...

  tempStringList := TStringList.Create;
  tempStringList.Add('Bar1=Lorem Ipsum');

  tempArr := TDictionary<string, TStringList>.Create;
  tempArr.Add('Foo', tempStringList);

  Arr[0] := tempArr;

  ShowMessage(Arr[0]['Foo'].Values['Bar1']); //Output: Lorem Ipsum

himitsu 12. Feb 2015 10:42

AW: Multidimensional assoziatives array
 
Als Array-Property? :zwinker:
Delphi-Quellcode:
function Getter(idx1: Integer; idx2, idx3: string): string;
procedure Setter(idx1: Integer; idx2, idx3: string; value: string);
property TheArray[idx1: Integer; idx2, idx3: string]: string read Getter write Setter; default;
Und das nun in eine Klasse oder Record (seit 2006).

Default, damit man
Delphi-Quellcode:
Arr[...]
und nicht nur
Delphi-Quellcode:
Arr.TheArray[...]
schreiben kann.

Dejan Vu 12. Feb 2015 13:44

AW: Multidimensional assoziatives array
 
Und umsetzen mit einer einfachen String-Dictionary, wobei Du die drei Indices einfach mit einem Sonderzeichen deiner Wahl aneinanderklatscht.

MyAssoc['A','B','C'] <==> myDictionary('A|B|C')


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz