Symbole für direkten Zeichenzugriff

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 3


Einführung

Mit den Symbolen:

können Sie sich auf ein einzelnes Zeichen innerhalb einer Zeichenkette beziehen. So können Sie in einem Feld bzw. einer Variablen vom Typ Alpha bzw. Text einzelne Zeichen ansprechen.

Hinweis: Die Sonderzeichen auf Macintosh erhalten Sie mit der Kombination Wahltaste + Zeichen < bzw. Wahl- + Umschalttaste + Zeichen >.

Diese Syntax auf der linken Seite des Zuweisungsoperators (:=) weist der angegebenen Position in der Zeichenkette ein Zeichen zu. Beispiel: Ist vsName kein leerer String, setzt folgender Code das erste Zeichen von vsName in Großbuchstaben:

   If (vsName#"")
      vsName[[1]]:=Uppercase(vsName[[1]])
   End if

Diese Syntax mit dem gewünschten Zeichen innerhalb eines Ausdrucks gibt dieses als String mit einem Zeichen zurück:

      ` Folgendes Beispiel prüft, ob das letzte Zeichen von vtText das Jokerzeichen "@" ist
   If (vtText # "")
      If (Ascii(Substring(vtText;Length(vtText);1))=At Sign)
         ` ...
      End if
   End if
   
      ` Mit den Sondersymbolen schreiben Sie einfacher:
   If (vtText # "")
      If (Ascii(vtText[[Length(vtText)]])=At Sign)
         ` ...
      End if
   End if

Ungültiger Zeichenzugriff

Beim Einsatz der Symbole für direkten Zeichenzugriff müssen Sie vorhandene Zeichen in einer Zeichenkette auf dieselbe Weise wie die Elemente in einem Array ansprechen. Sprechen Sie beispielsweise das 20. Zeichen einer Textvariablen an, muss diese Variable auch mindestens 20 Zeichen enthalten. Ist das nicht der Fall,

erhalten Sie im interpretierten Modus keinen Syntaxfehler.

kann das im kompilierten Modus (ohne Optionen) zum Überschreiben von anderweitig belegtem Speicher führen, wenn Sie z.B. ein Zeichen nach dem Ende einer Zeichenkette oder eines Textes schreiben.

tritt im kompilierten Modus ein Fehler mit der Option Range Checking On auf. Bei dem Code:

   vsAnyText:=""
   vsAnyText[[1]]:="A"

erscheint folgender Runtime-Fehler:

Beispiel

Folgende Projektmethode schreibt den ersten Buchstaben jedes Worts im Text groß, der als Parameter übergeben wurde und gibt den Text mit großen Anfangsbuchstaben zurück:

      ` Projektmethode Text mit Großbuchstaben
      ` Text mit Großbuchstaben ( Text ) -> Text
      ` Text mit Großbuchstaben( Ursprungstext ) -> Text mit Großbuchstaben

   $0:=$1
   $vlLen:=Length($0)
   If ($vlLen>0)
      $0[[1]]:=Uppercase($0[[1]])
      For ($vlChar;1;$vlLen-1)
         If (Position($0[[$vlChar]];" !&()-{}:;<>?/,.=+*")>0)
            $0[[$vlChar+1]]:=Uppercase($0[[$vlChar+1]])
         End if
      End for
   End if

Die Zeile:

   ALERT(Capitalize text ("Hallo, mein Name ist Rita und ich werde bald Chefin!"))

zeigt folgende Meldung auf dem Bildschirm:

Referenz

Ascii, ASCII Codes, Char.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next