Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Warum ist 'String' ein reserviertes Wort? (https://www.delphipraxis.net/68228-warum-ist-string-ein-reserviertes-wort.html)

fwsp 26. Apr 2006 18:04


Warum ist 'String' ein reserviertes Wort?
 
Hallo

der Titel sagt es eigentlich schon: Warum ist 'String' als Typenbezeichner ein reserviertes Wort (warum wird es hervorgehoben) und 'Integer' beispielsweise nicht?

Dax 26. Apr 2006 18:07

Re: Warum ist 'String' ein reserviertes Wort?
 
Ich schätze, weil du Strings nicht wirklich enger begrenzen kannst, sodass string wirklich ein elementares Sprachelement darstellt. Integer, Word, Byte, Int64 und Co sind begrenzbar(er). Versuch mal nen String enger zu fassen als "Zeichenkette". Und dann versuch mal, nen Integer enger zu fassen als "von -2^31 bis 2^31-1". Ersteres wird scheitern, zweiteres nicht ;)

Falls das kompletter Schwachsinn sein sollte: einfach mal die Bohrinseler fragen :zwinker:

MrKnogge 26. Apr 2006 18:26

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von Dax
Ersteres wird scheitern, zweiteres nicht ;)

Was ist mit 'string[254]' ?

Dax 26. Apr 2006 18:28

Re: Warum ist 'String' ein reserviertes Wort?
 
Das ist lediglich eine Längenbegrenzung und ist damit nichts anderes als ein Char-Array dieser Größe *mein*

Luckie 26. Apr 2006 22:53

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von Dax
Versuch mal nen String enger zu fassen als "Zeichenkette".

String = n*Char
Somit wäre Char der kleinste Zeichentyp, denn ein String ist auch nur eine Aneinaderreihung von einzelnen Zeichen.

alzaimar 27. Apr 2006 06:51

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Dax
Versuch mal nen String enger zu fassen als "Zeichenkette".

String = n*Char
Somit wäre Char der kleinste Zeichentyp, denn ein String ist auch nur eine Aneinaderreihung von einzelnen Zeichen.

Äh... und was ist mit dem Längenbyte? Oder der impliziten Übereinkunft, daß das #0-Zeichen den String begrenzt. Ein String ist nunmal mehr als eine Aneinanderreihung von Zeichen, so wie ein (DP-)Team mehr ist als die Summe der einzelnen Mitglieder... :mrgreen:

Um dann noch ein weiteres Argument einzustreuen:
String ist ein Sprachbestandteil von Delphi, also ist String ein reserviertes Schlüsselwort. Ich hab ich auch immer geärgert, wieso Integer, Byte etc. nicht fett gedruckt werden, aber so ist das nun mal: Das sind einfach nur irgend welche Datentypen, wie sie Jeder anlegen kann.

Dagegen spricht nun aber, das es dann bestimmte Basistypen geben müsste, die auch Sprachbestandteil von Delphi/Pascal sind. Wie man aus dieser argumentativen Zwickmühle rauskommt, überlasse ich aber Leuten, die das drauf haben: maaaarrraaaaabuuuuuu.

Robert Marquardt 27. Apr 2006 07:15

Re: Warum ist 'String' ein reserviertes Wort?
 
string ist ein reserviertes Wort im originalen Pascal.

alzaimar 27. Apr 2006 07:29

Re: Warum ist 'String' ein reserviertes Wort?
 
Integer nicht?

marabu 27. Apr 2006 07:58

Re: Warum ist 'String' ein reserviertes Wort?
 
Guten Morgen.

STRING war im Original-Pascal kein reserviertes Wort, eher ein Konzept, welches sich noch voll und ganz auf dem array of char abstützte. Erst Borland und später auch andere (Jensen&Partners, Stony Brook, ...) haben durch die feste Verdrahtung des strukturierten Typen STRING im Compiler-Kern die Bedeutung gegeben, die wir heute noch als short string kennen - Compiler Magic gab es auch schon in TP1.

Die Redefinition von Integer ist völlig problemlos, aber der Typ String mit seiner Verankerung in den Kernroutinen erschien Borland wohl so schützenswert, dass sie STRING zum reservierten Wort erklärt haben.

Grüße vom marabu

sakura 27. Apr 2006 08:58

Re: Warum ist 'String' ein reserviertes Wort?
 
So, für die Antwort legt John Kaster zwar nicht seine Hand ins Feuer, aber er glaubt, dass es damals folgender Grund war: string benötigt Compiler-Magic.

