Ich mach es meistens etwa so, wenn ich etwas Derartiges benötige.
Delphi-Quellcode:
const MeineKonstanten =
array[0..2]
of record
Name:
String;
Wert: Irgendwas;
end = (
(
Name: '
MYFIRSTCONST '; Wert: ...),
(
Name: '
MYSECONDCONST '; Wert: ...),
(
Name: '
...'; Wert: ...));
function StrToConst(
const ConstName:
string): DWORD;
var
i: Integer;
begin
for i := 0
to High(MeineKonstanten)
do
if AnsiSameText(ConstName, MeineKonstanten[i].
Name)
then
begin
Result := MeineKonstanten[i].Wert;
exit;
end;
raise Exception.CreateFmt('
"%s" ist not a valid constant name.', [ConstName]);
end;
So muß man dann nur noch das Array anpassen, wenn sich was ändert und die Funktions bleibt schön übersichtlich.
Bei "Wert", im Array, kannst du dann entweder deine "echte" Konstante angeben oder direkt deren Inhalt.