文字数の表示はできますか?No.03715
ぜんじろう さん 99/07/15 21:17
 
初めまして、ぜんじろうと申します。
仕事で文字数制限のある、テキストを作らなければなりません。
やはり、マクロでなければ、できないのでしょうか?
ちなみに、テキストの中身は、半角欧数字だけです。
当方、マクロに関しては、無知です。お手上げです。
それでは、よろしくお願いいたします。

[ ]
RE:03715 文字数の表示はできますか?No.03716
番頭++ さん 99/07/16 13:06
 
>初めまして、ぜんじろうと申します。
>仕事で文字数制限のある、テキストを作らなければなりません。
>やはり、マクロでなければ、できないのでしょうか?
>ちなみに、テキストの中身は、半角欧数字だけです。
>当方、マクロに関しては、無知です。お手上げです。
>それでは、よろしくお願いいたします。

//  全置換で "\f." を "\1" に変換、「正規表現」指定で行います。

//  a1.mac  マクロだとこうなります。
    replaceallfast "\\f.", "\\1", regular, inselect;
    message str(result);
    gofiletop;
endmacro;

//  置換によるカウントですが、邪道かな ...

[ ]
RE:03715 文字数の表示はできますか?No.03721
SMAP/V さん 99/07/16 18:54
 
   From ■ ぜんじろうさん  [99/07/15(木) 21:17 +0900]

> 仕事で文字数制限のある、テキストを作らなければなりません。
> やはり、マクロでなければ、できないのでしょうか?

最近、C言語の入門書を読みながら秀丸マクロの勉強をしている者です。
で、練習を兼ねてこんなマクロを作ってみましたが、いかがでしょうか。


disabledraw;              //画面描画停止
#i = 0;                   //変数#iに0を代入
gofiletop;                //ファイル先頭にカーソル移動
while(code != -1){        //文末になるまで{ }内の作業を繰り返す
    if(code == 0x0D) right;   //カーソル位置が改行だったら右移動
    else {                //そうでなかったら{ }内の作業を実行
    right;                //右移動
    #i = #i + 1;          //変数#iの値を1つ増やす
    }
}
enabledraw;               //画面描画再開
message "文字数=" + str(#i);   //#iの値を画面に表示
endmacro;                 //マクロ終了

カーソルを先頭に移動した後、eofになるまでカーソルの右移動を
繰り返すマクロです。改行文字以外の場合は、変数の値が1つずつ
増えていくので、最終的にはこれが総文字数となります。

[ ]
RE:03715 文字数の表示はできますか?No.03722
安久津 さん 99/07/16 19:07
 
こんにちはぜんじろうさん。安久津といいます。

>仕事で文字数制限のある、テキストを作らなければなりません。

(1)次のマクロコード(文章)の「//----- ここから、」
 「//----- ここまで。」をコピーして、
 countch.mac という名前で、保存して下さい。

//----- ここから、
disablebreak; disabledraw;
 ##cx = x; ##cy = y;
 if( selecting ){
 if( (seltopx + selendx) != 0 ){
 menu "カーソルを行頭に置いて、","Shift + ↓ 又 Shift + ↑",
 "で選択して下さい。", "&N バイバイ";
 endmacro;
 }
 }else{
 selectall;
 }
 ##seltopy = seltopy; ##selendy = selendy;
 escape;
 moveto 0, ##selendy; ##selendy = lineno - 1;
 moveto 0, ##seltopy;
 $$title = " / " + str(##selendy);
 ##counter = linelen2;
 while( lineno != ##selendy ){
 movetolineno 1, lineno + 1;
 ##counter = ##counter + linelen2;
 title str(lineno) + $$title;
 }
 moveto ##cx, ##cy;
 enabledraw;
 setclipboard str(##counter);
 menu "文字数は " + str(##counter)+ " でした。", "&N 了解";
 title 0;
endmacro;
//----- ここまで。

(2)countch.mac を秀丸マクロフォルダにコピーして下さい。
 秀丸マクロフォルダを設定していない場合には、
 秀丸本体のフォルダにコピーして下さい。

(3)文字数を計算したいファイル上で、
 文字数を計算したい場所の行頭にカーソルを置き、
 Shift + ↓ や Shift + ↑ で、選択して下さい。
 ファイル全体の文字数を知りたい場合には、
 選択しないで良いです。

(4)秀丸のメニュー「マクロ(M)」->「マクロ実行(X)」
ファイル名の中から「countch.mac」を選択して、
「OK」をクリックして下さい。

(5)秀丸のタイトルバーに進行状況が表示されます。
終了したら、メッセージが表示されます。
また、Ctrl + V キーを押すか、「編集(E)」->「貼り付け(P)」で、
文字数を入力することができます。

>当方、マクロに関しては、無知です。お手上げです。
どのくらい無知だか分からないので、
全部書いてしまいました。(^^;

ではでは。
# マクロが書けなかった頃は、マクロが恐かった。σ(^^)

[ ]
RE:03715 文字数の表示はできますか?No.03723
きいろいまふらあ さん 99/07/16 22:14
 
きいろいまふらあと申します。
いろんなマクロが発表されてて楽しそうなので、
仲間に入れて下さい。(^_^)

文中の改行を全部削除して1行にしてしまって、
その行の長さを表示してからundoで復元します。
途中でこけると怖いので、気を付けて試して下さい。
特に大きなファイルは。

//ここから
disabledraw;
selectall;
replaceallfast "\\n","",regular,inselect;
#i = result;
message str(linelen2) + " Bytes";
while(#i > 0){
    undo;
    #i = #i -1;
}
enabledraw;
endmacro;
//ここまで

選択範囲だけ数えるとかは割愛。

まふ

[ ]
RE:03722 文字数の表示はできますか?No.03724
ぜんじろう さん 99/07/17 02:20
 
早速のアドバイス(!?)
どうもありがとうございました。

>どのくらい無知だか分からないので、
>全部書いてしまいました。(^^;

いやはや、あれくらい書いて頂かないとできませんでした(苦笑)
それにしても、マクロの中身は、さっぱりです。(爆)
安久津さんのマクロを参考にして、ちょっとは自分の頭を使いたいと
思います。
ありがとうございました。

[ ]
RE:03715 文字数の表示はできますか?No.03725
ぜんじろう さん 99/07/17 02:38
 
横着してすいません。
みなさん、どうもありがとうございました。
マクロ云々は別にして、色々な物の考え方があるものですね。
今回投稿してみて、たいへん勉強になりました。
この次も、何かあったらよろしくお願い致します。(オイオイ)
それでは。

[ ]