文字参照記号: [[...]]
文字参照記号は、文字列から一文字のみを参照するのに使用します。この構文は、テキスト変数、文字列変数、および文字フィールドの任意の場所の文字を指し示します。
注: 英語版の4DではMac OS上で、≤や≥記号が使用されていましたが、v13以降は[[と]]に統一されました。
文字参照記号が代入演算子 (:=) の左側にある場合、文字列内の指定した位置に文字を代入します。
以下の例は、vsNameが空の文字列ではない場合に、vsNameの最初の文字を大文字にします。
If(Length(vsName)#0)
vsName[[1]]:=Uppercase(vsName[[1]])
End if
また、文字列参照記号が式に使用された場合、文字 (参照される) は1文字の文字列として返されます。
If(Length(vtText)#0)
If(Character code(Substring(vtText;Length(vtText);1))=At sign)
End if
End if
If(Length(vtText)#0)
If(Character code(vtText[[Length(vtText)]])=At sign)
End if
End if
文字列参照記号を使用する際、配列の既存の要素を使用するのと同じ要領で、文字列内の既存の文字を使用しなければなりません。例えば、文字列変数の20文字目の文字を参照する場合、この変数は必ずすくなくとも20文字以上の長さがなくてはなりません。
- 長さが足りない場合、インタープリタモードでは構文エラーが発生します。
- 長さが足りない場合、コンパイルモード (オプション指定なし) では、例えば文字列やテキストの終わりを越えた位置に文字を書き込んだ場合にメモリ領域を破壊するおそれがあります。
- 長さが足りない場合、コンパイルモードで範囲チェックオプションをオンにしてある場合、例えば以下のようなコードを実行するとします。
vsAnyText:=""
vsAnyText[[1]]:="A"
すると、以下のようにランタイムエラーが表示されます。

以下のプロジェクトメソッドは、文字列内の各単語の先頭の文字を大文字に変換した結果の文字列を返します。
$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
使用例は以下の通り
ALERT(Capitalize text("hello, my name is jane doe and i'm running for president!"))
以下のように表示されます。
