SetNameOnlyとUnDoubleQuoteについてNo.46512
K'zawa さん 14/07/28 20:03
 
こんにちは、K'zawaです。

下記マクロについて、

1. SetNameOnly関数は、空文字列をダブルクォーテーションで括った場合の
空文字列を名前と認めているのでしょうか?
2. UnDoubleQuote関数が[""]のダブルクォーテーションを取り除けないのは仕様
ですか?

1は使い方によって、それでいいケースも悪いケースも考えられますが、
2は理由が分かりません。


loaddll "tkinfo.dll";
$s = "\"\" <xxx@xxx.com>";
$s = dllfuncstr("UnDoubleQuote", dllfuncstr("SetNameOnly", $s) );
message $s;


---以下の内容はコミュニテックス会議室システムにより付加されました。
本文中のメールアドレスは伏せ字に変換されました。伏せ字にしたくない場合
はメールアドレスを""で囲んで書き込んでください。

[ ]
RE:46512 SetNameOnlyとUnDoubleQuoteにつNo.46513
秀まるお2 さん 14/07/29 08:50
 
> 1. SetNameOnly関数は、空文字列をダブルクォーテーションで括った場合の
> 空文字列を名前と認めているのでしょうか?

 これはそうなってます。

> 2. UnDoubleQuote関数が[""]のダブルクォーテーションを取り除けないのは仕様
> ですか?

 これも、意図的にそういう処理になってるようでした。

 UndoubleQuote関数がそうだというよりは、秀丸メールの内部での、名前から
""を取る共通の処理がそうなっました。

 たぶん、メール一覧に名前のみ表示する設定の時に、名前があえて""と指定さ
れてる(空と指定されてる)ことが分かるように、""と指定されてる時はあえて
ダブルクォーテーション記号を取らずにそのまま表示した方がいいと思ったから
だと思います。

 何も表示されないとバグかと思われたりするかもしれないしということで。

 今から仕様変更しても、新バージョンと旧バージョンで仕様が違うがためのや
やこしい処理が必要になってしまうと思うので、これはこれでそういう仕様のつ
もりでマクロ作って欲しいです。

    $s = dllfuncstr("UnDoubleQuote", dllfuncstr("SetNameOnly", $s) );
    if( $s == "\"\"" ) {
        $s = "";
    }

 みたいに書いて欲しいです。

 tkinfo.dllのヘルプのUnDoubleQuote関数の所には補足説明を追加させていた
だきます。

[ ]
RE:46513 SetNameOnlyとUnDoubleQuoteにつNo.46514
K'zawa さん 14/07/29 11:59
 
秀まるおさん、こんにちは。
K'zawaです。

> 今から仕様変更しても、新バージョンと旧バージョンで仕様が違うがためのや
>やこしい処理が必要になってしまうと思うので、これはこれでそういう仕様のつ
>もりでマクロ作って欲しいです。

分かりました。というかもうできてますが(笑)
最初はCallByEmailList関数で使うことを想定したのですが、他の問題もあって
無理でした。

// 抜粋
    loaddll "tkinfo.dll";
    $header = dllfuncstr( "CurrentHeaderUnited", "To" );

    // $name = dllfuncstr( "CallByEmailList", "SetNameOnly", $header );
    #n = dllfunc( "CountEmailList", $header );
    while ( #i < #n ) {
        $EmailList = dllfuncstr( "GetEmailList", $header, #i );

        $s = dllfuncstr( "UnDoubleQuote", dllfuncstr( "SetNameOnly",
$EmailList ) );
        if ( $s == "\"\"" || $s == $EmailList ) {
            $s = dllfuncstr( "SetEmailOnly", $EmailList );
        }

        if ( #i > 0 ) $name = $name + "\t";
        $name = $name + $s;
        #i = #i + 1;
    }
   

[ ]
RE:46514 SetNameOnlyとUnDoubleQuoteにつNo.46515
秀まるお2 さん 14/07/29 14:23
 
 ""の場合は空文字列を返すタイプの、SetNameOnly2とかの関数追加って作戦も
可能ではあります。

 必要なら追加しても全然かまわないです。

[ ]
RE:46515 SetNameOnlyとUnDoubleQuoteにつNo.46516
K'zawa さん 14/07/30 00:16
 
秀まるおさん、こんにちは。
K'zawaです。

> ""の場合は空文字列を返すタイプの、SetNameOnly2とかの関数追加って作戦も
>可能ではあります。
>
> 必要なら追加しても全然かまわないです。

今回は、空はNGなので必要ないです。

[ ]