配列には常に要素ゼロがあります。配列がフォームオブジェクトをサポートする場合、要素ゼロは表示されませんが、ランゲージでの使用に制限はありません。
(ひとつだけ例外があります。配列タイプのリストボックスでは、編集中の元の値を保持するため、内部的に0番目の要素が使用されています。この特別なケースでは、開発者は0番目の要素を使用できません。)
要素ゼロの用途の一例として、配列とフォームオブジェクトで説明しているコンボボックスの例があります。
その他の例を2つ挙げます。
1. 前に選択した要素以外の要素をクリックした場合のみ動作を行わせる場合、選択したそれぞれの要素を追跡する必要があります。これを実行する方法の1つは、選択する要素の要素番号を保持するプロセス変数を使用することです。もう1つの方法は、次のように配列の要素ゼロを使用する方法です:
Case of
:(Form event=On Load)
ARRAY TEXT(atNames;5)
atNames{0}:="0"
:(Form event=On Unload)
CLEAR VARIABLE(atNames)
:(Form event=On Clicked)
If(atNames#0)
If(atNames#Num(atNames{0}))
vtInfo:=atNames{atNames}+"がクリックされ、それは選択されていませんでした。"
atNames{0}:=String(atNames)
End if
End if
:(Form event=On Double Clicked)
If(atNames#0)
ALERT(atNames{atNames}+"がダブルクリックされました。")
End if
End case
2. ASCII互換モードで、ドキュメントまたはシリアルポートから一連の文字群を送受信する場合、4Dは異なるASCIIマップを使用するプラットフォーム間やシステム間で、ASCIIコードをフィルタする方法 (コマンドUSE CHARACTER SET, Mac to ISO, ISO to Mac, Mac to Win そして Win to Mac) を提供します。
場合によっては、ASCIIコードを変換する方法を完全に制御したいことがあります。これを行う1つの方法は、N番目の要素が、ASCIIコードNの文字をソースとする変換後のASCIIコードに設定される、255要素からなる整数配列を使用することです。例えば、ASCIIコード#187を#156に変換する場合、データベース中で使用されるインタープロセス配列を初期化するメソッドの中に、<>aiCustomOutMap{187}:=156と<>aiCustomInMap{156}:=187と記述します。次のカスタムプロジェクトメソッドを使用して、一連の文字群を送信することができます:
この応用例では、NULL文字(ASCIIコードのゼロ)が入っている一連の文字群を送受信する場合、配列<>aiCustomOutMapおよび<>aiCustomInMapのゼロ要素は、255要素の配列の他の要素と同じ役割を果たします。