execmacro文の相対パスNo.10849
h-tom さん 22/07/18 22:17
 
h-tom です。

秀丸エディタ Ver.9.18β1 (x64版)

マクロヘルプのexecmacro文で相対パスの説明をみて、確認用のマクロを作ってみた
のですが、エラーが出ます。
動作環境 − トラブル対策 − カレントフォルダ移動 は「自動」です。
「移動する(従来通り)」だとエラーは出ません。

ついでに execmacro文 の相対パスの説明部分ですが、
> これは互換性のためにそうなっていて、例えばマクロファイルからの相対パスにす
>る場合は、currentmacrodirectoryを使ってください。
は、
> これは互換性のためにそうなっていて、例えば実行中のマクロファイルからの相対
>パスにする場合は、currentmacrodirectoryを、
> マクロファイル用のフォルダからの相対パスにする場合は、macrodir 使ってくだ
>さい。
のほうがいいかな?

------------------------- エラー時の状況 --------------------------
マクロを実行しているファイル:c:\temp\test.txt
実行しいているマクロ        :macrodir + "\\test.mac"
test.macから呼び出すマクロ  :c:\temp\check\check.mac

//ここから 表示されたメッセージ
  ---------------------------
  エラー
  ---------------------------
  ファイルのパス(ファイルを含んでいるはずのフォルダ自体)が存在しません。
  ファイル名 = C:\temp\check\check.mac
 
  エラー箇所の内容(変換した内容):
      } else  {
 
  ---------------------------
  OK  
  ---------------------------
//ここまで 表示されたメッセージ

//ここから アウトプット枠の出力
  filename  = c:\temp\test.txt
  directory = c:\temp
  existfile(c:\temp\check\check.mac) = 1
//ここまで アウトプット枠の出力

//ここから test.mac の内容
  debuginfo 2;
 
  debuginfo sprintf("filename  = %s\n",filename);
  debuginfo sprintf("directory = %s\n",directory);
 
  $file = "check\\check.mac";
  $path = directory + "\\" + $file;
  #n    = existfile($path);
 
  debuginfo sprintf("existfile(%s) = %d\n", $path, #n);
  if(#n){
      execmacro $file;
  }else{
      debuginfo sprintf("%s が見つかりません。\n", $path);
  }
  endmacro;
//ここまで test.mac の内容

//ここから c:\temp\check\check.mac の内容
  message currentmacrofilename;
  endmacro;
//ここまで c:\temp\check\check.mac の内容

[ ]
RE:10849 execmacro文の相対パスNo.10852
秀丸担当 さん 22/07/19 14:06
 
ご指摘ありがとうございます。
execmacroの相対パス指定時、確かにカレントフォルダ移動の設定によって違いました。
従来からの互換としているほうの動作となるように修正します。
フルパスの例も両方書いておきます。

[ ]