4D v16.3

二次元配列

ホーム

 
4D v16.3
二次元配列

二次元配列  


 

 

配列宣言コマンドはそれぞれ、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 IN ARRAY(<>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
テーマ: 配列

 
履歴 

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)