2次元配列

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 6.0


配列宣言コマンドはそれぞれ、1次元または2次元の配列を作成またはサイズ変更ができます。次に例を示します:

   ARRAY TEXT (atTopics;100;50) ` 100行と50列からなるキスト配列を作成

2次元配列は、本質的にはランゲージオブジェクトなため、表示も印刷もできません。

この例で、

atTopicsは、2次元配列です。

atTopics{8}{5}は、8行5列目の要素です。

atTopics{20}は、20行目でそれ自身は1次元配列です。

Size of array(atTopics)は、行数の100を返します。

Size of array(atTopics{17})は、17行目の列数である50を返します。

以下の例では、データベースの各テーブルの各フィールドへのポインタが2次元配列に格納されます:

   C_LONGINT($vlLastTable;$vlLastField)
   C_LONGINT($vlFieldNumber)
      ` ーブルと同じ数の行 (空で、列なし) を作成
   $vlLastTable:=Get last table number
   ARRAY POINTER (<>apFields;$vlLastTable;0)  `X行0列の2D配列
      ` ーブル毎に
   For ($vlTable;1;$vlLastTable)
      If(Is table number valid($vlTable))
         $vlLastField:=Get last field number($vlTable) 
            ` 要素値を与える
         $vlColumnNumber:=0
         For ($vlField;1;$vlLastField)
            If(Is field number valid($vlTable;$vlField))
               $vlColumnNumber:=$vlColumnNumber+1
                  `ーブル行に列を挿入
               INSERT ELEMENT(<>apFields{$vlTable};$vlColumnNumber;1)
                  `セルにポインタを代入
               <>apFields{$vlTable}{$vlColumnNumber}:=Field($vlTable;$vlField)
            End if 
         End for
      End if 
   End for

この2次元配列が初期化されたあと、以下の方法で特定のテーブルのフィールドへのポインタを取得できます:


      ` 画面に現在表示されいるーブルの、フィールドへのポインタを取得:
   COPY ARRAY (<>apFields{Table(Current form table)};$apTheFieldsIamWorkingOn)
      ` ブールと日付フィールドを初期化
   For ($vlElem;1;Size of array($apTheFieldsIamWorkingOn))
      Case of
         : (Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is Date)
            $apTheFieldsIamWorkingOn{$vlElem}->:=Current date
         : (Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is Boolean)
            $apTheFieldsIamWorkingOn{$vlElem}->:=True
      End case
   End for
   

Note: この例でわかるように、2次元配列の行のそれぞれの列数は同じサイズでも異なるサイズでも構いません。

参照

配列.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次