![]() |
Delphi-Version: 2010
Const record
Hallo Zusammen...
Ich möchte ein const record deklarieren, das selber ein record Feld besitzt:
Delphi-Quellcode:
type
A = record x : Integer; y : Integer; end; B = record xy : A; z : Integer; end; const AA : A = (x : 0; y : 0); BB : B = (xy : AA; z : 0); // <--
Code:
Geht das nicht?
E2029 '(' erwartet, aber Bezeichner 'AA' gefunden
Danke&Grüße hansmaad |
AW: Const record
Versuch mal
Delphi-Quellcode:
BB : B = (xy : (AA); z : 0);
|
AW: Const record
Das hatte ich auch schon ausprobiert.
Delphi-Quellcode:
BB : B = (xy : (AA); z : 0);
Code:
Edit:
E2003 Undeklarierter Bezeichner: 'AA'
Das geht: (ich mein zwar auch das schon ausprobiert zu haben, aber nu gehts;-))
Delphi-Quellcode:
BB : B = (xy : (x : 0; y : 0); z : 0);
Mich würde trotzdem noch interessieren, ob es auch eine Lösung gibt, die AA verwendet. |
AW: Const record
Typisierte Konstanten sind ja keine echten Konstanten
(es sind nur schreibgeschützte Variablen) Also könnte es sein, daß die strenge Typenprüfung AA also nicht richtig als Konstante an dieser Stelle anerkennt.
Delphi-Quellcode:
.
BB : B = (xy : (x : 0; y : 0); z : 0);
Delphi-Quellcode:
BB : B = (xy : (x : AA.x; y : AA.y); z : 0);
|
AW: Const record
Es dürfen nur konstante Ausdrücke verwendet werden. "Typed const" sind nicht konstant. Man kann keinen konstanten Record definieren.
|
AW: Const record
"echte" Konstante:
Delphi-Quellcode:
.
const NAME = WERT;
typisierte Konstante:
Delphi-Quellcode:
.
const NAME: TYP = WERT;
(falls jemand den Unterschied nicht gleich erkennt) |
AW: Const record
Folgendes würde funktionieren:
Delphi-Quellcode:
type
PA = ^A; A = record x: Integer; y: Integer; end; B = record xy: PA; z: Integer; end; const AA: A = (x: 10; y : 0); BB: B = (xy: @AA; z : 0); |
AW: Const record
Danke euch allen, gute Infos:thumb:
Aber was genau heißt denn "typisierte Konstanten sind nicht konstant"?
Delphi-Quellcode:
führt zu der von mir erwarteten Fehlermeldung ".. kann nichts zugewiesen werden".
AA.x := 1;
AA ist eine typisierte Konstante und für mich ziemlich konstant. Falsch? |
AW: Const record
Über den Compiler-Schalter
Delphi-Quellcode:
solltest Du solche Konstanten dennoch beschreiben können ;)
{$J+}
|
AW: Const record
Zitat:
Und gleich noch eine Frage zu const.
Delphi-Quellcode:
Wann wird AA initialisiert? First call, bei jedem Call, bei Programmstart...?
procedure Foo;
const AA : A = (x : 0; y : 0); begin //... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 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