AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TDictionary als const

Ein Thema von wurzelzwerg · begonnen am 22. Jun 2017 · letzter Beitrag vom 22. Jun 2017
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: TDictionary als const

  Alt 22. Jun 2017, 12:27
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:
function MyDic: TDictionary<string, string>
begin
  if not Assigned(_MyDic) then
  begin
    _MyDic := TDictionary<string, string>.Create;
    _MyDic...DatenAnlegen;
  end;
  Result := _MyDic;
end;
Dann kannst Du MyDic zumindest nicht neu zuweisen freigeben aber immer noch).

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...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: TDictionary als const

  Alt 22. Jun 2017, 15:05
Warum muss es denn eine Konstante sein?

Wenn es irgendeine Objektinstanz (Liste, Dictionary o.ä.) ist, wirst Du deren Daten immer verändern können.
Um die Konstante ansich geht es ja nicht, sondern um die Möglichkeit der statischen Initialisiertung, wie sie z.b. gültig ist für
  • Arrays
    Delphi-Quellcode:
    const
      MyArray: array[0..1] of Integer = (0, 1);
  • Records
    Delphi-Quellcode:
    const
      MyRecord: TRecord = ( Foo: 1; Bar: 'test' );
  • etc

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 type TXArray = array of X :
Delphi-Quellcode:
var
  A: TStringArray;
begin
  A := TStringArray.Create('test', '123', '456');
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.650 Beiträge
 
Delphi 12 Athens
 
#3

AW: TDictionary als const

  Alt 22. Jun 2017, 16:10
Delphi kann das meines Wissens nach nur für dynamische Arrays des Typs type TXArray = array of X :
Delphi-Quellcode:
var
  A: TStringArray;
begin
  A := TStringArray.Create('test', '123', '456');
Das geht mittlerweile auch so:
Delphi-Quellcode:
const
  cStrings: TArray<string> = ['A', 'B', 'C'];
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 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