送信メール文字数カウントNo.03872
cuma さん 01/09/15 10:30
 
メールを書いていて、ヘッダを含めての送信文字数を簡単にカウントして表示する方
法は無いでしょうか?出来ればメールアドレスから自動判別してドコモimode向けはX
X文字で警告とか出来るとベストですが、マクロが難しいと自分で理解出来ないので、
何か簡単に文字数だけでもどこかに常時表示していると助かります。
なお本文だけでなく携帯はヘッダからカウントするようなので、鶴亀でもヘッダから
カウント出来ると助かります。

[ ]
RE:03872 送信メール文字数カウントNo.03873
ひろ さん 01/09/15 11:55
 
 cuma さん今日は、ひろです。
> メールを書いていて、ヘッダを含めての送信文字数を簡単にカウントして表示する方
> 法は無いでしょうか?
 マクロなら出来ますので、取り敢えずマクロを投稿しておきます。ただし
文章の内容から、文字数というより送信容量と判断しました。また改行コー
ドはカウントしていません。
//--------------------- count character -----------------------------
call CoutChar;
//ここから自分のやりたい動作を入れる
//文字数は、##return に保存されている
message str(##return);
//やりたいこと終了
endmacro;

CoutChar:
  disabledraw;
  ##x = x;
  ##y = y;
  goscreentop;
  ##screentop = y;
  ##reg_search = searchmode;
  $$search = searchbuffer;
  loaddll "tkinfo.dll";
  ##header = dllfunc("HeaderView");
  ##tmp = dllfunc("SwitchHeaderView",2);
  moveto 0,-9999;
  ##count = 0;
  while( y < -1 ){
    right;
    ##difference = x;
    searchup ":";
    escape;
    ##difference = ##difference - x - 1;
    ##count = linelen2 + ##count;
    golineend2;
    right;
  }
  right;
  while( code == eof ){
    ##count = linelen2 + ##count;
    golineend;
    right;
  }
  ##tmp = dllfunc("SwitchHeaderView",##header);
  freedll;
  setsearch $$search, ##search;
  moveto ##x,##y;
  enabledraw ##screentop;
  return ##count;

[ ]
RE:03873 送信メール文字数カウントNo.03874
cuma さん 01/09/15 12:13
 
ひろさん、いつも回答ありがとうございます。
しかも早々にマクロまで添付頂きまして感謝です。
早速使ってみました。今まで本文のみ見て自分が思っていた以上のデータ量を携帯相
手に送っていたのだと痛感しました。

[ ]
RE:03872 送信メール文字数カウントNo.03876
きいろいまふらあ さん 01/09/15 14:41
 
数えるマクロは既にひろさんから提示されているようですが……。
#蛇足ですが、改行はカウントすべきかと。
#それと「golineend2;right;」は「フリーカーソルモード」「行末行頭の移動
#禁止」あたりの設定如何では意図通りに動作しないかと。

>なお本文だけでなく携帯はヘッダからカウントするようなので、鶴亀でもヘッダから
>カウント出来ると助かります。

「携帯はヘッダからカウントする」というのが何を意味するのかよくわかってな
いのでなんですが、編集時点では拭かされていないヘッダ(Date:とかX-Mailer:
とかMIME-Version:とかContent-Type:とかMessage-Id:とか。ま、一部は文字数
特定できそうですけど)や、送信後に付加されるヘッダ(Received:とか)なん
かを考慮しなくてよいんでしょうか?

考慮しても数えられるものと数えられないものがありますけど。

あと、上で書いた内容とは次元の違う話ですが、未送信フォルダに保存して、本
体ウィンドウからそのメールのプロパティを表示させると、そのメールの「サイ
ズ」がわかります。いまのとこ手動でしか使えませんが。ご参考まで。

[ ]
RE:03872 送信メール文字数カウントNo.03877
ながさわ さん 01/09/15 14:52
 
こんにちは、ながさわです。

> 出来ればメールアドレスか
> ら自動判別してドコモimode向けはXX文字で警告とか出来るとベス
> トです

> なお本文だけでなく携帯はヘッダからカウントするようなので

例に挙げているiMODEに限って云えば、送受信文字数の限定にヘッダは含まれません。

[ ]
RE:03874 送信メール文字数カウントNo.03878
ひろ さん 01/09/15 15:48
 
 cuma さん今日は、ひろです。
> しかも早々にマクロまで添付頂きまして感謝です。
 しかしバグがありました(^^;。
>     ##difference = ##difference - x - 1;
ではなく、
     ##difference = ##difference - x + 1;
でした。

[ ]
RE:03878 送信メール文字数カウントNo.03879
cuma さん 01/09/15 15:54
 
了解しました。
さきほどのままでも一見するとそれらしく動いたので気が付きませんでした。
どうもありがとうございます。

[ ]
RE:03877 送信メール文字数カウントNo.03880
cuma さん 01/09/15 15:56
 
きいろいまふらあさん、ながさわさん、アドバイスありがとうございます。
実は希望出した私自身が携帯のメール仕様を良く理解していなかったようです。
とりあえず厳密な事を考えず、おおよその参考データとして文字数を見ようと思いま
す。てっきり携帯各社がヘッダを全部カウントされていると思いこんでました。

[ ]
RE:03876 送信メール文字数カウントNo.03884
ひろ さん 01/09/15 17:33
 
 秀まるおさん、きいろいまふらあさん今日は、ひろです。
> #それと「golineend2;right;」は「フリーカーソルモード」「行末行頭の移動
> #禁止」あたりの設定如何では意図通りに動作しないかと。
 忘れていました。config の r オプションとレジストリ操作系を使うしか
ないですね。ヘッダでなければ、movetolineno を使えばよいんですけどね。

 秀まるおさんへ
 lineno, movelineno もヘッダ領域でも動作するようになりませんか?

[ ]
RE:03880 送信メール文字数カウントNo.03886
ひろ さん 01/09/15 23:16
 
 cuma さん今日は、ひろです。
> おおよその参考データとして文字数を見ようと思いま
> す。てっきり携帯各社がヘッダを全部カウントされていると思いこんでました。
 本文だけなら、末尾のサブルーチンで可能です。また要望一覧に、
> 送信メールでの文字数表示をリアルタイムに行う。
とありますね。
//-------------------------------------------------------------------
CoutBodyChar:
  disabledraw;
  ##x = x;
  ##y = y;
  goscreentop;
  ##screentop = y;
  gofiletop;
  ##count = 0;
  while(1){
    ##count = linelen2 + ##count;
    //改行含むなら、上の行を
    //##count = linelen2 + ##count + 1;
    //に置き換える。送信時の改行コードが 2 バイトなら、変更の必要有り
    if(lineno == linecount2)break;
    movetolineno 1, lineno + 1;
  }
  //改行含むなら、下記のコメントを削除
  //##count = ##count - 1;
  moveto ##x,##y;
  enabledraw ##screentop;
  return ##count;

[ ]
RE:03886 送信メール文字数カウントNo.03890
cuma さん 01/09/16 06:08
 
ひろさん おはようございます。

> 本文だけなら、末尾のサブルーチンで可能です。また要望一覧に、
>> 送信メールでの文字数表示をリアルタイムに行う。
>とありますね。

おお。これも楽しみです。

そしてそれまでは今回頂いたマクロで行きたいと思います。
何度も修正版を頂きましてありがとうございます。


[ ]
RE:03884 送信メール文字数カウントNo.03901
秀まるお さん 01/09/17 15:54
 
> 秀まるおさんへ
> lineno, movelineno もヘッダ領域でも動作するようになりませんか?

 とりあえずここにだけコメントしますが、ヘッダ領域内での行番号を取り出
すことは出来るかもしれませんが、movetolineno文は使えません。

 movetolineno文は、元々y座標に0以下を指定されたらファイル先頭に移動す
るという作りになってまして、その仕様を利用したマクロがあった場合、カー
ソルがファイル先頭に行かずにヘッダのどこかへ行ってしまいます。

[ ]
RE:03890 送信メール文字数カウントNo.03902
秀まるお さん 01/09/17 16:00
 
 文字数をリアルタイムに表示する機能は付けたいなぁと思いつつも、まだ何
も手付けてません。

 ついでに、文字数制限については携帯電話の種類等でいろんな制限が存在し
ます。単純に「本文が何文字まで」というのもあれば、「題名+本文が何文字
まで」とか、非常にややこしい物がいろいろあります。また、同じJ-PHONEで
も、SkyWalkerとJ-SkyWalkerの2種類あって、さらにJ-PHONE東北/北海道とJ-
PHONE東京では文字数が違うなんてこともあるようです。

 JustSystemのShuriken Proにその辺の設定ファイル(SENDLIMIT.DAT)があ
るんですが、それを見てやる気を無くしました。

[ ]
RE:03902 送信メール文字数カウントNo.03903
cuma さん 01/09/17 16:27
 
了解しました。
そんなに多くの種類があるとは驚きました。

[ ]
RE:03901 送信メール文字数カウントNo.03904
ひろ さん 01/09/17 18:24
 
 秀まるおさん今日は、ひろです。
>  movetolineno文は、元々y座標に0以下を指定されたらファイル先頭に移動す
> るという作りになってまして、
 確かに秀丸のマクロがほぼそのまま使えるのが売りの一つですから、仕様
変更は難しいですね。こうなるとヘッダ領域で、次の論理行に移りたい場合
は、
golineend2;
moveto 0,y + 1;
とすれば良いので、lineno も変更して頂く必要はありません。

[ ]
RE:03902 送信メール文字数カウントNo.03905
ひろ さん 01/09/17 18:24
 
 秀まるおさん今日は、ひろです。
>  ついでに、文字数制限については携帯電話の種類等でいろんな制限が存在し
> ます。単純に「本文が何文字まで」というのもあれば、「題名+本文が何文字
> まで」とか、非常にややこしい物がいろいろあります。
 本文に制限があるのは確実でしょうが、ヘッダについては振り分けの用の
設定のように、送信先毎に「不要ヘッダ」の様にカウントするヘッダを設定
するしかないですね。
 若しくはヘッダを諦め、本文だけにするとか...。

[ ]
RE:03902 送信メール文字数カウントNo.03906
tatuto さん 01/09/17 18:36
 
tatutoです。

秀まるお<xxxxxxxxxx@maruo.co.jp>さんより適座引用しています。

> JustSystemのShuriken Proにその辺の設定ファイル(SENDLIMIT.DAT)があ
>るんですが、それを見てやる気を無くしました。

だったら、ユーザ側で何文字までって設定出来るようにすれば
いいのではないのでしょうか?
そんなに簡単ではない?

[ ]
RE:03906 送信メール文字数カウントNo.03907
y.iida さん 01/09/17 19:21
 
> > JustSystemのShuriken Proにその辺の設定ファイル(SENDLIMIT.DAT)があ
> >るんですが、それを見てやる気を無くしました。
>
> だったら、ユーザ側で何文字までって設定出来るようにすれば
> いいのではないのでしょうか?
> そんなに簡単ではない?

似たような業務アプリを持ってまして(メールとは関係ないけど)
鶴亀に置き換えるすると、右上のカーソル位置表示の左側に、
(ヘッダー込み文字数 / 件名込み文字数 / 本文だけ文字数)と
いう形で表示しております。

あくまで参考という事で、こんなでも良い?って所です。

[ ]
RE:03906 送信メール文字数カウントNo.03908
きいろいまふらあ さん 01/09/17 23:30
 
>だったら、ユーザ側で何文字までって設定出来るようにすれば
>いいのではないのでしょうか?
>そんなに簡単ではない?

「何が」「何文字」って設定する必要がありますよね?
後者は簡単だけど、前者を指定するのが難しいということでは?

[ ]
RE:03908 送信メール文字数カウントNo.03911
秀まるお さん 01/09/18 18:25
 
 まぁ、とにかく難しいので後回しします。

[ ]