印刷時のdateの表記についてNo.01161
Seven Stars さん 01/04/21 20:57
 
 初めて投稿します。Seven Stars と申します。
 エディタは秀丸(+REDLIKE)とメーラは鶴亀メールの一本槍で大変
お世話になっております。
 早速ですが質問あるいは要望があります。印刷時のdateの表記に
ついてですが、英語表記?(Tue, 13 Mar 2001など)ではなく
2001.03.13(火)の様に表記(印刷)する方法はないでしょうか?
Mar といわれてもなかなかピンとこないものですから。お恥ずかし
い。
 マクロなどで対応可能であればヒントなど教えていただきたいの
です。秀丸マクロは達者ではありませんがなんとか組めます。
 どうぞよろしくお願い致します。

[ ]
RE:01161 印刷時のdateの表記についてNo.01163
秀まるお2 さん 01/04/22 08:54
 
>  早速ですが質問あるいは要望があります。印刷時のdateの表記に
> ついてですが、英語表記?(Tue, 13 Mar 2001など)ではなく
> 2001.03.13(火)の様に表記(印刷)する方法はないでしょうか?

 印刷のためだけということで良ければ、メールを日本語表記に改変してしまう手が
あります。

 マクロとしては、以下の処理となります。

    loaddll "tkinfo.dll";
    moveto 0, -9999;
    searchdown "date:";
    if( ! result || x != 0 ) {
        message "Date:ヘッダが見つかりません。";
        endmacro;
    }
    golinetop2;
    beginsel;
    golineend2;
    $date = gettext( seltopx, seltopy, x, y );
    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
    escape;
    golinetop2;
    beginsel;
    golineend2;
    delete;
    insert $date;

 1つのメールを印刷するだけなら、上記のマクロの最後にさらに

    print;
    quit;

 と入れておけばいいです。もし、複数のメールをまとめて印刷するなら、例えばど
こかにテンポラリ用のフォルダを作成して、そこに印刷したいメールを全部コピーし
て、上記のマクロの最後にさらに「save;」を入れるような形ですべてのメールを改
変保存するような形(ループするような形)にし、まとめて印刷すればいいと思いま
す。

[ ]
RE:01163 印刷時のdateの表記についてNo.01170
Seven Stars さん 01/04/22 19:35
 
秀まるお2さん。コメントありがとうございます。
教えていただいたマクロを色々試しているのですが、中々うまくいきません。

>    ・
>    ・
>    ・
>    $date = gettext( seltopx, seltopy, x, y );
>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
>    ・
>    ・
>    ・

>    $date = gettext( seltopx, seltopy, x, y );
の後に
    message  $date ;
を追加してみたのですが、
    Sun, 22 Apr 2001 08:54:22 +0900
が表示される場合もあり
    Date: Sun, 22 Apr 2001 08:54:22 +0900
が表示される場合もあり、そのメール全文が表示される場合もあります。

更に、
>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
の後にも
    message  $date ;
を追加してみたのですが、こちらは必ず
    2001/04/22(日)08:54:22
が表示されます。メール全文が表示されません。

また、最終的な印刷結果では、
    Date: Sun, 22 Apr 2001 08:54:22 +0900
だけが印刷される場合もあり、そのメール全文が印刷される場合もあります。
しかし、いずれの場合も
    2001/04/22(日)08:54:22
が印刷されません。
どうすればどのパターンになるかは未だ判明していません。

素人考えですが、
>    $date = gettext( seltopx, seltopy, x, y );
>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
では全文のうちDate部分のみを塗り替えることはできない様な気がしました。
また、
>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
                        ^^^^^^^^^^^^
の意味をマクロのヘルプから探し出すことができませんでした。
どこに記載されているのでしょうか?

[ ]
RE:01170 印刷時のdateの表記についてNo.01176
まっちん さん 01/04/23 00:33
 
 まっちんです。鶴亀マクロ初心者ですが、わかる範囲で。

>素人考えですが、
>>    $date = gettext( seltopx, seltopy, x, y );
>>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
>では全文のうちDate部分のみを塗り替えることはできない様な気がしました。
>また、
>>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
>                        ^^^^^^^^^^^^
>の意味をマクロのヘルプから探し出すことができませんでした。
>どこに記載されているのでしょうか?

