Datentypen STRING und ARRAY OF CHAR

05/07/2009 - 09:29 von Dietrich Pfeiffer | Report spam
Hallo,

ich lerne noch PASCAL
und benutze FPC 2.2.0 unter Windows XP und Ubuntu 9.04.

Der Datentyp STRING und ARRAY OF CHAR unterscheiden sich wie folgt:

VAR
str_buchungstext : STRING[32];
a_buchungstext : ARRAY [1..32] OF CHAR;

ReadLn(str_buchungstext); bzw. ReadLn(a_buchungstext);

Die Ausgabe unterscheidet sich nun:
WriteLn(str_buchungstext:32, ... usw.);
gibt den STRING rechtsbündig aus.

Die Variable a_buchungstext wird aber linksbündig ausgegeben
und enthàlt nicht druckbare Zeichen entgegen der Variable str_buchungstext.

Kann mir bitte das jemand tiefer erklàren?

Gruß Dieterich
 

Lesen sie die antworten

#1 Sieghard Schicktanz
05/07/2009 - 20:16 | Warnen spam
Hallo Dietrich,

Du schriebst am Sun, 05 Jul 2009 09:29:21 +0200:

ich lerne noch PASCAL



Das geht am besten, indem man die Sprachbeschreibung durcharbeitet, sowie
für den benutzten Compiler die Dokumentation seiner Funktionsweise,
Erweiterungen und Eigenheiten.

und benutze FPC 2.2.0 unter Windows XP und Ubuntu 9.04.



FPC ist eigentlich recht gut mit Dokumentation ausgestattet.

Der Datentyp STRING und ARRAY OF CHAR unterscheiden sich wie folgt:



Nee, das, was Du da dargestellt hast, ist keine _Erklàrung_ der
Unterschiede, sondern bestenfalls eine Darstellung von oberflàchlichen
Erscheinungen im Zusammenhang mit - z.T. sogar fehlerhafter - Nutzung der
Typen.

Die Ausgabe unterscheidet sich nun:
WriteLn(str_buchungstext:32, ... usw.);
gibt den STRING rechtsbündig aus.



So ist das eben compilerseitig definiert - Strings (eines dafür
vorgesehenen Datentyps, bei FPC String, Shortstring und ANSIstring) werden
eben linksbündig ausgegeben, und die in der Datenstruktur enthaltene
Làngenangabe erlaubt das Ausblenden nicht zum eingetragenen Inhalt
gehöriger Datenwerte...

Die Variable a_buchungstext wird aber linksbündig ausgegeben
und enthàlt nicht druckbare Zeichen entgegen der Variable
str_buchungstext.



... im Gegensatz zu einem einfachen ARRAY [...] OF char, das nach der
"Erstellung" wàhrend des Programmlaufs erstmal genau den Datenschrott
enthàlt, der von der Vorgeschichte der Maschine dorthin geschrieben wurde,
wo die Variable zu liegen kommt, und das _KEINE_ Angabe für den Umfang der
tatsàchlich eingetragenen Datenwerte (des "Strings" bzw. Textes) enthàlt.

Kann mir bitte das jemand tiefer erklàren?



Das erklàrst Du Dir am besten selber, indem Du die oben angesprochene
Dokumentation von FPC zu den String-Typen liest und zu verstehen suchst.
Wenn Du dazu weitergehende Fragen hast, die dort nicht behandelt werden,
kannst Du ja weiterfragen. Aber die Dokumentation solltest Du schon kennen.
BTW, Du wirst dabei feststellen, daß es mehrere String-Varianten bei FPC
gibt (und auch bei anderen gàngigen Pascal-Compilern). Diese sind z.T.
_erheblich_ komplexer als ein einfaches ARRAY [...] OF char, beinhalten
aber _immer_ eine Angabe zur Anzahl der aktuell eingetragenen gültigen
Zeichen, was der Hauptunterschied zum einfachen ARRAY-Typ ist.
Daneben gibt es weitere Varianten, die durch den Einbau von Maßnahmen zur
Kompatibilitàt mit anderen Programmiersprachen, vornehmlich C, aufgenommen
wurden und z.T. auch als "Strings" bezeichnet werden.
Aber das steht alles auch in der Dokumentstion.

(Weitergabe von Adressdaten, Telefonnummern u.à. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder àhnlichem)
Mit freundlichen Grüßen, S. Schicktanz

Ähnliche fragen