openfileでサイズ指定するとバグるのですNo.07859
さん 01/03/07 11:06
 
EUCのファイルを開くことがあって、文字コードを変更するために、asueさんのchang
ecode.macをダウンロードして実行してみました.
すると窓は生成するのですが画面の更新がされず、どーもイニシャルで無限ループに
陥っている感じです.×でウィンドウを閉じることは可能です.
で、症状を確認したのですが、問題はopenfileに与える/(x,y,cx,xy)の
パラメータと、設定で「1行の文字数を越えたウィンドウを自動的にに小さくする」
のチェックにあることがわかりました.
バグる条件
  1.「1行の文字数を越えたウィンドウを自動的にに小さくする」をチェックする
  2. ウィンドウサイズの横幅はその状態で最大
  3. 幅の指定にwindowcxで与えた値を与える(changecode.macのとおり)
です.
  1.幅の指定で1ピクセルでも違った値を与えると起こりません.
  2.横幅を変えたウィンドウでマクロを実行すると起こりません


[ ]
RE:07859 openfileでサイズ指定するとバグNo.07873
TAKA さん 01/03/07 19:45
 
TAKA です。

>EUCのファイルを開くことがあって、文字コードを変更するために、asueさんのchang
>ecode.macをダウンロードして実行してみました.
>すると窓は生成するのですが画面の更新がされず、どーもイニシャルで無限ループに
>陥っている感じです.×でウィンドウを閉じることは可能です.

無限ループということは、マクロ側の問題である可能性もありそう
ですね。
マクロが正常に動作しない場合は、マクロの作者のサポートを受け
るしかありません。
マクロと一緒にサポート先を書いたドキュメントファイルがなかっ
たでしょうか?
多分、あると思いますので、そちらに連絡してみて下さい。

こちらのフォーラムでは、そのマクロのサポートは難しいと思いま
す。(そのマクロもありませんし)

もしサポート先が書いていないようでしたら、そのマクロのダウン
ロード先を再度書き込んでもらえれば、誰かが調査してくれるかも
しれません。

秀丸のマクロ命令に不具合があれば、マクロの作者がこちらのフォ
ーラム等で、どのマクロ命令をどのように使用したら不具合が出る
かを具体的に報告してもうようになると思います。
出来る限り、シンプルな再現方法を報告してもうらと、
秀丸担当 さんが助かると思います。
マクロの丸投げでは、非常に対応が難しいと思います。

[ ]
RE:07873 openfileでサイズ指定するとバグNo.07875
ひろ さん 01/03/07 20:29
 
 小さん、TAKA さん今日は、ひろです。
 マクロについては TAKA さんが仰るような手順を踏むのが良いと思いますので、
> >EUCのファイルを開くことがあって、文字コードを変更するために、asueさんのchang
> >ecode.macをダウンロードして実行してみました.
に反応しておきます。
 お使いのヴァージョンの記載がないので、設定項目に若干違いがあるかも
しれませんが、最新の Ver.3.08 ならば「その他」→「動作環境」→「編集」
の「文字コードを自動認識する」を ON にすれば多くの場合文字化けしませ
ん。

 またマクロなら、JRくんが作成した「文字コードの変換マクロ」
