![]() |
TDictionary als const
Moin,
wie deklariert man in Delphi ein TDictionary<string,string> als Konstante? Das geht ja nicht:
Delphi-Quellcode:
danke
const
MD: TDictionary<string, string> = ( ('A', 'xxx'), ('B', 'yyy') ); // oder // MD: TDictionary<string, string> = ( ('A': 'xxx'), ('B': 'yyy') ); |
AW: TDictionary als const
Das hier könnte weiterhelfen:
Zitat:
![]() TDictionary ist hier eindeutig nicht das was du suchst. |
AW: TDictionary als const
Zitat:
Irgenwas wo ich über den key an value komme(readonly). |
AW: TDictionary als const
Warum muss es denn eine Konstante sein?
Wenn es irgendeine Objektinstanz (Liste, Dictionary o.ä.) ist, wirst Du deren Daten immer verändern können. Du könntest evtl. ein Singleton verwenden:
Delphi-Quellcode:
Dann kannst Du MyDic zumindest nicht neu zuweisen freigeben aber immer noch).
function MyDic: TDictionary<string, string>
begin if not Assigned(_MyDic) then begin _MyDic := TDictionary<string, string>.Create; _MyDic...DatenAnlegen; end; Result := _MyDic; end; Du kannst natürlich auch eine Funktion oder statische Klasse schreiben, der Du einen String übergibst und hard codiert einen anderen zurück erhältst. Ist halt die Frage, was Du genau brauchst... |
AW: TDictionary als const
Wäre die Referenz eine Konstante (oder Singleton, oder ...), würde dir das auch nicht helfen, denn jeder kann ja die Referenz nehmen und Methoden wie
Delphi-Quellcode:
oder
Remove(..)
Delphi-Quellcode:
aufrufen.
Clear()
Unter ![]() Mit den Standard-Delphi-Collections bin ich nie lange glücklich geworden, ![]() ![]() Ansonsten wenn es nur für diesen einen Anwendungszweck ist, mach dir doch eine eigene Klasse um ein TDictionary<X, Y> welches nur Methoden zum Nachschlagen, nicht modifizieren anbietet. |
AW: TDictionary als const
OK, danke. Werde mir dann wohl selbst was bauen.
|
AW: TDictionary als const
Zitat:
In C++ kann man auch fast alle standard Container der STL mit solchen Initializer-Lists statisch initialisieren, selbst wenn es sich um dynamisch erstellte Instanzen handelt. Delphi kann das meines Wissens nach nur für dynamische Arrays des Typs
Delphi-Quellcode:
:
type TXArray = array of X
Delphi-Quellcode:
var
A: TStringArray; begin A := TStringArray.Create('test', '123', '456'); |
AW: TDictionary als const
Zitat:
Delphi-Quellcode:
const
cStrings: TArray<string> = ['A', 'B', 'C']; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz