Zeichenkette

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Als Zeichenkette (in englisch: String) wird in der Programmierung üblicherweise eine beliebige Anzahl von Zeichen angesehen. Eine entsprechende Konstante (Literal) ist als Zeichenfolge unter Anführungszeichen stehend anzugeben. Zeichenketten können dann in Variablen, sogenannte Zeichenketten- oder Stringvariablen, gespeichert werden oder generell in Zeichenkettenausdrücken gebildet werden und bei BASIC-Befehlen mit Zeichenkettenparametern wie etwa bei Lade- und Speicherbefehlen LOAD, SAVE, VERIFY und OPEN u.v.a.m.[1] oder bei Ausgabebefehlen, z.B. mit PRINT oder CMD angegeben werden. Weiterhin können Zeichenketten per READ aus mittels DATA abgelegter Daten eingelesen werden. Hierbei sind jedoch einige Besonderheiten zu berücksichtigen (siehe: DATA).

10 PRINT "DIES IST EINE ZEICHENKETTE"
11 INPUT "DIES AUCH (WEITER MIT RETURN)"; A$
12 PRINT "DIE AUSGABE AUCH: " A$

Zeichenkettenvariablen haben den Vorteil in Programmen entsprechend angepasst werden zu können. Somit kann platzsparender programmiert werden.
Eine Zeichenkette beim C64 darf maximal 255 Zeichen lang sein. Zeichenkettenvariablen sind dabei entsprechend flexibel in der Länge, welche im Bereich von 0 bis 255 liegen kann.

  • Bei BASIC-Ausgabebefehlen wie dem PRINT- oder CMD-Befehl werden Zeichenketten mit dem Semikolon (;) fehlerfrei kombiniert bzw. aneinandergereiht. Bei anderen BASIC-Befehlen, die nicht der Ausgabe dienen oder in anderen Programmiersprachen ist das Zurückgreifen auf eine Verknüpfung von Zeichenketten durchaus üblich oder notwendig.
  • Mit dem Pluszeichen (+) als einzigen für Zeichenketten möglichen Operator können Zeichenketten zusammengefügt werden. Dabei ist es egal, ob es mehrere oder sogar gleiche Zeichenketten sind.
    Anmerkung für den speicherschonenden Umgang: Das Pluszeichen sollte, wenn möglich, vermieden werden, da dadurch Zwischenergebnisse in der Zeichenkettenarithmetik am String-Heap erzeugt werden, die gleich wieder nach der Ausgabe verworfen werden und damit die Garbage Collection hier eher aktiv wird bzw. werden muss.
10 A$="1": B$="2"
11 C$ = A$ + B$
12 A$ = A$ + A$ + C$ + " " + B$
13 A$ = A$ + B$ + C$ + A$
14 B$ = B$ + A$
15 PRINT "A$:"+A$ ;CHR$(13); "B$:"+B$ ;CHR$(13); "C$:"+C$
  • Mit den BASIC-Befehlen LEFT$, RIGHT$ und MID$ werden Teile aus Zeichenketten entsprechend links- bzw. rechtsseitig oder mittig entnommen.
  • Die Länge einer Zeichenkette lässt sich mit LEN ermitteln.
  • Zur Umwandlung von Zeichenketten in eine Zahl sind ASC und VAL nützlich.
  • Zur Umwandlung von einer Zahl in eine Zeichenkette werden CHR$ und STR$ verwendet.
  • Bestimmte Zeichen wie z.B. Steuerzeichen lassen sich nur mit dem CHR$-Befehl einer Zeichenkette hinzufügen.
  • Gezielt kann eine Zeichenkettenvariable mit einem Leerstring A$ = "" gelöscht werden (was den belegten Speicher spätestens nach einer Garbage-Collection frei gibt).
  • Die o.g. Befehle lassen sich auch kombiniert anwenden:
 A$="DIES IST EIN TEST": PRINT CHR$( LEN(A$)+60 )
  • Um fehlerfrei, ohne ungeplanten Abbruch und Meldungen des Interpreters die Eingabe-Befehle GET und INPUT zu nutzen, lohnt es sich hierfür nur Zeichenkettenvariablen zu nutzen und diese bei Bedarf in eine Zahlenvariable (A oder A%) mit VAL oder ASC umzuwandeln.


BASIC-Erweiterungen[Bearbeiten]

Die Zeichenketten-Befehle des BASIC V2.0 bieten nur begrenzten Komfort. Deshalb findet man in Basic-Erweiterungen und höheren BASIC-Versionen oft weitergehende Befehle bzw. Funktionen, wobei beispielsweise Zeichenketten abseits des eigentlichen Gebrauchs auch als Speicherort für grafische Daten (Bitmap-Ausschnitt, Sprites) herangezogen werden können. Typische Vertreter wären:


Weitere Beispiele[Bearbeiten]

Die Zeichenkette A$ einer beliebigen Länge (LA) maximal 255-mal mit einem Leerzeichen füllen:

10 A$="": LA=255: FOR X=1 TO LA: A$ = A$ + " ": NEXT X


Zusammengesetzte Zeichenkette bei der Angabe des Dateinamens mit Angabe von Zugriffsmodus und Dateityp:

10 D$="DATEINAME"
20 V=2
30 OPEN 1,8,3,D$+STR$(V)+CHR$(126)+",S,R"


Ausgabe von verschiedenen Zeichenketten bei PRINT:

10 A$="GUTEN"
11 B$="MORGEN"
12 C$="TAG"
20 PRINT A$+" ";B$ CHR$(13)+ A$C$;CHR$(13),C$,B$

Erzeugt als Ausgabe

RUN
GUTEN MORGEN
GUTENTAG
          TAG       MORGEN

READY.


Anmerkungen[Bearbeiten]

<references>
  1. Bei BASIC V2.0 erlauben folgende Befehle und Funktionen Zeichenkettenausdrücke in Parametern: ASC, CMD, FRE, IF, INPUT, LEFT$, LEN, LOAD, MID$, OPEN, POS, PRINT, PRINT#, RIGHT$, SAVE, USR, VAL, VERIFY
    Weitere finden sich bei BASIC-Erweiterungen oder höheren BASIC-Versionen.