![]() |
TObject kein ordinaler Typ?
Moin,
ich mach's mal kurz und schmerzlos. Dieses geht,
Delphi-Quellcode:
komischer Weise auch Jenes,
If Integer(Components[i]) in [Integer(Panel1), Integer(Panel2), Integer(Panel3)] Then Begin
Delphi-Quellcode:
aber das nicht,
If Components[i] in [Integer(Panel1), Integer(Panel2), Integer(Panel3)] Then Begin
Delphi-Quellcode:
jedenfalls meckert da der Compiler, vonwegen "ordinaler Typ erforderlich". :gruebel:
If Components[i] in [Panel1, Panel2, Panel3] Then Begin
Warum? |
Re: TObject kein ordinaler Typ?
Weil Sets nur mit ordinalen Typen funktionieren und ein Objekt kein ordinaler Typ ist.
|
Re: TObject kein ordinaler Typ?
Aus dem gleichen Grund, weshalb du nicht Panel2 := Panel1+1 schreiben kannst, würde ich mal vermuten. :roteyes:
|
Re: TObject kein ordinaler Typ?
Zitat:
ein Pointer ist eine Zahl (Cardinal) und eine Zahl ist ein ordinaler Typ. Zitat:
aber intern ist es dennoch ein ordinaler Typ. |
Re: TObject kein ordinaler Typ?
Zitat:
Richtig, weil Objekt-Referenzen nicht implizit zuweisungskompatibel zu diesem Datentyp sind (Stichwort Typensicherheit). Daher gehen auch deine beiden oberen Beispiele, in denen du die Objekt-Referenzen explizit in Integer umcastest, aber im unteren Beispiel versucht der Compiler ein Set zu bauen, geht aber nicht, weils sich ebend nicht in nen ordinalen Typen handelt. |
Re: TObject kein ordinaler Typ?
Kann man das mit den Sets überhaupt so machen?
Gabs da nicht sone "Regel" die besagte, dass Sets nicht mit Datentypen > 1 Byte verwendet werden soll(t)en ? Oder verwechsel ich da (wieder) was? |
Re: TObject kein ordinaler Typ?
Zitat:
|
Re: TObject kein ordinaler Typ?
Zitat:
Integer sind 4 Bytes und die kann er nicht weiter kürzen, weil dann signifikante Stellen verloren gehen. Da würde er warnen und man müsste einen expliziten Cast machen. Implizite Casts macht er nur, wenn keine signifikante Stellen verloren gehen (wie in allen Programmiersprachen). Aber 1 Byte? Wie kommst du auf den Wert? |
Re: TObject kein ordinaler Typ?
Zitat:
|
Re: TObject kein ordinaler Typ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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