4D v14.3

METHOD SET CODE

ホーム

 
4D v14.3
METHOD SET CODE

METHOD SET CODE 


 

METHOD SET CODE ( path ; code {; *} ) 
引数   説明
path  テキスト, テキスト配列 in メソッドパスを格納したテキストまたはテキスト配列
code  テキスト, テキスト配列 in 指定したメソッドのコード
演算子 in 指定時 = コンポーネントで実行されたとき、コマンドはホストデータベースに適用される (コンポーネントのコンテキスト以外ではこの引数は無視されます)

説明   

METHOD SET CODEコマンドはpath引数で指定したメソッドのコードをcode引数に渡した内容で置き換えます。このコマンドはデータベースメソッド、トリガー、プロジェクトメソッド、フォームメソッド、オブジェクトメソッドなどすべてのタイプのメソッドのコードにアクセスできます。

プロジェクトメソッド: データベースにメソッドが既に存在する場合、内容が置換されます。存在しなければ新しく作成されます。

テキスト配列あるいはテキスト変数を使用する2通りのシンタックスを使用できます:

 C_TEXT(tVpath// テキスト変数
 C_TEXT(tVcode)
 METHOD SET CODE(tVpath;tVcode) // ひとつのメソッドのコード

 ARRAY TEXT(arrPaths;0) // テキスト配列
 ARRAY TEXT(arrCodes;0)
 METHOD SET CODE(arrPaths;arrCodes) // 複数のメソッドのコード

この2つのシンタックスを混合して使用することはできません。

無効なパス名を渡した場合、コマンドはなにも行いません。

メソッドコードの先頭行に有効なメタデータ(JSON表記)が含まれる場合、それらはメソッド属性を指定するために使用され、先頭行はコードには含まれません。メタデータの例は以下の通りです:

  // %attributes = {invisible:true,lang:"fr"}

注: これらのメタデータはMETHOD GET CODEコマンドで自動的に生成されます。

メタデータの「フォルダ」プロパティに関しては、以下の点に留意して下さい。

  • このプロパティが明示されていて有効なフォルダに対応する場合、メソッドはその親フォルダに置かれます。
  • このプロパティが明示されていないかフォルダが存在しない場合、コマンドは親フォルダの階層には何の変更も加えません。
  • このプロパティが空の文字列を含む場合、メソッドはルート階層に置かれます。

このコマンドをコンポーネントから実行することもできますが、この場合 (コンポーネントコードには書き込みアクセスができないため) * 引数を渡さなければなりません。この状況で * 引数を省略するとエラー-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

 
履歴 

New
初出: 4D v13
変更: 4D v14

 
参照 

METHOD GET CODE

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)

Inherited from : METHOD SET CODE ( 4D v13.5)