miau's blog?

| 1 |

2006年 9月 23日 (土曜日)

萌ディタの文字コード自動認識

- TextEditor on miau's blog?
【萌える】 萌ディタ スレッド part2【エディタ】 を眺めてると、こんなレスが。

170 :名無しさん@お腹いっぱい。:2006/09/14(木) 14:42:22 ID:BqLw+oOq0
認識能力が貧弱なんじゃなくて
実は英語の生asciiコードみたいに、sjisかeucかく別が付かないとき不便
わかんないならとりあえずsjisなんだろうと思って開いて、間違っていたとき
にeucで開きなおせるとかの法がいいかな

utf32対応とか縦書きとかの贅沢機能以外は、ほぼ完成しているように見える
からデバッグとUIの改良かな必要なのは

家では萌ディタをメインのエディタとして使ってるけど、確かにその通り。
でも「どちらともみなせる場合自動的に Shift_JIS にする」くらいなら簡単に改造できるんじゃない?と思ったのでやってみた。
[Read More!]
11:56:02 - miau - No comments - No Trackbacks - Permalink

2006年 9月 24日 (日曜日)

patch for PerlScript 5.8.x.xxx

- TextEditor on miau's blog?
patch for PerlScript 5.8.7.813 - miau's blog?

以前こんなパッチ作りましたが、最後に追記してあるように 5.8.7.815 とか 5.8.7.817 とかだとパッチ適用に失敗します。変更箇所は同じなんですけど、CRC チェックに引っかかるのが原因。
今日 WDiff 触ったので、ついでにこのパッチの CRC チェックを解除しようと思ったんですが・・・「CRCエラー発生時」を「中止する」から「無視する」に変更した場合って単純に処理がスキップされるんですね。「CRC が違っても無視してパッチ当てる」意味かとばかり。

じゃあ WDiff 以外の方法でパッチ作るしか・・・というところでふと思ったんですが、ファイル中のバイナリ値を置換するだけなら Perl でやればいいですよね。コマンドラインから

cd /d C:\Perl\bin
perl -Mopen=IO,win32 -pi".OLD" -e"s/\xFF\x74\x24\x18\xFF\x15\xE8\x90\x1C\x28\x59\x8B\xF0\xFF\x74\x24\x10\x8B\xCB\x8D\x46\x02\x50\xE8\x64\xFF\xFF\xFF\x8B\xF8\x85\xFF\x74\x14/\x57\x57\x57\x57\x6A\xFF\xFF\x74\x24\x2C\x57\x57\xFF\x15\x74\x90\x1C\x28\x8B\xF0\x57\x8B\xCB\x40\x50\xE8\x62\xFF\xFF\xFF\x8B\xF8\x90\x90/" PerlSE.dll

こんな感じで実行。旧ファイルが PerlSE.OLD にバックアップされるので、そこそこ安全なはず。
改行コードが勝手に変更されるのを防ぐのに use open IO => ':win32' っぽいことやってるけど、本当にこれでいいのかちょっと自信なし。間違ってたら教えて下さい。>詳しい方

ちなみに
・ActivePerl 5.8.7.817
・ActivePerl 5.8.8.819
・ActivePerl 5.8.8.820
では動作確認済み。気が向いた方は他のバージョンでの確認もお願いします。

検証用スクリプトはこんな感じ。

# ああああああああああああああああああ
# ああああああああああああああああああ
# ああああああああああああああああああ
MsgBox('PerlSETest - OK');

PerlSETest.pls とかいう名前で保存して、Explorer から実行してください。
メッセージボックスが出たらパッチがちゃんと当てられてる感じ。パッチ当ててない場合は、たぶん何も起きない。(変なエラーになる可能性もあるけど)


(2007/01/30 追記)5.8.8.820 でも動くっぽい。


(2007/09/29 追記)

もっと楽に実行できるバージョンも作ってあります。

patch for PerlScript 5.8.x.xxx(PerlScript版) - miau's blog?
01:23:47 - miau - 1 comment - No Trackbacks - Permalink
| 1 |