Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Wie erstellt man ein TObjectDictionary?


hydemarie - Di 16.06.20 19:44
Titel: Wie erstellt man ein TObjectDictionary?
Sehr kurzer Ausriss aus meinem aktuellen Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
unit MainUnit;

// ...

type
  // ...
  TTranslateDictionary = TObjectDictionary<stringString>;

var
  transTable: TTranslateDictionary;

implementation

procedure FillTransTable;
begin
  transTable := TTranslateDictionary.Create([doOwnsValues]);
  // ...
end;


FillTransTable aufzurufen wirft mir aber jedes Mal einen Fehler: "Ungültige Typumwandlung". Das passiert eindeutig in dem, was oben Zeile 16 ist. Spannende Frage an dieser Stelle: Warum?


jaenicke - Di 16.06.20 20:15

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
type
  // ...
  TTranslateDictionary = TObjectDictionary<stringString>;
Fällt dir etwas auf?

// EDIT:
Das siehst du im Debugger allerdings eigentlich auch gleich...

TypeCheckError


hydemarie - Di 16.06.20 20:22

Ist mit zweimal "String" und zweimal "string" immer noch dasselbe. (Aber ja, das hatte ich nicht bedacht. Zu viel Go in letzter Zeit...)
edit: oder gehen Zeichenketten gar nicht?


jaenicke - Di 16.06.20 21:52

user profile iconhydemarie hat folgendes geschrieben Zum zitierten Posting springen:
edit: oder gehen Zeichenketten gar nicht?
Strings sind keine Objekte! Deshalb funktioniert das mit OwnsObjects natürlich nicht.

Ein normales TDictionary<stringstring> geht...

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt


hydemarie - Di 16.06.20 22:06

Ah. Hier [https://entwickler-ecke.de/viewtopic.php?p=683972#683972] hatte ich das mit Strings gesehen ...

Du hast Recht, danke. :D