「RichEditでの行の挿入エラー」について調べてみた

TwitterのクライアントとしてTwit(作者cheebow氏)を使っています。Twitは非常に使いやすく、現在も精力的に更新されています。わたしも継続して使っています。

ついこの間、「RichEditでの行の挿入エラー」というのが出ました。1度だけ。

すでにオフィシャルサイトでは、既知のエラーとしてこのようなことがかかれてます。

ヒビノアワ: Twitter用Windowsクライアント「Twit」できました

リストをクリックすると「RichEditの行の挿入エラー」が出る
RichEditの行の挿入エラーは、フォントをデフォルトに戻すと解決する場合があります。
それでも駄目な場合は、http://www.asahi-net.or.jp/~ri3a-okn/chipro/riched/riched.htmlこのページを参考にしてください。

フォントをMS P ゴシックからいじっていないわたしにはどうしようもないんで、http://www.asahi-net.or.jp/%7Eri3a-okn/chipro/riched/riched.htmlをみてみると、こんなことがかかれています。

Windows2000 では、本来 Rich Edit 1.0 が実装されているべき RICHED32.DLL がRICHED20.DLL (Rich Edit 2.0, 3.0)の単なるラッパーになってしまっているため、Rich Edit 1.0 の機能の一部(それもちゃんとドキュメント化されているもの)が使えなくなっています。

ぶっちゃけていうと、Windows2000以降の新しいRichEditコントロールはそれ以前のRichEditコントロールと互換性がなくなっちゃって、そこがエラーになるんじゃないということらしい。

ということで、

または当該ソフトと同じフォルダへRiched32.dllをコピーしてください、こちらの方法ならシステムに関わりませんので安全です。

Twitに適用すると、TwitのインストールしたフォルダにRiched32.dllを保存しろということです。

で、解決解決。
とおもったら、こんなページが・・・。
2007-05-23

DLLを入れ替えるとURLが反転表示になって、通常の文字列にアンダーラインがつくようになってしまう。

わたしの方でもこれ、再現しました。
tatsumi-da しの on Twitter: "下線わかった。 URL 付きのメッセージを読み込んだ後のメッセージは、全部青色下線になるんだ。 *Tw*"
これはおそらく、今導入したRichEdit1.0のバグなんだろうなぁ、と思います。

ということで、対策その2「あきらめる(ぉ」

あ、もう一つあります。対策その3「RichEdit ver1.0の下線バグがないのを探す」。DLしたRichEditのバージョンは5.0.1462.7なので、これより新しいのがどこかにおちてい(ry

完全に解決する方法は、今のところ無いのではないかなと思われます。ただ、いくつかデバッグのヒントになりそうなところをぐぐって見つけたんで、ここで紹介しておきます。

http://www.geocities.jp/teamhasebe/addition/error/index.htm

Borland製開発ソフトで作ったソフト

ということは、このあたりのDLLを更新すれば・・・。

http://iptalk.hp.infoseek.co.jp/manual/9i9s/9i9smanual/6zatta/6-16-19richedit_error.htm

1)起動直後にRichEditの初期化(?)が終わっていない内に文字を書き込むとエラーとなる。
2)特定の文字コードを書き込むとエラーとなる場合がある。XP,2000は、0x00,128,160,0xfd,0xfe,0xffで行挿入のエラーになる。95,98,meは、エラーとならない。
3)clear()してから「×」をAddすると行挿入エラーになる。
4)その他、いろいろなケース

今回のエラーは2)に当てはまるみたいです。ほかのサイトでは、ロシア文字やギリシャ文字を投稿すると、時たま発生するらしいです。たしかこっちで発生したときも、その投稿にはε(イプシロン)が大量に入っていたような。

Delphi-fan: 2004年9月

※Delphi8では、問題なく実行できます。(DLLが違うでしょうし、当たり前かな?)