Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Namen einer Konstanten/Variable als String ausgeben (https://www.delphipraxis.net/121304-namen-einer-konstanten-variable-als-string-ausgeben.html)

smallsmoker 25. Sep 2008 11:40


Namen einer Konstanten/Variable als String ausgeben
 
Hi,
ich habe in meinem programm ein paar Konstanten definiert:

Delphi-Quellcode:
const
  CMD_CHUNK   = 5; // Piece of Data
  CMD_STOP    = 6; // Data was send completely
  CMD_NICKNAME = 7; // new Nickname
nun möchte ich nicht den wert der konstante bspw.: CMD_CHUNK also inttostr(CMD_CHUNK) = '6' ausgeben sondern 'CMD_CHUNK'.
das könnte ich z.b so machen:

Delphi-Quellcode:
case Konstante of
  CMD_CHUNK:
    begin
      Log.Lines.Add('CMD_CHUNK');
    end;

  CMD_STOP:
    begin
      Log.Lines.Add('CMD_STOP');
    end;

  CMD_NICKNAME:
    begin
      Log.Lines.Add('CMD_NICKNAME');
    end;
end;
(Log ist ein Tmemo)

aber ginge das nicht einfacher ?

mfg smallsmoker

uligerhardt 25. Sep 2008 12:07

Re: Namen einer Konstanten/Variable als String ausgeben
 
Zitat:

Zitat von smallsmoker
aber ginge das nicht einfacher ?

Klar. Entweder so
Delphi-Quellcode:
const
  cCmdNames: array[CMD_CHUNK..CMD_NICKNAME] of string = ('CMD_CHUNK', 'CMD_STOP', 'CMD_NICKNAME');

  Writeln(CMD_STOP, ': ', cCmdNames[CMD_STOP]);
oder du machst einen Aufzählungstypen aus den CMD_-Konstanten und benutzt GetEnumName.

Uli.

Klaus01 25. Sep 2008 12:08

Re: Namen einer Konstanten/Variable als String ausgeben
 
Hallo,

da die Namen der Konstanten bei der Kompilation durch ihren Wert
ersetzt werden, wird es nicht möglich sein einen Rückschluss auf ihren
Namen zu ziehen.

Es bleibt Dir also nichts anderes übrig
es so oder ähnlich zu lösen wie Du es bereits getan hast.

Grüße
Klaus

Dunkel 25. Sep 2008 12:10

Re: Namen einer Konstanten/Variable als String ausgeben
 
Hallo!

Kurze und knappe Antwort: Nein! Variablen-Namen existieren im Kompilat so gesehen nicht mehr, in sofern kann man sie auch nicht ohne weiteres ausgeben lassen.

Es gibt zwar die RTTI, persönlich würde ich aber davon abraten.

Deine Methode oder die von uligerhardt sind definitiv vorzuziehen.

Medium 25. Sep 2008 15:11

Re: Namen einer Konstanten/Variable als String ausgeben
 
Zitat:

Zitat von Dunkel
Es gibt zwar die RTTI, persönlich würde ich aber davon abraten.

Warum?

Aus softwaretechnischer Sicht ist ein Enum-Typ und die Verwendung von GetEnumName() das sauberste was man in diesem Fall tun kann.

smallsmoker 25. Sep 2008 16:41

Re: Namen einer Konstanten/Variable als String ausgeben
 
danke für die tipps :)
ich habe es jetzt nach dieser anleitung gemacht:

LINK

mit ein bisschen typcasten ging dann auch alles.

mfg smallsmoker


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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