2017-04-26 1 views
1

Würde jemand wissen, warum der folgende Code einen internen L2095-Fehler auslöst?Warum wirft die Deklaration eines TDictionary mit einem Typ als Schlüssel einen internen L2095-Fehler?

Anscheinend hat der Compiler ein Problem mit dem Schlüssel des Wörterbuchs, das ein Klassentyp ist.

Wer kennt einen Workaround?

(PS: der Fehler nicht ausgelöst wird, wenn ich nicht enthalten den TestDict := TDictTest.Create; Teil oder wenn der Schlüssel ist etwas anderes als ein Klasse-Typ)

TTestClass = class 
    end; 

    TTypeOfTestClass = type of TTestClass; 

    TDictTest = TDictionary<TTypeOfTestClass,Integer>; 

var 
    TestDict: TDictTest; 

implementation 

initialization 

    TestDict := TDictTest.Create; 
    TestDict.Free 

hinzugefügt nach der Antwort der:

Anscheinend geht es darum, dass ich "" statt "class of" instinktiv benutzt habe. "Type of" wird vom Compiler akzeptiert, daher die Verwirrung. Ein Verweis auf eine Frage zu diesem Thema: What "type of" declaration represents in Delphi and how can it be used

Antwort

3

Ich glaube nicht, "Art von ..." ist sogar erlaubt. Verwenden Sie

TTypeOfTestClass = class of TTestClass; 

stattdessen.

+0

Ich hätte in der Tat "Klasse von" verwendet! Ich mache es in anderen Teilen meines Codes, aber aus irgendeinem Grund habe ich diesmal "type of" verwendet und es komischerweise komischerweise kompiliert. Es scheint überall akzeptiert zu sein, außer in der TDictionary-Deklaration. Ungerade. Aber danke! – Domus

Verwandte Themen