![]() |
Reservirtes Wort String und keins Integer
Joa wie der Tittel schon sagt.
Warum ist String ein Reserviertes Wort und Integer keins. Wenn man bei Delphi eine String Variable definiert, erscheint String in Fett, da es ein Reserviertes Wort ist. Wenn man allerdings Integervaribalen Definiert, wird Integer nicht Fett hervorgehoben. |
AW: Reservirtes Wort String und keins Integer
Integer ist aber trotzdem ein reserviertes Wort. Auch wenn die IDE es vielleicht nicht erkennt.
|
AW: Reservirtes Wort String und keins Integer
Zitat:
Delphi-Quellcode:
Gäbe es die Funktion nicht, wäre String als Variablentyp nicht fett.
ShowMessage(String('Hallo'));
// Ob es nun diese oben genannte Funktion ist oder eine andere, das weiß ich jetzt auch nicht genau. Was ich aber ziemlich sicher weiß ist, dass String neben dem Variablentyp auch noch eine andere wichtige Funktion hat. Und deshalb ist es ein reserviertes Wort und fett. Nicht weil es ein Variablentyp ist. |
AW: Reservirtes Wort String und keins Integer
Das
![]() |
AW: Reservirtes Wort String und keins Integer
Zitat:
Wie der verlinkte Thread gut demonstriert ist der genaue Grund dafür nicht (mehr) wirklich offensichtlich. Ich schließe mich da aber der Theorie von dort an, dass es schlicht ein Relikt aus Zeiten ist, wo String und Array und File ziemlich die einzigen Typen waren, bei denen mehr passiert ist als stumpfes "interpretiere Register X als [Typ]", und diese daher eher als Sprachfeature galten. Würde man die Delphi Language heute erfinden, würde vermutlich keiner mehr auf die Idee kommen diese auf die Art hervorzuheben. Ein Fall von "ist jetzt halt einfach so" :) |
AW: Reservirtes Wort String und keins Integer
Wie ich an anderer Stelle schon schrieb:
'string' ist ein Systemtyp, also ein Typ, der nicht durch andere Sprachelemente erzeugt werden kann, und damit integraler Bestandteil der Sprache => 'string' ist ein fett geschriebenes weil reserviertes Schlüsselwort. 'Integer' kann durch '..' dargestellt werden, ist also ein normaler Basistyp. 'Double','Single','Real' sind Records und werden deshalb syntaktisch wie 'Integer' behandelt. 'Char'... Mist... ist, öhm.. eine Ausnahme. :mrgreen: Wie auch..öhm.. 'Boolean'. |
AW: Reservirtes Wort String und keins Integer
Zitat:
|
AW: Reservirtes Wort String und keins Integer
Zitat:
Sonst müsste jeder CAST fett sein.
Delphi-Quellcode:
Reservierte Wörter sivd einfach nur fest und lassen sich nicht für irgendwas Anderes verwenden. Sie sind halt nur für diese eine Funktion reserviert.
ShowMessage(SortString('Hallo'));
ShowMessage(AnsiString('Hallo')); ShowMessage(FloatToStr(Double(1)));
Delphi-Quellcode:
type
Integer = Double; string = Integer; // geht nicht const True = False; False = 123; var False: Integer; Integer: TObject; string: IInterface; // geht nicht Das mag vielleicht historische Gründe haben, aber meiner Meinung Nach sollte String kein reserviertes Wort sein. Problem: Wenn man das jetzt ändert, dann sind Neue Codes womöglich nicht mehr mit alten Compilern kompatibel. Genauso gibt es ein Problem, wenn man neue reservierte Wörter und Steuerzeichen einführt, wo dann alte Codes nicht mehr mit neuen Compilern compatibel sein könnten. Siehe Generics, Attribute, ClassHelper, überladene Operatoren, anonyme Funktionen usw. An der Liste etwas zu ändern ist halt nicht so einfach. Witzig sind aber die reservierten Wörter, welche nur in einem bestimmten Kontext "reserviert" sind, wie z.B. Index. Problem ist da, daß der Code-Highlighter das nicht ganz kappiert und das Wort auch dann fett schreibt, selbst wenn es da gerade nicht reserviert ist. |
AW: Reservirtes Wort String und keins Integer
Zitat:
|
AW: Reservirtes Wort String und keins Integer
Der String kann natürlich in einen Record rein.
PS: die Referenzzählung, das Encoding und die CharSize stehen vor den Daten. (nicht alles bei ShortString und WideString) In der "Variable" steht nur der Zeiger auf die Daten (beim LongStrings zeigt der Zeiger aber auf das erste Char und davor verstecken sich diese Zusatzinfos, so, wie bei TClassvor beim Zeiger noch Daten liegen ... es gibt je einen festen Index nach vorne und zurück, für bestimmte Informationen) Bei Strings, Objekten, Interfaces gibt es den darstellbaren "inneren" Record und außen einen "Record" nur mit einem Pointer drin, wenn man es unbedingt so darstellen will. Beim Variant wird es dann noch schlimmer. (ein bis zwei Records) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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