![]() |
Delphi-Version: 2009
Asymmetrisches const array
Hallo liebe DP-Members!
Zum Ende des Jahres hin stellt sich mir die Frage, wie(ob?) man ein asymmetrisches Array als Konstante definieren kann (oder zumindest einen Typ so deklarieren). Das Array sollte dann so aussehen: (nur eben nicht erst zur Laufzeit)
Delphi-Quellcode:
// (0) XXXX
// (1) XXX SetLength(A, 2); SetLength(A[0], 4); SetLength(A[1], 3); |
AW: Asymmetrisches const array
Zitat:
Über ein statisches Default-Array-Record-Property könnte man sowas quasi "simulieren". |
AW: Asymmetrisches const array
Ok, hatte ich fast befürchtet.
|
AW: Asymmetrisches const array
Gehen wir das Problem mal von der anderen Seite an... was willst Du denn erreichen. Evtl. gibt es ja einen anderen Ansatz.
...:cat:... |
AW: Asymmetrisches const array
Eben einige Konstanten speichern, da das ganze nicht so ganz ins FormCreate passt. Und da gibts, je nach dem was im ersten Element drinnen steht, unterschiedlich viele Elemente an der zweiten Position.
Ich werde mir mal das mit dem Initalization-Teil einer Unit ansehen, da passt es (strukturmäßig) noch am ehesten hin. |
AW: Asymmetrisches const array
Als Konstante geht das schon deswegen nicht, da eiin dynamisches Array eben keine Konstante ist. Aber unter bestimmten Bedingungen kann man es ähnlich einer Konstanten erzeugen:
Delphi-Quellcode:
type
TSubArray = array of Integer; TMyArray = array of TSubArray; var arr: TMyArray; begin arr := TMyArray.Create( TSubArray.Create(1, 2, 3, 4), TSubArray.Create(5, 6, 7)); end; |
AW: Asymmetrisches const array
Es soll ja nicht in dem Sinn dynamisch sein, als dass sich die Größe ändern sollte. Die soll schon für alle Elemente und Unterelemente konstant sein.
Diese Art ein Array zu befüllen kannte ich bisher nicht, sieht aber um einiges eleganter aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 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