Tips

変数、フィールドいずれでもポインターを取得出来るメソッド

日付2003/09/24
ID29679 (英語原文参照)
バージョン2003.1
プラットフォームMac & Win

この記事は、最新ではないバージョンに関連した方法について解説しています。

最新のバージョンでは推奨されていないか、または他の方法で簡単に実現できる可能性があります。

メソッドサンプルです。
(Version 6.7.x, 6.8.x, 2003.xで有効)


  ` ユーティリティメソッド: tool_Getpointer
  ` 変数かフィールドの名前を基にそれらを指すポインタを返します


C_POINTER($0)
C_STRING255;$1)
C_STRING(255;$var)
C_LONGINT($tableID;$fieldID)
C_LONGINT($vlTable;$vlField;$i)
C_STRING(255;$tableName;0)
C_LONGINT($oci_l_tableMax)


$var:=$1
$tableID:=0
$fieldID:=0
$0:=Get pointer($var)
If (Undefined($0->))  ` フィールドと仮定して...
  $oci_l_tableMax:=Count tables
  For ($vlTable;1;$oci_l_tableMax)
    $tableName:="["+Table name($vlTable)+"]"
    If (Position($tableName;$var)>0)
      $tableID:=$vlTable
      $vlTable:=$oci_l_tableMax+1
    End if
  End for


  If ($tableID>0)
    $vlField:=Count fields($tableID)
    For ($i;1;$vlField)
      If (Position(Field name($tableID;$i);$var)>0)
        $fieldID:=$i
        $i:=$vlField+1
      End if
    End for
  End if


  If (($tableID>0) & ($fieldID>0))
    $0:=Field($tableID;$fieldID)
  End if
End if


記述例:


C_POINTER(pointerVar)


pointerVar:=tool_Getpointer("myvariable")

もしくは、

pointerVar:=tool_Getpointer("[table]fieldname")