配列とポインタ

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

version 2004.1 (Modified)


配列を引数として4Dコマンドや4Dプラグインのルーチンに渡すことができます。しかし、配列を引数としてメソッドに渡すことはできません。代わりに、配列へのポインタを引数としてメソッドに渡すことはできます。

インタープロセス、プロセス、およびローカル配列のポインタを引数として渡すことができます。

次にいくつかの例を示します。

・以下の例で:

   If ((0<atNames)&(atNames<Size of array(atNames))
         ` 可能であれば、選択された要素の次の要素を選択
      atNames:=atNames+1 
   End if

異なるフォームの50の異なる配列に同じ処理を実行する場合、次のプロジェクトメソッドを使用すると50回同じことを書かずにすみます:

      ` SELECT NEXT ELEMENT プロジェクトメソッド
      ` SELECT NEXT ELEMENT ( Pointer )
      ` SELECT NEXT ELEMENT ( -> Array )

   C_POINTER ($1)

   If ((0<$1->)&($1-><Size of array($1->))
      $1->:=$1->+1 ` 可能であれば、選択された要素の次の要素を選択
   End if

これは以下のように使用します:

   SELECT NEXT ELEMENT (->atNames)
      ` ...
   SELECT NEXT ELEMENT (->asZipCodes)
      ` ...
   SELECT NEXT ELEMENT (->alRecordIDs)
      ` ... 

・次のプロジェクトメソッドは、数値配列(整数、倍長整数または実数)のすべての要素の合計を返します:

      ` Array sum
      ` Array sum ( Pointer )
      ` Array sum ( -> Array )

   C_REAL ($0)

   $0:=0
   For ($vlElem;1;Size of array($1->))
      $0:=$0+$1->{$vlElem}
   End for

これは以下のように使用します:

   $vlSum:=Array sum (->arSalaries)
      ` ...
   $vlSum:=Array sum (->aiDefectCounts)
      ` ..
   $vlSum:=Array sum (->alPopulations)

・次のプロジェクトメソッドは、文字列またはテキスト配列のすべての要素を英大文字に変換します:

      ` CAPITALIZE ARRAY
      ` CAPITALIZE ARRAY ( Pointer )
      ` CAPITALIZE ARRAY ( -> Array )

   For ($vlElem;1;Size of array($1->))
      If ($1->{$vlElem}#"")
         $1->{$vlElem}:=Uppercase($1->{$vlElem}[[1]])+Lowercase(Substring($1->{$vlElem};2))
      End if
   End for

これは以下のように使用します:

   CAPITALIZE ARRAY (->atSubjects )
      ` ...
   CAPITALIZE ARRAY (->asLastNames )

配列、ポインタ、およびループ構造(For... End for等)を組み合わせることにより、配列を扱うための短くて便利なプロジェクトメソッドを作成できます。

参照

配列, 配列と4D言語.


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