キーワードからFormatDateを検索してください。
この関数は日付の文字列を読み込んで、指定した書式に変換するものです。

 検索(searchdown)、選択モード開始、行末まで移動。これでDateヘッダを選択
することになるはずです。
 さらにgettextで、Dateヘッダが$dateに入ります。
 マクロを追う限り、うまくいきそうなのですが。


>秀まるお2さん。コメントありがとうございます。
>教えていただいたマクロを色々試しているのですが、中々うまくいきません。
>
>>    ・
>>    ・
>>    ・
>>    $date = gettext( seltopx, seltopy, x, y );
>>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
>>    ・
>>    ・
>>    ・
>
>>    $date = gettext( seltopx, seltopy, x, y );
>の後に
>    message  $date ;
>を追加してみたのですが、
>    Sun, 22 Apr 2001 08:54:22 +0900
>が表示される場合もあり
>    Date: Sun, 22 Apr 2001 08:54:22 +0900
>が表示される場合もあり、そのメール全文が表示される場合もあります。

この辺りの動作が変ですね。
結果的として、FormatDateも変換に失敗しているのかもしれません。

  insert $date;
の部分を
  $s = dllfuncstr("SetHeader", "Date:", $date);
としてマクロを実行したところ、(鶴アイコン)エディタで確認する
かぎりうまくいきました。

 もっと簡単に
    loaddll "tkinfo.dll";
    $date = dllfuncstr("CurrentHeader", "Date");
    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
    $s = dllfuncstr("SetHeader", "Date", $date);
とか。
秀まるお2 さんが検索コマンドベースで書かれたのは何か理由があるのかも。

[ ]
RE:01170 印刷時のdateの表記についてNo.01177
秀まるお2 さん 01/04/23 08:44
 
 うまくいかない理由は、メールが編集許可になってないからだとおもいます。その
辺の配慮を忘れてました。

 以下のマクロなら大丈夫だと思います。

    loaddll "tkinfo.dll";
    if( dllfunc("IsTuruKameMain") ) {
        #n = dllfunc("OpenMail");
    }
    if( readonly ) {
        #n = dllfunc("EnableEdit");
    }
    if( browsemode ) {
        browsemodeswitch;
    }
    moveto 0, -9999;
    searchdown "date:";
    if( ! result || x != 0 ) {
        message "Date:ヘッダが見つかりません。";
        endmacro;
    }
    golinetop2;
    beginsel;
    golineend2;
    $date = gettext( seltopx, seltopy, x, y );
    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
    escape;
    golinetop2;
    beginsel;
    golineend2;
    delete;
    insert $date;

[ ]
RE:01176 印刷時のdateの表記についてNo.01183
Seven Stars さん 01/04/23 14:54
 
 まっちんさんコメントありがとうございました。

>キーワードからFormatDateを検索してください。
>この関数は日付の文字列を読み込んで、指定した書式に変換するものです。

 申し訳ありません。私は秀丸本体のヘルプと秀丸マクロのヘルプを参照して
いました。このキーワードは鶴亀メール独自のもの(?)なので鶴亀メールの
ヘルプを参照しないといけなかったのですね。内容を確認しました。

>この辺りの動作が変ですね。
>結果的として、FormatDateも変換に失敗しているのかもしれません。

 秀まるお2 さんからのコメントによりメールの編集許可の当たりが原因にな
っていることがわかりました。

> もっと簡単に
>    loaddll "tkinfo.dll";
>    $date = dllfuncstr("CurrentHeader", "Date");
>    $date = dllfuncstr("FormatDate", $date, "YYYY/MM/DD(W) hh:mm" );
>    $s = dllfuncstr("SetHeader", "Date", $date);
>とか。

 私の環境ではうまくいきませんでした。もう少し分析してみます。

[ ]
RE:01177 印刷時のdateの表記についてNo.01184
Seven Stars さん 01/04/23 14:55
 
 秀まるお2 さんコメントありがとうございました。

> 以下のマクロなら大丈夫だと思います。

 うまくいきました。最後に
    print;
    quit;
を追加し私がやりたかった事が実現できました。まっちんさんに教えていただ
いたコードと併せ自分なりに勉強(分析)してみたいと思います。ありがとう
ございました。

[ ]