String als reserviertes Wort zu setzen war eine Borland-Entscheidung vor nunmher fast 20 Jahren, daher ist er sich auch nicht mehr 100%ig sicher, aber er glaubt, dass das der Grund war. :zwinker:

...:cat:...

xaromz 27. Apr 2006 09:08

Re: Warum ist 'String' ein reserviertes Wort?
 
Hallo,

es gibt noch eine einfache Erklärung (auch wenn die Entscheidung früher möglicherweise aus anderen Gründen fiel):
String ist kein ordinaler Typ. String, Class, Record, Object, alles keine ordinalen Typen, alles reservierte Wörter.

Gruß
xaromz

Hawkeye219 27. Apr 2006 09:13

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von xaromz
es gibt noch eine einfache Erklärung (auch wenn die Entscheidung früher möglicherweise aus anderen Gründen fiel):
String ist kein ordinaler Typ. String, Class, Record, Object, alles keine ordinalen Typen, alles reservierte Wörter.

Und was ist mit Real? Kein ordinaler Typ, aber auch kein reserviertes Wort. :wink:

Gruß Hawkeye

xaromz 27. Apr 2006 09:39

Re: Warum ist 'String' ein reserviertes Wort?
 
Hallo,
Zitat:

Zitat von Hawkeye219
Und was ist mit Real? Kein ordinaler Typ, aber auch kein reserviertes Wort. :wink:

Stimmt natürlich, aber ein Datentyp, der vom Prozessor direkt verarbeitet werden kann. Sozusagen ein Basis-Datentyp.

Gruß
xaromz

Chewie 27. Apr 2006 09:49

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von alzaimar
Um dann noch ein weiteres Argument einzustreuen:
String ist ein Sprachbestandteil von Delphi, also ist String ein reserviertes Schlüsselwort. Ich hab ich auch immer geärgert, wieso Integer, Byte etc. nicht fett gedruckt werden, aber so ist das nun mal: Das sind einfach nur irgend welche Datentypen, wie sie Jeder anlegen kann.

Dagegen spricht nun aber, das es dann bestimmte Basistypen geben müsste, die auch Sprachbestandteil von Delphi/Pascal sind. Wie man aus dieser argumentativen Zwickmühle rauskommt, überlasse ich aber Leuten, die das drauf haben: maaaarrraaaaabuuuuuu.

Ich heiß zwar nicht Marabu, aber ich erinnere mich, irgendwann mal die system.pas des Free-Pascal-Compilers angekuckt zu haben und folgendes gesehen zu haben:

Delphi-Quellcode:
type
  Byte = 0..255;
  Word = 0..65535;
  //usw.
Ist auch einleuchtend, denn Integer-Wertebereiche sind nichts weiter als geordnete, beschränkte Mengen.

xZise 27. Apr 2006 20:51

Re: Warum ist 'String' ein reserviertes Wort?
 
Also ich tippe darauf, dass "String" ein oberbegriff ist.
Zitat:

Zitat von DSDT
Wird seitdem in Win32 eine Variable vom Typ String deklariert, handelt es sich um einen AnsiString

Vielleicht das?

Oxmyx 27. Apr 2006 20:57

Re: Warum ist 'String' ein reserviertes Wort?
 
Dazu kommt, dass es sich bei string um einen Alias-Typen handelt, der je nach Compilereinstellung etwas anderes bedeutet.

sakura 27. Apr 2006 21:11

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von Oxmyx
der je nach Compilereinstellung etwas anderes bedeutet.

Nicht Compilerstellung, aber Version ;) Ist bei Integer, Char, etc. nicht anders...

...:cat:...

Hawkeye219 27. Apr 2006 21:15

Re: Warum ist 'String' ein reserviertes Wort?
 
@sakura

Oxmyx meinte wohl folgendes:

Zitat:

Zitat von Delphi6-Hilfe
Im voreingestellten Status {$H+} interpretiert der Compiler string als AnsiString (wenn auf das reservierte Wort keine Zahl in eckigen Klammern folgt). Bei Verwendung der Direktive {$H–} wird string als ShortString interpretiert.

Gruß Hawkeye

sakura 27. Apr 2006 21:16

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von xZise
Also ich tippe darauf, dass "String" ein oberbegriff ist.

Also ich gebe John Kasters Aussage den Vorsprung :mrgreen: Integer ist doch auch ein Oberbegriff, der sogar sprachlich die Bedeutung hat ;)

...:cat:...

sakura 27. Apr 2006 21:17

Re: Warum ist 'String' ein reserviertes Wort?
 
Zitat:

Zitat von Hawkeye219
Oxmyx meinte wohl folgendes:

Compileroption :wall: Klar :duck:

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 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