![]() |
Konstanten-Deklaration eines mehrdimensionalen Arrays
Hallo zusammen,
ich habe gerade einen gedanklichen Hänger nach dem Mittagessen. Kann mir bitte jemand auf die Sprünge helfen? Im folgenden Quelltext möchte ich ein zweidimensionales Array deklarieren, aber der Compiler sagt nö (E2026 Constant expression expected):
Delphi-Quellcode:
type
TSoundAddressData = record Address : Integer; Data : Integer; end; TSoundSources = array [1 .. 3] of TSoundAddressData; TSoundChannels = array [1 .. 8] of TSoundSources; const CHANNEL_1 : TSoundSources = ( (Address : $0; Data : $01), // NF1 (Address : $0; Data : $02), // NF2 (Address : $0; Data : $04) // NF3 ); CHANNEL_2 : TSoundSources = ( (Address : $0; Data : $08), (Address : $0; Data : $10), (Address : $0; Data : $20) ); CHANNEL_3 : TSoundSources = ( (Address : $0; Data : $40), (Address : $0; Data : $80), (Address : $1; Data : $01) ); CHANNEL_4 : TSoundSources = ( (Address : $1; Data : $02), (Address : $1; Data : $04), (Address : $1; Data : $08) ); CHANNEL_5 : TSoundSources = ( (Address : $1; Data : $10), (Address : $1; Data : $20), (Address : $1; Data : $40) ); CHANNEL_6 : TSoundSources = ( (Address : $1; Data : $80), (Address : $2; Data : $01), (Address : $2; Data : $02) ); CHANNEL_7 : TSoundSources = ( (Address : $2; Data : $04), (Address : $2; Data : $08), (Address : $2; Data : $10) ); CHANNEL_8 : TSoundSources = ( (Address : $2; Data : $20), (Address : $2; Data : $40), (Address : $2; Data : $80) ); CHANNELS : TSoundChannels = ( CHANNEL_1, // <--- [dcc32 Error] BlaBlipBlup.pas(132): E2026 Constant expression expected CHANNEL_2, CHANNEL_3, CHANNEL_4, CHANNEL_5, CHANNEL_6, CHANNEL_7, CHANNEL_8 ); |
AW: Konstanten-Deklaration eines mehrdimensionalen Arrays
Typisierte Konstanten sind eigentlich schreibgeschützte Variablen, darum die Fehlermeldung. :angle:
Die Konstanten CHANNEL_1, CHANNEL_2 usw. kommen weg und die Werte davon kopierst du direkt an die jeweilige Stelle in CHANNELS. |
AW: Konstanten-Deklaration eines mehrdimensionalen Arrays
Danke, so geht's! :thumb:
Trotzdem verhält sich der Compiler ein bisschen Muttihaft! :o
Delphi-Quellcode:
Jetzt muss ich nur noch rausfinden, wie ich den Formatter so einstelle, dass er mir die Einrückungen nicht mehr wegmacht.
type
TSoundAddressData = record Address : Integer; Data : Integer; end; TSoundSourceRange = 1..3; TChannelRange = 1..8; TSoundSources = array [TSoundSourceRange] of TSoundAddressData; TSoundChannels = array [TChannelRange] of TSoundSources; const CHANNELS : TSoundChannels = ( ( // CHANNEL_1 (Address : $0; Data : $01), // NF1 (Address : $0; Data : $02), // NF2 (Address : $0; Data : $04) // NF3 ), ( // CHANNEL_2 (Address : $0; Data : $08), (Address : $0; Data : $10), (Address : $0; Data : $20) ), ( // CHANNEL_3 (Address : $0; Data : $40), (Address : $0; Data : $80), (Address : $1; Data : $01) ), ( // CHANNEL_4 (Address : $1; Data : $02), (Address : $1; Data : $04), (Address : $1; Data : $08) ), ( // CHANNEL_5 (Address : $1; Data : $10), (Address : $1; Data : $20), (Address : $1; Data : $40) ), ( // CHANNEL_6 (Address : $1; Data : $80), (Address : $2; Data : $01), (Address : $2; Data : $02) ), ( // CHANNEL_7 (Address : $2; Data : $04), (Address : $2; Data : $08), (Address : $2; Data : $10) ), ( // CHANNEL_8 (Address : $2; Data : $20), (Address : $2; Data : $40), (Address : $2; Data : $80) ) ); |
AW: Konstanten-Deklaration eines mehrdimensionalen Arrays
Zeilenumbrüche des Benutzers beibehalten -> True
Zeilenumbrüche in Array-Initialisierung -> Wie vorhanden |
AW: Konstanten-Deklaration eines mehrdimensionalen Arrays
Schade, leider reichen diese beiden Optionen anscheinend nicht.
Mein XE7 rückt alles liebevoll auf eine Spalte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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