| 4D v18METHOD SET CODE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 METHOD SET CODE 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| METHOD SET CODE ( path ; code {; *} ) | ||||||||
| 引数 | 型 | 説明 | ||||||
| path | テキスト, テキスト配列 |   | メソッドパスを格納したテキストまたはテキスト配列 | |||||
| code | テキスト, テキスト配列 |   | 指定したメソッドのコード | |||||
| * | 演算子 |   | 指定時 = コンポーネントで実行されたとき、コマンドをホストデータベースに適用する (コンポーネントのコンテキスト以外ではこの引数は無視されます) | |||||
METHOD SET CODEコマンドはpath引数で指定したメソッドのコードをcode引数に渡した内容で置き換えます。
データベースメソッド、トリガー、プロジェクトメソッド、フォームメソッド、オブジェクトメソッドなど、すべてのタイプのメソッドのコードにこのコマンドはアクセスできます。
メソッドが存在しなければ、code引数に渡した内容で新規作成されます。
注: プロジェクトデータベースにおいては、データベースメソッド、トリガー、およびプロジェクトメソッドのみ新規作成することができます。
テキスト配列あるいはテキスト変数を使用する2通りのシンタックスを使用できます:
 C_TEXT(tVpath) // テキスト変数
 C_TEXT(tVcode)
 METHOD SET CODE(tVpath;tVcode) // 1つのメソッドのコード ARRAY TEXT(arrPaths;0) // テキスト配列
 ARRAY TEXT(arrCodes;0)
 METHOD SET CODE(arrPaths;arrCodes) // 複数のメソッドのコードこの2つのシンタックスを混合して使用することはできません。
無効なパス名を渡した場合、コマンドはなにも行いません。
METHOD SET CODE が呼ばれた場合、デフォルトでメソッド属性はリセットされます。ただし code 引数の先頭行に有効なメタデータ(JSON表記)が含まれる場合、それらはメソッド属性を指定するために使用され、先頭行はコードには含まれません。メタデータの例は以下の通りです:
  // %attributes = {"invisible":true,"lang":"fr","folder":"Security"}注: これらのメタデータはMETHOD GET CODEコマンドで自動的に生成されます。サポートされる属性についての詳細な情報に関しては、METHOD SET ATTRIBUTES コマンドを参照して下さい。
メタデータの「folder」プロパティに関しては、以下の点に留意して下さい。
このコマンドをコンポーネントから実行することもできますが、この場合 (コンポーネントコードには書き込みアクセスができないため) * 引数を渡さなければなりません。この状況で * 引数を省略するとエラー-9763が生成されます。
この例題ではアプリケーションのすべてのメソッドを書き出し/読み込みします:
 $root_t:=Get 4D folder(Database folder)+"methods"+Folder separator
 ARRAY TEXT($fileNames_at;0)
 CONFIRM("メソッドを読み込みますか、書き出しますか?";"Import";"Export")
 
 If(OK=1)
    DOCUMENT LIST($root_t;$fileNames_at)
    For($loop_l;1;Size of array($fileNames_at))
       $filename_t:=$fileNames_at{$loop_l}
       DOCUMENT TO BLOB($root_t+$filename_t;$blob_x)
       METHOD SET CODE($filename_t;BLOB to text($blob_x;UTF8 text without length))
    End for
 Else
    If(Test path name($root_t)#Is a folder)
       CREATE FOLDER($root_t;*)
    End if
    METHOD GET PATHS(Path project method;$fileNames_at)
    METHOD GET CODE($fileNames_at;$code_at)
    For($loop_l;1;Size of array($fileNames_at))
       $filename_t:=$fileNames_at{$loop_l}
       SET BLOB SIZE($blob_x;0)
       TEXT TO BLOB($code_at{$loop_l};$blob_x;UTF8 text without length)
       BLOB TO DOCUMENT($root_t+$filename_t;$blob_x)
    End for
 End if
 SHOW ON DISK($root_t)
	プロダクト: 4D
	テーマ: デザインオブジェクトアクセス
	番号: 
        1194
        
        
        
	
	初出: 4D v13
	変更: 4D v14
	変更: 4D v15
	ランゲージリファレンス ( 4D v18)
	
 コメントを追加
コメントを追加