文字列変数をファイル名として許容されるNo.00346
ぱと さん 06/04/27 10:37
 
マクロ初心者のぱとと申します。

秀丸メール関連のマクロを作っているのですが、メールの Subjectヘッダの文字列
をそのままファイル名とするファイルを作るようなコードを書きたいのですが、こ
の時、ファイル名に使えない文字列を取り除く処理をしたいのです。

$MailSubject = "turukame.4:00001| マクロ作者のための会議室設置しました";
$FileName = fixtofilename($MailSubject);

てなようにすると、$Filename の中身が、ファイル名に使えない : と | を取り除
いて

"turukame.400001 マクロ作者のための会議室設置しました"

のようにしたいということです。(んまあ本当はもうちょっと工夫をした方がいいか
もしれませんが)

※ファイル名に使うことのできない文字は、¥/:?"<>*| で全部でしたでしょうか?

いきなり途方にくれてしまったので、ベテランの皆様にお教えを請いたいです。

----
ぱと

[ ]
RE:00346 文字列変数をファイル名として許No.00347
三月 さん 06/04/27 22:10
 
>
>$MailSubject = "turukame.4:00001| マクロ作者のための会議室設置しました";
>$FileName = fixtofilename($MailSubject);
>
>てなようにすると、$Filename の中身が、ファイル名に使えない : と | を取り除
>いて
>
>"turukame.400001 マクロ作者のための会議室設置しました"
>
>のようにしたいということです。(んまあ本当はもうちょっと工夫をした方がいいか
>もしれませんが)
>
>※ファイル名に使うことのできない文字は、¥/:?"<>*| で全部でしたでしょうか?
>

力技でナンですが
------------------------------------------------------
$MailSubject = "turukame.4:00001| \\マクロ作者/のため/の**会議室設<置>しま\"
した";
call fixtofilename $MailSubject ;
$FileName = $$return;
message($MailSubject + char(0x0a) + $FileName);

endmacro;

fixtofilename:
$file = $$1;
call clearword $file, "|" ;
$file = $$return;
call clearword $file, "\\" ;
$file = $$return;
call clearword $file, "/" ;
$file = $$return;
call clearword $file, "|" ;
$file = $$return;
call clearword $file, ":" ;
$file = $$return;
call clearword $file, "?" ;
$file = $$return;
call clearword $file, "\"" ;
$file = $$return;
call clearword $file, "<" ;
$file = $$return;
call clearword $file, ">" ;
$file = $$return;
call clearword $file, "*" ;
$file = $$return;


return $file;

clearword:
$work = $$1;
$chr = $$2;
$fn = "";
#idx = strstr($work, $chr);
while( #idx != -1 ){
  if( #idx != 0 ){
    $fn = $fn + leftstr($work, #idx );
  }
  $w2 = midstr($work , #idx+1, strlen($work) - #idx -1);
  $fn = $fn + $w2;
  $work = $fn;
  $fn = "";
  #idx = strstr($work, $chr);
}

$fn = $work;
return $fn;


[ ]
RE:00347 文字列変数をファイル名として許No.00348
ぱと さん 06/04/27 22:47
 
三月さん

おお!どうもありがとうございます。感謝感激です。

コードはこれからじっくり読ませていただきますが、作っていただいたサブルー
チンを使って、そのまんまでやりたいことがうまくできました。

書いていただいたコードですが、文字列を読み込んでいって、ファイル名に使え
ない文字列があったら、前後にばらして、使えない文字列を取り除くという作業
を続けていくという感じなのですね。勉強になります。

まだ制御構造をがちゃんと理解してないので、while の使い方の勉強にもなって
大変ありがたいです。

本当にどうもありがとうございました。

----
ぱと

[ ]
RE:00347 文字列変数をファイル名として許No.00349
ぱと さん 06/04/29 20:27
 
三月さん

三月さんに書いていただいた、fixtofilename と clearword をそのまんま含む
形の、メールのショートカットファイルを作成するマクロを公開しようと思って
いるのですが、かまわないでしょうか?

サブルーチンについては、三月さんのコピーライト表示はしてあります。

----
ぱと

[ ]
RE:00349 文字列変数をファイル名として許No.00350
三月 さん 06/04/29 21:36
 
>三月さんに書いていただいた、fixtofilename と clearword をそのまんま含む
>形の、メールのショートカットファイルを作成するマクロを公開しようと思って
>いるのですが、かまわないでしょうか?
>
処理内容が理解できて何かあったときにご自分で直せそうなら問題ないです。

>サブルーチンについては、三月さんのコピーライト表示はしてあります。
こちらは別になくてもかまいません。

[ ]
RE:00350 文字列変数をファイル名として許No.00351
ぱと さん 06/04/29 21:40
 
三月さん

>処理内容が理解できて何かあったときにご自分で直せそうなら問題ないです。

ありがとうございます。それでは、マクロライブラリにアップロードさせて
いただきます。

----
ぱと


[ ]