BREWで、IHTMLVIEWER_SetViewStateなどで値を設定したいとき、漢字などは、POSTのように、%81%40のような16進で表現する。
で、このことをやってくれる関数がIWEBUTIL_UrlEncodeである。
逆にIHTMLVIEWER_GetViewStateでうけとった値は、上記のように漢字が表現されているので、その値をふつうの漢字に直すには、IWEBUTIL_UrlDecodeを使う。
で、IWEBUTIL_UrlEncodeのとき
関数の書式は以下のとおり
char * IWEBUTIL_UrlEncode(IWebUtil * pIWebUtil, const char * cpcIn,
int * pnInLen,char * pcOut, int * pnOutLen);
ここで第一引数は、インスタンスなのでいいとして
第二引数は、変換しようとする値
第三引数は、変換しようとする値の長さ
第四引数は、変換結果を入れるところ
第5引数は、変換結果の長さ
ということは、第五引数は、値入れなくてよさそうに見えてしまう(ポインタだけ渡せば)
そうでははない。
第五引数には、第四引数の大きさ(長さ)を必ず入れてから呼び出すこと
つまり、ここは書き換えられる。
もし、第五引数をいれないで呼び出すと、ここが0クリアされていれば、第四引数に変換結果が入ってこない。変な値が入っていれば、その値を長さとみなして処理してしまう。
IWEBUTIL_UrlDecodeもそうかもしんない。
どっちのときもやっておいたことにこしたことはない。
つぎのBREWネタを書く前に必要なので、つけたしといた