(http://win.blue.co.jp/~jr-kun/hm_macro.html#CHARCHNG) がありまし、
//文字 code 自動変更 macro
main:
  disabledraw;
  if(!selecting)call select;
  searchdown "\x1B",inselect;
  if(result)##charset=4;
  else{
    call check_charset;
    ##charset=##return;
  }if(updated==1){
    message "ファイルが更新されています\n複数の文字コード混在すると、"
      +"復旧できなくなる恐れがあるので、マクロを終了します。";
    goto ending;
  }call save_search;
  ##org_line=lineno;
  ##org_column=column;
  ##handle = hidemaruhandle(0);
  $$option = "/(" + str(windowposx) + "," + str(windowposy) + ","
    + str(windowcx) + "," + str(windowcy) + ") ";
  $$filename = filename2;
  openfile $$option;
  closehidemaru ##handle;
  if(##charset==1) openfile $$filename,euc;
  else if(##charset==3) openfile $$filename,sjis;
  else if(##charset==4) openfile $$filename,jis;
  movetolineno ##org_column,##org_line;
  goto ending;

save_search:
  $search=searchbuffer;
  #search=searchoption;
  return;

check_charset:
  ##charset=(charset&63);
  if(##charset==2){
    message "文字化けしている理由が不明(;_;)";
    goto ending;
  }else if(##charset==4){
    ##return_code=(charset&192)/64;
    if(##return_code==1)return 1;
    else return 3;
  }else return ##charset;

ending:
  setsearch $search, #search;
  endmacro;

select:// escape sequence を探す
  beginsel;
  ##num=0;
  while(##num<30){
    down;
    if(!result){
      gofileend;
      ##num=30;
    }else ##num=##num+1;
  }return;
//--------------------------------------------------------------------
というマクロでも大体上手くいくと思います。

[ ]
RE:07873 openfileでサイズ指定するとバグNo.07882
小西 さん 01/03/08 00:39
 
ごめんなさいね。マクロのサポートフォーラムがあるか確認してませんでした。
この問題について、言葉が足りなかったようですが、問題がマクロにはないことはは
っきりしてます。(その辺の調査はしました)
オープンファイルに自動でリサイズするときの数値を渡すと、ウィンドウ生成時に落
ちるということなんですよ。
この問題を確認したマクロは秀丸のマクロライブラリにあります。
また、使用したバージョンは、3.08です。

[ ]
RE:07875 openfileでサイズ指定するとバグNo.07883
小西 さん 01/03/08 00:48
 
ありがうございます。
EUCの自動認識はなかなかうまく行かないようで、3.08でおっしゃるとおりに設定し
てみましたが、だめなほうが多かったのでした。
最近、rubyをかじり出したのですが、UNIX育ちのせいか、EUCコードのドキュメント
ばかりなんですよね。
拡張子がいろいろやら、フォルダがあっちこっちに散らばってるんで、読めなきゃマ
クロでポン! がお手軽なんです。
教えていただいたマクロは今度試してみます。
今のところはマクロを手直しして、引数渡しのとき、横幅に1足してかわしてます。

小、と小西は同一人物です。(会社と自宅で切り分けしなきゃならないもんで)
これからも、皆さんよろしくお願いします。

[ ]
RE:07859 openfileでサイズ指定するとバグNo.07884
TAKA さん 01/03/08 01:44
 
TAKA です。

>EUCのファイルを開くことがあって、文字コードを変更するために、asueさんのchang
>ecode.macをダウンロードして実行してみました.
>すると窓は生成するのですが画面の更新がされず、どーもイニシャルで無限ループに
>陥っている感じです.×でウィンドウを閉じることは可能です.
>で、症状を確認したのですが、問題はopenfileに与える/(x,y,cx,xy)の
>パラメータと、設定で「1行の文字数を越えたウィンドウを自動的にに小さくする」
>のチェックにあることがわかりました.
>バグる条件
>  1.「1行の文字数を越えたウィンドウを自動的にに小さくする」をチェックする
>  2. ウィンドウサイズの横幅はその状態で最大
>  3. 幅の指定にwindowcxで与えた値を与える(changecode.macのとおり)
>です.

先ほど、このマクロをダウンロードして、以下の手順で試してみま
した。

C:\WORK.TXT(ここから)
TEST
C:\WORK.TXT(ここまで)

「その他→ファイルタイプ別の設定→全般」で「折り返し文字数」
を20、「その他→動作環境→ウィンドウ→高度なウィンドウ」で
「1行の文字数を超えたウィンドウを自動的に小さくする」をONに
した後で、
マウスでウィンドウが横に今以上伸びないことを確認後、マクロを
実行しましたが、正常にマクロが終了しました。(一度、閉じた後
で、再読み込みされました)
私が試したのは、「Shift-JIS」ですが。

他のオプションが何か関係しているのかもしれませんね。


ちなみに、このマクロ内にはループの処理は一切ありませんので、
マクロ内で無限ループを起こすことはありません。
もし無限ループを起こしているとしたら、マクロ命令の内部になり
ます。


幅を変えることで、問題を回避したそうですが、一応報告まで。

[ ]
RE:07884 openfileでサイズ指定するとバグNo.07900
さん 01/03/08 17:33
 
会社のマシンでも、同じ事が起きます.
で、秀丸を何も設定しないで再インストールした状態から、チェックしました.
次のオプションの組み合わせで発生することを確認しました.
  1.「1行の文字数を越えたウィンドウを自動的に小さくする(O)」をチェックする
  2.「ファンクションキー表示(U)」をチェックしない
  3.「行番号表示(G)」をチェックする
設定があっちこっちに散らばっているのですが、デフォルトからこれらを変更すると、
発生します.

マクロを実行後(マクロが終了してからの話ですが)、新しいウィンドウが作成され、
クライアントエリアの更新ができない状態になります(この状態をさしてイニシャル
で無限ループに陥っているようなと表現していたのでした)
そのまま何もせず頬って置くと次のようなメッセージが表示されることがあります.
(OSはWindows98SE)

HIDEMARU のページ違反です。
モジュール : HIDEMARU.EXE、アドレス : 017f:00408d03
Registers:
EAX=00e30000 CS=017f EIP=00408d03 EFLGS=00010297
EBX=00000002 SS=0187 ESP=006bf990 EBP=006bf9ac
ECX=00000000 DS=0187 ESI=ffffffff FS=4c07
EDX=00000001 ES=0187 EDI=00780000 GS=0000
Bytes at CS:EIP:
f6 44 b0 03 40 8d 3c b0 75 07 56 e8 6e 76 04 00
Stack dump:
00780000 00000001 00000000 00000000 00000005 00000001 00000000 006bfac4 0041
0f88 0000020a 006bfc8c 00030000 00413b87 1757a915 008f0000 00000255


[ ]
RE:07900 openfileでサイズ指定するとバグNo.07911
秀丸担当 さん 01/03/08 18:55
 
>マクロを実行後(マクロが終了してからの話ですが)、新しいウィンドウが作成され、
>クライアントエリアの更新ができない状態になります(この状態をさしてイニシャル
>で無限ループに陥っているようなと表現していたのでした)
>そのまま何もせず頬って置くと次のようなメッセージが表示されることがあります.
>(OSはWindows98SE)
>

むう、いったいなぜでしょう。
エラーログで内部で問題の発生した場所の特定はできました。
調べてみます。

[ ]
RE:07911 openfileでサイズ指定するとバグNo.07919
小西 さん 01/03/08 20:32
 
>調べてみます。
よろしく願いいたします_(.,.)_

[ ]