dllfunc関数用のDLLNo.07346
ほていさん さん 14/04/14 08:02
 
山紫水明さん作のTKDeleteHeader.macをダウンロードし、実行すると、
「DLLがロードされていないのに、dllfunc関数が使われました」というエラーメッ
セージが出ました。必要なDLLのダウンロード方法を教えてください。

[ ]
RE:07346 dllfunc関数用のDLLNo.07347
秀まるお2 さん 14/04/14 17:02
 
 そのマクロは秀丸メール用なのですが、秀丸メール上で実行してもエラーにな
るということでしょうか。

 秀丸エディタ上で実行するとエラーになっても仕方が無いと思います。

 ロードしてるのはtkinfo.dllだと思いますが、そのDLLは秀丸メールに標準添
付されてる物で、秀丸メール上で実行してる限りはエラーは出ないはずだと思い
ます。

[ ]
RE:07346 dllfunc関数用のDLLNo.07348
山紫水明 さん 14/04/14 17:22
 
 ほていさんさん,

>「DLLがロードされていないのに、dllfunc関数が使われました」というエラー
>メッセージが出ました。必要なDLLのダウンロード方法を教えてください。

 説明のドキュメントに書いている「田楽DLL」がないためだと思われます。
田楽DLLは杉浦まさきさん作で,秀丸エディタのマクロライブラリにあります。
http://hide.maruo.co.jp/lib/macro/index.html
(2003年3月4日アップロード)
 最新版は杉浦まさきさんのホームページ
http://www.ceres.dti.ne.jp/~sugiura/
にあります。他のマクロでもよく利用されますので,できるだけ最新版を導入さ
れることをおすすめします。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:07347 dllfunc関数用のDLLNo.07349
ほていさん さん 14/04/16 08:01
 
> そのマクロは秀丸メール用なのですが、秀丸メール上で実行してもエラーにな
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>ます。
私が実行したのは、秀丸エディタ上でした。
田楽DLLをダウンロードして、実行してみたのですが、
同じエラーが表示されました。

[ ]
RE:07347 dllfunc関数用のDLLNo.07350
ほていさん さん 14/04/16 08:18
 
> そのマクロは秀丸メール用なのですが、秀丸メール上で実行してもエラーにな
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>ます。
私がやりたいことは、メールのログを1ヶ月分まとめたテキストファイルを秀丸エデ
ィターで読み込み、ヘッダー部分だけを、マクロで削除する作業です。過去に、マク
ロライブラリーにあったのですが、現在のライブラリーでは見当たりません。そこで、
山紫水明さんのTKDeleteHeader.macで出来ないかやって見ようとしたのです。

[ ]
RE:07350 dllfunc関数用のDLLNo.07351
山紫水明 さん 14/04/16 17:06
 
 ほていさんさん,

>私がやりたいことは、メールのログを1ヶ月分まとめたテキストファイルを秀
>丸エディターで読み込み、ヘッダー部分だけを、マクロで削除する作業です。

 そういう目的でしたら,このマクロは使用できません。このマクロは秀丸メー
ル上でだけ動作します。
 ところで削除したいのは全部のヘッダーですか,それとも特定のヘッダーですか?

                          山紫水明

[ ]
RE:07350 dllfunc関数用のDLLNo.07352
秀まるお2 さん 14/04/16 17:38
 
 対象のファイルの形式が何かによりますが、例えばMBOX形式とか秀丸メール用
の形式(Ctrl-L !で区切られた形式)ならば、一度秀丸メールにインポートして
秀丸メール上でマクロを使って処理したらどうかなぁと思います。

 秀丸メール上で、メール本文のみをファイルに出力するとしたら、例えば
インポートしたフォルダを選択して以下のマクロを実行し、最後に出てくる「名
前を付けて保存」のダイアログボックスで適当に保存するとかって作戦が可能で
す。

 こんな作戦でどうでしょうか。

 秀丸エディタでやるとしたら、それはそれでマクロを作って可能かとは思いま
すが、メールの区切りが何かが分からないとちょっと作られないです。


    loaddll "tkinfo.dll";
    #main = dllfunc("MainWnd");
    #n = dllfunc("NewMail");
    gofiletop;
    beginsel;
    gofileend;
    delete;
    #n = dllfunc("SwitchHeaderView", 0);
    #editor = hidemaruhandle(0);
    setactivehidemaru #main;
    #i = 0;
    #count = dllfunc("MailCount");
    if( dllfunc("IsThreadView") ) {
        #n = dllfunc("SetThreadView", 0);
    }
    while( #i < #count ) {
        #n = dllfunc("SetMailIndex", #i);
        gofiletop;
        beginsel;
        gofileend;
        copy;
        setactivehidemaru #editor;
        gofileend;
        insert "---------------------\n";
        paste;
        insert "\n";
        setactivehidemaru #main;
        #i = #i + 1;
    }
    setactivehidemaru #editor;
    SAVEAS;

