![]() |
Delphi-Version: 2007
Enum mit DWORDs ??
Hi Leute,
ich möchte gerne einen ENUM mit sehr großen Konstanten definieren um die Lesbarkeit und Debug-Barkeit des Programmes zu verbessern.
Code:
Leider bekomme ich bei Literalen größer $7FFFFFFF einen Compilerfehler, dass eine Konstante erwartet wird. (zweiter enum-Wert: $B672DFE5)
type
EMsgSig = ( cMESSAGE_SIG_IR_Command_X64_Y32_Analog = $1E65343F, // analog IR Beams cMESSAGE_SIG_IR_Command_X64_Y32_Digital = $B672DFE5, // digital IR Beams cMESSAGE_SIG_FLOAT_Command = $4D3D7EA3, // A 32-bit floating point value cMESSAGE_SIG_CLIM_Command = $6991AA0E, // Klima-Sensoren cMESSAGE_SIG_CLIM_Command2 = $DEA8CA6C, // Klima-Sensoren cMESSAGE_SIG_LOAD_Command = $55FBCF08, // LoadCell-Sensoren cMESSAGE_SIG_LOAD_Command2 = $c1e97ab7, // LoadCell-Sensoren mit Temperatur cMESSAGE_SIG_ZERO = $00000000 // cMESSAGE_TYPE_RPC_USB2CAN ); Ich vermute, das liegt daran, dass maximal Integer-Werte aber nicht Cardinal verwendet werden kann. {$MINENUMSIZE 4} ... EnumDef ... {$MINENUMSIZE 1} hilft hier auch nicht weiter. Gibts hier eine Lösung? Ich würde gerne 1. beim Debuggen im Klartext sehen wollen, was da für eine Message angeflogen kommt und auch 2. vom Compiler gewarnt werden, wenn ich in einem Case-of einen Zweig vergessen habe. Knulli |
AW: Enum mit DWORDs ??
Mit neueren Delphi Versionen lässt sich dein Code auf jeden Fall kompilieren (in der
![]() Edit: Ansonsten musst du dir halt eine Übergangsfunktion der Form
Delphi-Quellcode:
deklarieren (und
function TranslateValue(OrdinalValue: Cardinal): EMsgSig
Delphi-Quellcode:
dann einfach von 0..N statt mit festen Werten). Müsstest du dann in der entsprechenden Funktion aber drauf achten, dass auch alle Werte korrekt übersetzt werden können.
EMsgSig
|
AW: Enum mit DWORDs ??
OK, also endlich mal Umstellen auf XE...
Ist ne "BER-Baustelle" :-) |
AW: Enum mit DWORDs ??
Einfach als String definieren?
|
AW: Enum mit DWORDs ??
Auch 2009 kann das.
Kannst du den Wert als -1233985563 definieren? Das wäre ja genau dasselbe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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