|
>>>1.新規のファイルを名前を付けて保存する際、テキストの先頭の
>>> 一部が既定値として、ファイル名になるようなマクロはありま
>>> せんか?
>>gettext,saveasを使えば出来るのですが、ファイル名として使えな
>>い文字があった時にどうするかなど問題がありますので、ファイル
>>名は自分で決めた方が安全だと思います。
>確か、MSワードがrakoさんの言ってるようなことを
>やってたと思います(^^;
>意外に便利でした(^^;
個人的にはひろさんの意見に賛成なんですが(笑)、
敢えて作るなら以下のような感じですかねぇ…。
//---------------------------------------------------------
// $DEFAULT_EXT = ".txt";
$DEFAULT_EXT = ""; // デフォルトの拡張子(これはつけない設定)
$DISABLED_CHARS = "<>:\"/\\|?*"; // ファイル名として使えない文字
#MAX_PATH = 259 - strlen($DEFAULT_EXT); // パス名の最大長
// 新規作成でなければ終了
if (filename != "") endmacro;
disabledraw;
disableinvert;
// ファイルの一行目の取得
##x = x; ##y = y;
gofiletop;
beginsel;
golineend;
$$str = gettext(seltopx,seltopy,selendx,selendy);
escape;
moveto ##x, ##y;
// ファイル名のチェック
##s_len = strlen($$str);
while (##a < ##s_len && ##len < #MAX_PATH) {
$$c = midstr($$str,##a,1);
if (ascii($$c) >= 0x7F) {
// 2バイト文字
if (##s_len - ##a > 1) {
$$f_name = $$f_name + midstr($$str,##a,2);
##len = ##len + 2;
}
##a = ##a + 1; // あとでもう一度インクリメント
} else if (strstr($DISABLED_CHARS,$$c) == -1) {
// 使えない文字があったら全角にしたりとか
// 考えられんこともないけど(^^;
// 面倒なので今回は単純に削除
$$f_name = $$f_name + $$c;
##len = ##len + 1;
}
##a = ##a + 1;
}
// "CON" とか "PRN" とかの予約名でないことの
// チェックが必要だが…今回はパス
// 名前付けダイアログの表示
changename $$f_name + $DEFAULT_EXT;
SAVEAS;
if (!result) changename "";
endmacro;
//---------------------------------------------------------
|
|