アスキー文字出力マクロNo.02908
tats さん 01/12/27 00:08
 
こんばんわ。tatsと申します。毎日のようにこちらにお邪魔させて頂いてい
るのですが、どうしてもお聞きしたい事が。。。皆様にお聞きしたいことが
ございます。下に記述いたしましたマクロは、MS漢字の一覧を表示してくれ
るマクロになります。で、こちらのマクロでは、出来ないことがございまし
て、アスキー文字(1バイト文字)のみを出力したいのです。どの様にすれ
ば、出力できるのでしょうか?

ご存知の方がいらっしゃいましたならば、お教え頂けると幸いです。

宜しくお願い致します。

---マクロ------------------------------------------------------
//第1ブロック
//先頭コード  0x8140  0x60 * 0x52行
//終了コード  0x9FFC
//第2ブロック
//先頭コード  0xE040
//終了コード  0xFC9E
//次の行との offset : 0x5F    0x8140+0x5F = 819F
//各行規則    0x3F(63)個、1個飛ばして、0x1F(31)個
//            0x8140+0x003E=0x817E, 0x8180+0x001E=0x819E
//+64 +190 +191 +192 は文字コードに該当しない
newfile ;
disabledraw;
#fold = 33;
#counter = 1;
//0x8040+0x100 = 0x8140 から漢字コード(第1水準、第2水準途中まで)
//無条件に 0x100 を加算するので、初回はその分を少なくしておかないと、辻褄が
合わなくなる
#codetop = 0x8040;
#endcount = 31;
while( #counter <= #endcount){
  #codetop = #codetop + 256;
  #codetail = #codetop + 191;
  title "第 " + str( #counter ) + " ブロックを出力中";
  call MakeList;
  #counter = #counter +1;
}
#codetop = 0xDF40;//0xDF40+0x100 = 0xE040 から漢字コード(第2水準途中以降、
外字)
#endcount = 60;//31 + 29
while( #counter <= #endcount){
  #codetop = #codetop + 256;
  #codetail= #codetop + 191;
  title "第 " + str( #counter ) + " ブロックを出力中";
  call MakeList;
  #counter = #counter +1;
}
enabledraw;
question "全てのコード出力が終了しました。\nセーブしますか?";
if( result == yes ) {
  save;
}else{
  endmacro;
}
endmacro;
---マクロ------------------------------------------------------

[ ]
RE:02908 アスキー文字出力マクロNo.02909
三月 さん 01/12/27 07:01
 
>こんばんわ。tatsと申します。毎日のようにこちらにお邪魔させて頂いてい
>るのですが、どうしてもお聞きしたい事が。。。皆様にお聞きしたいことが
>ございます。下に記述いたしましたマクロは、MS漢字の一覧を表示してくれ
>るマクロになります。で、こちらのマクロでは、出来ないことがございまし
>て、アスキー文字(1バイト文字)のみを出力したいのです。どの様にすれ
>ば、出力できるのでしょうか?
>
こんな感じじゃ駄目?制御コードがそのまま出るのはなんですが...
---マクロ------------------------------------------------------
newfile ;
disabledraw;
#counter = 0;
#endcount = 255;
insert "  : 0 1 2 3 4 5 6 7 8 9 A B C D E F\n0 :" ;
while( #counter <= #endcount){
 title "第 " + str( #counter ) + " ブロックを出力中";
 insert char(#counter) ;
 #counter = #counter +1;
 if( #counter % 16 == 0 ){
  insertreturn;
  insert hex(#counter / 16) + " : ";
 }else{
  insert " ";
 }
}

endmacro;
---マクロ------------------------------------------------------

[ ]
RE:02909 アスキー文字出力マクロNo.02910
tats さん 01/12/27 08:33
 
おはようございます。tatsです。
マクロ組んで頂きましてありがとうございます。

私の方でテストしてみたのですが、
「insert hex(#counter / 16) + " : ";」の
行でerrorが出てしまいます。なぜでしょうか?
秀丸は、3.13を使用しております。一応、行番号を
振りましたが、下で言いますと12行目で
秀丸に注意されてしまいます。

もし宜しければ、お教えください。
何度も申し訳ございません。


>---マクロ------------------------------------------------------
01>newfile ;
02>disabledraw;
03>#counter = 0;
04>#endcount = 255;
05>insert "  : 0 1 2 3 4 5 6 7 8 9 A B C D E F\n0 :" ;
06>while( #counter <= #endcount){
07> title "第 " + str( #counter ) + " ブロックを出力中";
08> insert char(#counter) ;
09> #counter = #counter +1;
10> if( #counter % 16 == 0 ){
11>  insertreturn;
12>  insert hex(#counter / 16) + " : ";
13> }else{
14>  insert " ";
15> }
16>}
17>
18>endmacro;
>---マクロ------------------------------------------------------

[ ]
RE:02910 アスキー文字出力マクロNo.02911
TAKA さん 01/12/27 09:55
 
TAKA です。

>私の方でテストしてみたのですが、
>「insert hex(#counter / 16) + " : ";」の
>行でerrorが出てしまいます。なぜでしょうか?

これは、「hex」がVer3.13以前にはないためです。

V3.14β2を以下の場所からダウンロードできます。
http://hide.maruo.co.jp/software/bin/hm314b2.exe

ちなみに、β版の話題は、
http://www.maruo.co.jp/turukame/
です。

β版に不安を感じる場合は、12行目を削除しても良いです。
もしくは、以下のように修正するか。

// テストマクロ(ここから)
newfile ;
disabledraw;
#counter = 0;
#endcount = 255;
insert "  : 0 1 2 3 4 5 6 7 8 9 A B C D E F\n0 :" ;
while( #counter <= #endcount){
  title "第 " + str( #counter ) + " ブロックを出力中";
  insert char(#counter) ;
  #counter = #counter +1;
  if( #counter % 16 == 0 ){
    insertreturn;
//  insert hex(#counter / 16) + " : ";
    call Change #counter / 16;
    insert $$return + " : ";
  }else{
    insert " ";
  }
}
endmacro;

Change:
    ##Wk = ##1;
    $$Str = "";
    while( 1 )
    {
        ##Wk2 = ##Wk % 16;
        $$Str = midstr( "0123456789ABCDEF", ##Wk2, 1 ) + $$Str;
        ##Wk = ##Wk / 16;
        if( ##Wk == 0 ) break;
    }
    return $$Str;
// テストマクロ(ここまで)

[ ]
RE:02911 アスキー文字出力マクロ☆☆☆No.02912
tats さん 01/12/28 00:06
 
三月さん、TAKAさん、ありがとうございます。

お礼が遅れましたが、無事にアスキー文字一覧を拝見することが出来ました。
また、マクロも勉強になりました。
ありがとうございました。

[ ]