Macro/投稿/130

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F130


Top > Macro > 投稿 > 130

範囲選択中の文字数を表示

  • ページ: Macro/投稿
  • 作者: すい?
  • カテゴリー: ppa
  • 投稿日: 2003-04-08 (火) 02:53:36

メッセージ

fileCOUNT.PPA
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
// 範囲選択中の文字数を表示する
 
// TAB=4
// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに ppa.dll を入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。
 
// エディタウィンドウにて選択中の文字列の
// ・文字サイズ(バイト数)
// ・文字数(半角文字・全角文字をそれぞれ1文字ずつとしてカウントした値)
// ・改行数
// をダイアログに表示します。
 
var
    CRLF,CR,LF:String;            // 文字列変数を用意
    str:String;                    // 文字列変数を用意
    byte:Integer;                // 整数数値変数を用意
    mess:String;                // 文字列変数を用意        ダイアログに表示する文字列
 
    num:Integer;                // 文字数をカウントする 整数数値変数を用意
    han,zen:Integer;            // 全角文字の文字数
    n_crlf,n_cr,n_lf:Integer;    // 各改行コードの数
    nl:Integer;                    // 改行コードの総数
    pt:Integer;                    // 調査時のポインタ(もどき)の 整数数値変数を用意
    tmp1,tmp2:String;            // 調査時の作業用の 文字列変数を用意
    isknj:Integer;                // 漢字かどうかのフラグの 整数数値変数を用意
begin
    // 文字列変数 CRLF に改行を格納する
    CRLF := '
';
    CR := Copy(CRLF,1,1);
    LF := Copy(CRLF,2,1);
 
    str := S_GetSelectedString(0);    // 選択部分の文字列を str に格納する。
    byte := Length(str);            // 文字列のサイズ(バイト数)を整数数値変数 byte に格納する。
 
    // 文字数を数える。
    num := 0;        // 全文字数   = 0;
    zen := 0;        // 全角文字数 = 0;
    han := 0;        // 半角文字数 = 0;
    n_crlf := 0;    // CRLF改行の数 = 0;
    n_cr   := 0;    // CR  改行の数 = 0;
    n_lf   := 0;    // LF  改行の数 = 0;
    pt := 1;    // 調査用のポインタ(もどき)
    while ( pt <= byte ) do
    begin
        tmp1 := Copy(str,pt,1);        // ポインタ(もどき)位置から1バイト取得し、tmp2 に格納する
        tmp2 := Copy(str,pt,2);        // ポインタ(もどき)位置から2バイト取得し、tmp2 に格納する
        isknj := 0;        // 「2バイト文字ではない」にしておく。
        if ( (' ' <= tmp2) and (tmp2 <= '滌') )    then    isknj := 1;    // 2バイト文字である
        if ( ('漾' <= tmp2) and (tmp2 <= '