マクロで改行コードが正しく指定できませNo.19150
pato さん 05/04/12 10:23
 
はじめまして。

先日、以下URLの秀丸マクロのレストラン様のHPにて、
http://www.j-coolsite.com/hidemacro/cgi-bin/dengon/dengon.cgi
以下のご質問をさせていただき、いろいろとご調査いただきました。

さらに詳しく見解を伺いたい場合、こちらの掲示板で質問してみるとよいのではない
かというご意見をいただき、投稿させていただきたく思います。

------------------------------------------
Win2000Serv + 秀丸「V4.16」環境で文字コード、改行コードを指定する
マクロを作成しているのですが、以下の現象が起きています。

いろいろと調べてみたのですが、有力な情報が見つかりませんでした。
もし、ご存知の方がおりましたらお力をお貸しいただければと思います。

ちなみに、秀丸メニュー>その他>ファイルタイプ別設定>保存・読込>エンコード
タイプ
は文字コード、改行コード両方とも自動となっています。

はじめに、対象部のソースを記述します。
------------------------------------
$DIR = directory;
$FILE = filename;

changename $DIR + "\\" + "$$tester$$.$$$";
setactivehidemaru findhidemaru( "$$tester$$.$$$" );

//その後、元々開いていた秀丸ファイルをいったん消す
closehidemaruforced findhidemaru( $FILE );
openfile $FILE;
//ファイルを指定のコードでセーブ
if($CODE == "sjis"){
  saveas $FILE, sjis;
}else if($CODE == "euc"){
  saveas $FILE, euc;
}else if($CODE == "jis"){
  saveas $FILE, jis;
}else if($CODE == "crlf"){
  saveas $FILE;
}else if($CODE == "lf"){
  saveas $FILE, lf;
}else if($CODE == "cr"){
  saveas $FILE, cr;
}
------------------------------------
$CODEにそれぞれ変換したいコードの文字列を渡しているのですが、
指定したとおりの動作となりませんでした。現象として、
(1)$CODEに"euc"、"jis"を指定すると、改行コードが勝手に"lf"になってしまう。
(もとの改行コードがcrlfでも同じ現象)
(2)SJISのcrlfファイルで上記マクロを実行した場合、$CODEに"cr"、"lf"を指定して
も、"crlf"のままである。
(3)EUC、JISのlfファイルで上記マクロを実行した場合、$CODEに"crlf"、"cr"を指定
しても、"lf"のままである。

この他にも、いろいろな組み合わせをテストしてみましたが、指定した通りの制御
コードでファイルを保存してくれません。
ためしに、ファイルを保存する部分を
saveas $FILE, sjis, lf;
というようにも指定してテストもしたのですが、SJISのcrlfのままでした。
バージョンも数パターンのバージョンでテストしたのですが、同じ結果となりました。

何か指定する方法が間違っているのでしょうか?
他に情報が必要な場合は、ご指示ください。
よろしくお願いします。

----------------------------------------------------------------------------
----

[ ]
RE:19150 マクロで改行コードが正しく指定No.19151
Iranoan さん 05/04/12 11:03
 
 pato さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
 私は WindowsXP+IE6.0+秀丸 Ver.5.00β15 なので、若干状況が違いますが、
次のような結果になりました。
> (1)$CODEに"euc"、"jis"を指定すると、改行コードが勝手に"lf"になってしまう。
> (もとの改行コードがcrlfでも同じ現象)
 これは再現しませんでした。改行コードが無指定なら、基本的には同じにな
りました。Ver.5.00β1 で
> 自動保存で改行がCR+LFに変わってしまう問題修正
はありますが....。

> (2)SJISのcrlfファイルで上記マクロを実行した場合、$CODEに"cr"、"lf"を指定して
> も、"crlf"のままである。
> (3)EUC、JISのlfファイルで上記マクロを実行した場合、$CODEに"crlf"、"cr"を指定
> しても、"lf"のままである。
 ヘルプには記載がありませんが、改行コードのしては、文字コードの指定が
必要だったと思います。よって投稿元の見解は合っていると思います。

[ ]
RE:19150 マクロで改行コードが正しく指定No.19154
秀丸担当 さん 05/04/13 12:59
 

仕様としては、Iranoanさんの言われる通りです。

いろいろ確認してみたところ、改行コードの無いテキストの場合、patoさんの言
われているのと似た状況になります。

改行コードの無いテキストでは、いくら saveas で改行コードを指定しても、意
味がありません。
秀丸は改行コードの無いテキストを読み込んだら、エンコードの種類に応じて自
動的に改行コードを決定します。
そういうことではないでしょうか。

[ ]
RE:19154 マクロで改行コードが正しく指定No.19155
pato さん 05/04/13 13:41
 
Iranoan様、秀丸担当様、こんにちは。
いろいろとお調べいただき、ご回答ありがとうございます。

秀丸担当さまの言われているとおり、改行コードのないファイルの場合で確認してい
たため、
この現象が起きておりました。ご迷惑をおかけして申し訳ありませんでした。

> ヘルプには記載がありませんが、改行コードのしては、文字コードの指定が
>必要だったと思います。よって投稿元の見解は合っていると思います。

ご教授ありがとうございます。
ということは、改行コードのみを変更したい場合は、開いたファイルの文字コードを
取得して、
文字コード+改行コードでsaveasするという感じになるということですね。

アドバイスありがとうございます。実際にやってみます。
このたびは、本当にありがとうございました。

[ ]