4Dのオブジェクト記法によるループの記述方法をChatGPTに聞いてみた。
4D v19で実装されたFolderクラスを使う。
フォルダは次のようなコードで取得する。
$folder:=Folder(“/SOURCES/Methods/”)
フォルダに含まれているファイルリストは、次のコードで取得できる。
$files:=Folder(“/SOURCES/Methods/”).files(fk ignore invisible)
配列の要素数とかループの基本形はどうなるのかな、と4Dのマニュアルサイトを調べたら良いサンプルがすぐに見つからなかった。マニュアルサイトのFolderクラスとFileクラスの記述は大量で、どこかに書いてありそうなのになかなか見つからない。
で、ChatGPT 4に聞く。途中までのコードを提示して、続きを聞いたら、スパッと結構いい感じなのが返ってきた。
これを参考にして次のように記述した。
コード
//プリフィックスで始まるメソッド名のメソッドファイルを削除
C_TEXT($tblName; $prefix)
$prefix:="KN"
//関連メソッドを削除:フォームメソッド
C_COLLECTION($files)
$files:=New collection
//$folder:=Folder("/SOURCES/Methods/")
$files:=Folder("/SOURCES/Methods/").files(fk ignore invisible)
For ($i; 1; $files.length)
C_TEXT($currentFileName)
$currentFileName:=$files[$i-1].name // ファイル名を取得
// ファイル名がプレフィックスで始まるかどうかをチェック
If (Position($prefix; $currentFileName)=1)
// プレフィックスで始まるファイルを削除
$files[$i-1].delete()
End if
End for
ループの要素数は「files().length」プロパティで参照できる。配列は0から始まるので注意、ということだ。
また、ファイルが存在しているかのチェックはしていないコードなので、それを忘れないように、ということも言っていた。