4D v16.3

配列とポインタ

ホーム

 
4D v16.3
配列とポインタ

配列とポインタ  


 

 

配列を引数として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

注: 4D v13以降、数値配列の要素の総和を計算するためには Sum 関数を使えば簡単に計算できます。

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

 $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)

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



参照 

配列
配列と4D言語

 
プロパティ 

プロダクト: 4D
テーマ: 配列

 
履歴 

 
ARTICLE USAGE

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