投稿日 | : 2005/03/25(Fri) 17:41 |
投稿者 | : 花ちゃん |
Eメール | : |
URL | : |
タイトル | : Re^2: 現在の条件では最速かも? |
> > N1 = SendMessage(.hwnd, EM_LINEINDEX, CLng(1), 0)
> N1 = SendMessage(.hwnd, EM_LINEINDEX, CLng(現在の表示行数 - 500), 0) 'まずは500行
> のように書き換えて試してみたのですが、このような変更の仕方でよいのでしょうか?
CLng(1) で2行目の先頭までのバイト数(半角1バイト換算での)を取得しています。
Ret = SendMessage(.hwnd, EM_SETSEL, 0, ByVal N1)
で選択範囲を設定しています。[ 0, ByVal N1 ]0バイト目から2行目の先頭まで
を選択しております。
Ret = SendMessage(RichTextBox1.hwnd, EM_SETTEXTEX, VarPtr(SetTextPos), ByVal vbNullString)
上記で選択した範囲の文字列を vbNullString と リッチテキストフォーマットを保ったまま置換
しております。(置き換える場合は置き換える文字列を指定)
> 上記、変更の仕方が問題ないとすると、1万行程度では問題なくログがとれるようになりました。
それが心配でしたが、なによりです。
> 行単位とは別に、文字数の管理も入れておこうとおこうと思います。
送信側で処理できるなら1行当たりの文字数を制限された方がいいかと思うのですが。
又は、受信側で改行〜改行までの文字数をカウントしてある一定以上になったら改行コードを
付加するとか。
hhttp://msdn.microsoft.com/library/default.asp?url=/library/en-
us/shellcc/platform/commctls/richedit/richeditcontrols/richeditcontrolreference/richeditmessa
ges/em_settextex.asp
上記当たりで EM_ から始まる定数を名前からある程度判断して調べて見て下さい。
又、もっと高速に表示するなら置き換える方向で検討してください。
下記に追加書き込みと置き換え処理等の高速化比較のレスがありますので参考にして下さい。
hhttp://www.bcap.co.jp/hanafusa/logbbs/wforum.cgi?mode=allread&no=9220