![]() |
Zugriff auf Variablen/Constanten über deren Namen
Hallo!
In einer Unit gib es eine große Menge von String-Konstanten die ich gerne in einer anderen Unit verwenden würde. Der Zugriff auf die soll aber nicht direkt erfolgen, sondern über eine Getter-Funktion:
Delphi-Quellcode:
Nun habe sind es aber wirklich sehr viele Konstanten und die Funktion GetConstant müsste für jede Konstante eine eigene If-Abfrage enthalten. Das ist natürlich nicht sehr elegant.
Unit A;
const EINE_KONSTANTE = 'abc'; NOCHEINE_KONSTANTE = '123'; ... function GetConstant(Name: string): String begin result := ''; // Default Rückgabe if (Name='EINE_KONSTANTE') then result := EINE_KONSTANTE; if (Name='NOCHEINE_KONSTANTE') then result := NOCHEINE_KONSTANTE; ... end; Gibt es also eine Möglichkeit mit dem String-Wert 'EINE_KONSTANTE' direkt den Inhalt der gleichnamigen Konstante zur erhalten? Die funktion würde dann quasi so aussehen:
Delphi-Quellcode:
Geht sowas?
function GetConstant(Name: string): String
begin if (EsGibtKonstanteMitFolgendemNamen(Name)=false) then result := '' else result := WertDerKonstanteMitFolgendemNamen(Name); end; Besten Dank Ares |
Re: Zugriff auf Variablen/Constanten über deren Namen
Nein. Namen von Variablen und Konstanten werden nirgends gespeichert.
Aber wie wärs denn mit Ressourcen? |
Re: Zugriff auf Variablen/Constanten über deren Namen
Kannst du uns auch verraten wieso hier der direkte zugriff auf "Konstanten" schlecht wäre?
Was du scheinbar willst ist eher eine Key-Value-Tabelle die du bei Programmstart "konstant" füllst. Dein wunsch könnte unter .NET u.U. per Reflektion gelößt werden. Unter Win32 ist mit abgeschalteten Debug-Infos keinerlei Info mehr vorhanden wie die Konstante im Quellcode benannt wurde. |
Re: Zugriff auf Variablen/Constanten über deren Namen
Danke, ich werde mir was anderes überlegen :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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