RESOLVE POINTER

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

version 6.0


RESOLVE POINTER (pointer; varName; tableNum; fieldNum)

引数説明
pointerポインタ参照オブジェクトを取得するポインタ
varName文字列参照された変数の名前または空の文字列
tableNum数値参照されたテーブルまたは配列要素の番号
または 0 あるいは -1
fieldNum数値参照されたフィールドの番号 または 0

説明

RESOLVE POINTER コマンドは、pointer式によって参照されるオブジェクトの情報を取得し、引数varNametableNumfieldNumに返します。

参照されるオブジェクトの種類によって、RESOLVE POINTERコマンドは、以下のような値を返します:

参照されるオブジェクト引数
varNametableNumfieldNum
なし (NILポインタ)"" (空の文字列)00
変数変数名-10
配列配列名-10
配列要素配列名要素番号0
テーブル"" (空の文字列)テーブル番号0
フィールド"" (空の文字列)テーブル番号フィールド番号

Notes:

pointerに渡す値がポインタ式でない場合には、シンタックスエラーが発生します。

RESOLVE POINTER コマンドは、ローカル変数のポインタには使用できません。何故なら、ローカル変数は、同じ名前で異なる場所で定義できるため、目的のローカル変数を特定することができないからです。

例題

1. フォーム内で、v1, v2... v100という名前で入力可能な変数100個を作成します。これを実行するには、以下のような手順を実行します:

a. 入力可能な変数を1つ作成し、vと名付ける。

b. オブジェクトのプロパティを設定する。

c. オブジェクトに以下のメソッドを作成する:

   DoSomething (Self)  ` DoSomething はデータベースのプロジェクトメソッド

d. この時点で、必要な回数だけ変数を複製することも、フォームエディタの「グリッドで変数作成」機能を使用することもできる。

e. DoSomething メソッド内で、このメソッドが呼び出される変数のインデックスを知る必要がある場合には、以下のように記述する:

   RESOLVE POINTER($1;$vsVarName;$vlTableNum;$vlFieldNum)
   $vlVarNum:=Num(Substring($vsVarName;2))

この方法でフォームを作成することによって、100個の変数のためのメソッドを一度書くだけで済むことに注目してください。DoSomething (1), DoSomething (2)...,DoSomething (100)を作成する必要はありません。

2. デバッグのために、メソッドへの2番目の引数 ($2) がテーブルへのポインタであることを確認する必要があるとします。この場合、メソッドの最初で、以下のように記述します:

      ` ...
   If (<>DebugOn)
      RESOLVE POINTER($2;$vsVarName;$vlTableNum;$vlFieldNum)
      If (Not(($vlTableNum>0)&($vlFieldNum=0)&($vsVarName="")))
         ` 警告: ポインタはーブルへの参照ではない
         TRACE
      End if
   End if
      ` ...

3. DRAG AND DROP PROPERTIES コマンドの例を参照.

参照

DRAG AND DROP PROPERTIES, Field, Get pointer, Is a variable, Nil, Table.


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