[ ]
RE:07351 dllfunc関数用のDLLNo.07353
ほていさん さん 14/04/16 17:57
 
> ほていさんさん,
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>                          山紫水明
Date,From,To,Subject以外のヘッダーはすべて削除したいのです。
ほていさん

[ ]
RE:07353 dllfunc関数用のDLLNo.07354
山紫水明 さん 14/04/16 20:56
 
 ほていさんさん,

>Date,From,To,Subject以外のヘッダーはすべて削除したいのです。

 すべて削除するのであれば,秀まるおさんの作られたマクロでやるのがいいと
思います。そのマクロは本文のみを取り出すという動きになっているようです。
しかし残すヘッダがあると少し面倒になりそうです。

 ログファイルを開いた状態で次のマクロを実行するとどうでしょうか。
 ログの構造についてはあまりわかっていないので,もしかしたら重大なミスがあ
るかもしれません。バックアップを取った上で十分にテストしてください。
//-----------------------------------------------------//
disabledraw;
gofiletop;
while( 1 ) {
    searchdown "^[A-Za-z-]+?:", regular;
    if( !result ) break;
    $header = gettext( foundtopx, foundtopy, foundendx, foundendy );
    if( $header == "Date:" || $header == "From:"
        || $header == "To:" || $header == "Subject:" ) {
        continue;
    } else {
        deleteline2;
        if( $header == "Received:" || $header == "Authentication-Results:" )
{
            while( code == 0x09 ) deleteline2;
        }
        movetolineno 1, lineno - 1;
        #n = #n + 1;
    }
}
message str(#n) + " 行のヘッダを削除しました。";
endmacro;
//---------------------------------------------------//

                          山紫水明

[ ]
RE:07354 dllfunc関数用のDLLNo.07355
ほていさん さん 14/04/17 07:03
 
山紫水明さん

行頭にスペースが入っていないヘッダーはすべて削除出来ました。
ただ、下記の2,4,5行目のように、行頭にスペースが入っている半角英数文字の
行も削除出来るように追加していただければ、目的を果たせるのですが。
よろしくお願いします。

Received: from mogw0430
  by kbmlrc04.zaq.ne.jp
Received: from mv-osn-h
 by mogw0430.ocn
 Wed, 25 Sep 2013

> ほていさんさん,
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>                          山紫水明

[ ]
RE:07355 dllfunc関数用のDLLNo.07356
山紫水明 さん 14/04/17 17:29
 
 ほていさんさん,

>ただ、下記の2,4,5行目のように、行頭にスペースが入っている半角英数
>文字の行も削除出来るように追加していただければ、目的を果たせるのですが。

 次のようにしたらどうでしょうか。

//-------------------------------------------//
disabledraw;
gofiletop;
while( 1 ) {
    searchdown "^[A-Za-z-]+?:", regular;
    if( !result ) break;
    $header = gettext( foundtopx, foundtopy, foundendx, foundendy );
    if( $header == "Date:" || $header == "From:"
        || $header == "To:" || $header == "Subject:" ) {
        continue;
    } else {
        deleteline2;
        if( $header == "Received:" || $header == "Authentication-Results:"
            || $header == "Content-Type:" ) {
            while( code == 0x09 || code == 0x20 ) deleteline2;
        }
        movetolineno 1, lineno - 1;
        #n = #n + 1;
    }
}
gofiletop;
message str(#n) + " 行のヘッダを削除しました。";
endmacro;
//-------------------------------------------//

                          山紫水明

[ ]
RE:07355 dllfunc関数用のDLLNo.07357
山紫水明 さん 14/04/17 17:51
 
 ほていさんさん,追伸です。

 先にお示ししたマクロはある意味危険でもあります。本文の中にアルファベッ
トと「:」始まる行があればそれも削除してしまいます。したがって本来ならば,
最初にダウンロードしていただいた TKDeleteHeader.mac を秀丸メール上で実行
していただき,削除すべきヘッダ名を登録していただくのが安全な方法です。
 このマクロは最初のヘッダ登録は面倒かもしれませんが,後はフォルダ単位で
実行できますから楽になると思います。
 以上のことを念頭においていただければと思います。

                          山紫水明

[ ]
RE:07357 dllfunc関数用のDLLNo.07358
ほていさん さん 14/04/18 21:08
 
山紫水明さん

マクロの骨子を作成していただきましたので、一部追加の上、目的としたマクロが仕
上がりました。
ご指導ありがとうございました。

ほてい

> ほていさんさん,追伸です。
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>                          山紫水明

[ ]
RE:07352 dllfunc関数用のDLLNo.07359
ほていさん さん 14/04/18 21:15
 
秀まるお2さん

お手数をおかけしましたが、山紫水明さんの方法で解決しました。
ありがとうございました。

> 対象のファイルの形式が何かによりますが、例えばMBOX形式とか秀丸メール用
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>    SAVEAS;

[ ]