SetFindPack関数のエラーの回避方法を教えNo.00503
kiwikazuya さん 07/07/29 17:06
 
中国在住のkiwikazuyaです。

SetFindPack関数で下のようなエラーが出ます。
この原因と回避方法を教えてください。

tkinfo.dllのSetFindPack関数でエラーが発生しました。発生箇所は、先頭から35桁
目です。エラー内容 = 文字列の終了(")がありません。

原因は多分検索文字列がメールの中にないときに
発生するのかもしれません。

よろしくお願いいたします。

[ ]
RE:00503 SetFindPack関数のエラーの回避No.00504
秀まるお さん 07/07/29 18:31
 
 SetFindPackしてる文字列をmessage文で表示させる等して、文字列のおかしい
部分を自分で確認するのがいいんじゃないかと思います。

 あとは、その文字列を正しいFindPack形式にするようにマクロを直すってこと
になると思います。

    #n = dllfunc("SetFindPack", $s);

 とやっているなら、

    message $s;
    #n = dllfunc("SetFindPack", $s);

 ってやってみるといいんじゃないかと思います。または

    #n = dllfunc("NewMail");
    gofiletop;
    beginsel;
    gofileend;
    delete;
    insert $s;

 とかすれば、文字列の内容がもっと分かりやすくなると思います。

[ ]
RE:00504 SetFindPack関数のエラーの回避No.00505
kiwikazuya さん 07/07/29 20:27
 
原因は、以下のように考えられます。

検索するメール--->ユニコードメール
検索文字列--->中国語(中国語もユニコードメールのSubjectから取得)
それで検索対象がない時にエラーメッセージが表示されます。

「エラー内容 = 文字列の終了(")がありません。」と
ありますが、「message関数」でその取得された文字列を
見るときちんと文字列が取得されています。

このエラーが表示された後、検索して一覧を作成すると、
すべて表示されます。

上記条件で検索対象がないときの検索文字列が
日本語や英語のときは、空の検索して一覧が作成されます。

ご報告まで。

参考までにエラーが表示されるマクロは次のものです。
エラー表示をしないように処理していいかんじです。

loaddll "TKInfo.dll";

// beginclipboardread;
// $s = getclipboard;
// $s = input( "検索対象文字列は?" );
 $s = dllfuncstr( "CurrentHeader", "Subject" );
 $s2 = dllfuncstr( "CurrentHeader", "Date" );
// $s = dllfuncstr( "YenEncode", $s ); input分の時に使う。
// #n = dllfunc( "SetFindPack", "(\"" + $s + "\", target=body)");
    $pack = "(\"" + $s + "\", target=body)" + "and" + "(\"" + $s2 + "\", tar
get=body)";
//    $pack = $pack + ", charset=gb2312";
// #n = dllfunc( "SetFindPack", "(\"" + $s + "\", target=body)"); 元々自分で
作ったもの後で秀まるおさんのに替えた。
    message $pack;
    disableerrormsg;
    #n = dllfunc( "SetFindPack", $pack );
//message str(#n);

if( #n == 0 ) {
    message "登録されていないようです。";
    enableerrormsg;
    endmacro;
}

//message str(result);
 #n = dllfunc("DoGrep", "Calender", "User\\calender");
    enableerrormsg;
endmacro;

[ ]