AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Reservirtes Wort String und keins Integer
Thema durchsuchen
Ansicht
Themen-Optionen

Reservirtes Wort String und keins Integer

Ein Thema von jdelphi · begonnen am 26. Mai 2014 · letzter Beitrag vom 28. Mai 2014
Antwort Antwort
Seite 1 von 3  1 23      
jdelphi

Registriert seit: 24. Dez 2005
6 Beiträge
 
#1

Reservirtes Wort String und keins Integer

  Alt 26. Mai 2014, 20:26
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Reservirtes Wort String und keins Integer

  Alt 26. Mai 2014, 20:30
Integer ist aber trotzdem ein reserviertes Wort. Auch wenn die IDE es vielleicht nicht erkennt.
Markus Kinzler
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Reservirtes Wort String und keins Integer

  Alt 26. Mai 2014, 22:10
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.
String ist nicht fett, weil es ein Variablentyp ist, das ist nur ein Zufall. Laut meiner Kenntnis ist String deshalb fett, weil es auch eine Funktion ist, z. B.
Delphi-Quellcode:
ShowMessage(String('Hallo'));
//
Gäbe es die Funktion nicht, wäre String als Variablentyp nicht fett.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Reservirtes Wort String und keins Integer

  Alt 26. Mai 2014, 23:02
Das gabs schonmal.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 02:26
Laut meiner Kenntnis ist String deshalb fett, weil es auch eine Funktion ist
Das kann nicht der wirkliche Grund sein. Eigentlich ist das in deinem Beispiel ein Cast, kein Funktionsaufruf. Da String (u.a.) aber Compilermagic nutzt, wird hinter den Kulissen mehr gemacht als bei einem Cast einfacher Typen. Semantisch ist es aber dennoch kein Funktionsaufruf, Casts sehen aber syntaktisch in Delphi genau so aus.

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"
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 07:39
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. Wie auch..öhm.. 'Boolean'.

Geändert von Dejan Vu (27. Mai 2014 um 07:44 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 08:12
Zitat:
'Double','Single','Real' sind Records
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 08:15
String ist nicht fett, weil es ein Variablentyp ist, das ist nur ein Zufall. Laut meiner Kenntnis ist String deshalb fett, weil es auch eine Funktion ist, z. B.
Delphi-Quellcode:
ShowMessage(String('Hallo'));
//
Gäbe es die Funktion nicht, wäre String als Variablentyp nicht fett.
String ist keine Funktion.

Sonst müsste jeder CAST fett sein.
Delphi-Quellcode:
ShowMessage(SortString('Hallo'));
ShowMessage(AnsiString('Hallo'));
ShowMessage(FloatToStr(Double(1)));
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.
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Mai 2014 um 08:24 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 08:19
Zitat:
'Double','Single','Real' sind Records
Kannst Du sie als Record darstellen? Wie sind die Datentypen aufgebaut? Als Record. Das sind strings zwar auch, aber wegen dem Referenzzähler, der *vor* der Adresse der Variablen steht, kann man ihn nicht als Record definieren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

AW: Reservirtes Wort String und keins Integer

  Alt 27. Mai 2014, 08:29
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz