![]() |
Konstantes array in einem record initialisieren
Hallo,
gibt es in Delphi die Möglichkeit ein array in einem record zu initialisieren?
Delphi-Quellcode:
TBla = record
A: Word; B: array of word; end; const Bla: array [0..1] of TBla = ( (A: 0; B: (0, 1)), () ); --Win32 |
Re: Konstantes array in einem record initialisieren
Wenn es ein statisches Array ist, dann ja, ansonsten nicht.
|
Re: Konstantes array in einem record initialisieren
Hab ich mir schon fast gedacht, kann ich Delphi dazu bringen nur die ersten n Felder zu initialisieren?
Delphi-Quellcode:
--Win32
TBla = record
A: Word; B: array [0..255] of word; end; const Bla: array [0..1] of TBla = ( (A: 0; B: (0, 1)), //Hier muesste man ja nun immer 256 Elemente initialisieren, ich brauche manchmal aber nur 128 () ); |
Re: Konstantes array in einem record initialisieren
Der Record ist nur eine Definition und es wird ihm kein Speicherplatz zugeordnet. Bei einer Const wird entsprechend irgendwo Speicher bereitgestellt, welcher initialisiert werden kann.
Wenn du nun ein konstantes Array in einem Record definierst, dann gibt es wiederrum keinen Speicherplatz für den Record und somit auch nicht für seine Elemente, also dem Array, somit auch keine Möglichkeit es vorzubelegen. Schonmal so probiert?
Delphi-Quellcode:
TBla = record
A: Word; B: array of word; end; const Bla: array [0..1] of TBla = ( (A: 0; B: (0, 1)), //Hier muesste man ja nun immer 256 Elemente initialisieren, ich brauche manchmal aber nur 128 () ); |
Re: Konstantes array in einem record initialisieren
Alles was du nicht angibst, wird mit 0 (bzw. nil) initialisiert:
Delphi-Quellcode:
const
Foo: array [0..1] of record Bar: Word; Dyn: array of Word; end = ( (Bar: 42{; Dyn: nil}), ({Bar: 0; Dyn: nil}) ); |
Re: Konstantes array in einem record initialisieren
Gut, dann muss ich es wohl oder übel zur Laufzeit erzeugen und initialisieren.
Danke für Eure Antworten. --Win32 //Edit: Zitat:
Zitat:
Delphi-Quellcode:
const
Foo: array [0..1] of record Bar: Word; Dyn: array [0..2] of Word; end = ( (Bar: 42{; Dyn: nil}), ({Bar: 0; Dyn: nil}), (Dyn: (1)), //Nur ein Element initialisiert -> Dyn: (1, 0, 0) (Dyn: (1, 2)), //Zwei Elemente initialisiert -> Dyn: (1, 2, 0) (Dyn: (1, 2, 3)), //Alle Elemente initialisiert -> Dyn: (1, 2, 3) ); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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