Hi himitsu,
ich möchte mal auf deinen Eingangspost eingehen. Dazu ersetze ich die Variablen durch ihre Typbezeichnungen. Dadurch wird der Code zwar syntaktisch falsch, aber vielleicht fällt unseren Spezialisten dann auf, das sie mit ihrer Diskussion über Mengen nicht gerade zur Aufhellung dieses Delphi-Fehlers(?) beigetragen haben:
If Integer in [Integer, Integer, Integer] Then ...
Beide Seiten des 'IN'-Operators sind vom Typ her identisch. Klar geht das.
If TObject in [Integer, Integer, Integer] Then ...
Äh. Beide Seiten des 'IN'-Operators sind nicht typkompatibel. Ich komme darauf zurück.
If TObject in [TObject , TObject , TObject ] Then ...
Gottseidank meckert wenigstens da der Compiler, vonwegen "ordinaler Typ erforderlich".
Wieso geht das Konstrukt '<ObjectRef> IN <OrdinalSet>' durch den Compiler? Hmm. Mal sehen, was die Delphi-
OH dazu sagt:
In der Tabelle der Mengenoperatoren steht bei 'IN', das die Operatorn "Ordinalwert, Menge" sein müssen.
Hupsa. Eine <ObjectRef> ist doch aber kein Ordinalwert. Oder?
Um also himitsus Frage aufzugreifen
Zitat von
himitsu:
Warum?
Würde ich derzeit mit einem 'Weil Irgendwer bei BorlInpCodeGarcadero mal geschlampt hat' beantworten.
Zitat von
Stevie:
... weil Objekt-Referenzen nicht implizit zuweisungskompatibel zu diesem Datentyp sind (Stichwort Typensicherheit)
Das stimmt dann wohl nicht.