~ モバイル版(スマートフォン)の操作 ~
左右にスワイプすると、前後の投稿へ移動します。
← 前の投稿 | 次の投稿 →
日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2014年4月15日火曜日

.NET Framework 1.1でSelectedTextを使用したテキスト挿入法は32767文字の壁を越えられるか?検証してみた


スポンサーリンク

記事「私がC#でログをテキストボックスに書き出す時に使用していたコード」にて、.NET Framework 1.1では、AppendTextメソッドにより32767文字以上のテキストを追加できないという問題があることを記載しました。

そこで、もう一つのテキストボックスへのテキストの追加方法であるSelectedTextを使用したテキスト挿入法では、32767文字の壁を越えられるかどうか検証してみました。

検証環境

使用したのは、.NET Framework 1.1用のコードを生成できる Microsoft Visual Studio .NET 2003です。
言語はC#を使用しました。
visual_studio_2003_version
Microsoft Development Environment 2003 Version 7.1.3091
Microsoft .NET Framework 1.1 バージョン 1.1.4322 SP1

実験に用いたパソコンは私のメインノートPCである「VAIO パーソナルコンピューター type F VGN-FW92DS」です。(Windows Vista Business Service Pack 2, 64 ビット オペレーティングシステム)

ソースコード

ソースコードは「C#でテキストボックスにテキストを追加する方法:AppendTextメソッドとSelectedTextを使用したテキスト挿入法の動作速度の比較」で用いたソースコードを .NET Framework 1.1 用に一部書き直したものです。

テキストボックスへのテキスト挿入方法を選択し測定開始ボタンを押すとテキストボックスへのテキストの挿入を実行します。
挿入する文字数は、概算ですが 1,000 * 100 = 100,000 文字以上を挿入します。

ソースコードは長いので別ページに掲載しました。
記事「.NET Framework 1.1でSelectedTextを使用したテキスト挿入法は32767文字の壁を越えられるか?検証してみた」で使用したソースコード

実行結果

AppendTextメソッド

まずは AppendText メソッドの実行結果を見てみます。下記の実行結果のとおり、32767 文字を挿入したところで処理が(何事も無かったかのように)終了しています。
dotnetfw1.1_appendtext_max
AppendText メソッドによるテキストボックスのテキストへのテキストの追加の実行結果
文字を32767 文字挿入したところで処理が(何事も無かったかのように)終了

下記のように、手入力でテキストを追記するとテキストボックスにテキストが追加できることから、テキストボックスの文字数の制限で32767 文字で止まっているわけではありません。
dotnetfw1.1_appendtext_manual_add
AppendText メソッドによるテキストボックスのテキストへのテキストの追加の実行結果に手入力でテキストを追加

SelectedTextを使用したテキスト挿入法

次に SelectedTextを使用したテキスト挿入法の実行結果を見てみます。AppendTextメソッドによる方法と同様に、下記の実行結果のとおり、32767 文字を挿入したところで処理が(何事も無かったかのように)終了しています。
dotnetfw1.1_appendtext_max
SelectedTextを使用したテキスト挿入法によるテキストボックスのテキストへのテキストの追加の実行結果
文字を32767 文字挿入したところで処理が(何事も無かったかのように)終了

AppendTextメソッドによる方法と同様に、下記のように、手入力でテキストを追記するとテキストボックスにテキストが追加できることから、テキストボックスの文字数の制限で32767 文字で止まっているわけではありません。
dotnetfw1.1_selection_manual_add
SelectedTextを使用したテキスト挿入法によるテキストボックスのテキストへのテキストの追加の実行結果に手入力でテキストを追加

ちなみに、下記のようなテキストボックスのテキストをすべて入れ替える方法では、上記2つの結果とは違い32767文字の壁は無く、すべての文字列を追加することが出来ました。
     textBox.Text = textBox.Text + “追加する文字列”;

dotnetfw1.1_text
テキストボックスのテキストをすべて入れ替える方法
上記2つの結果とは違い32767文字の壁は無く、すべての文字列を追加することができた

まとめ

.NET Framework 1.1でSelectedTextを使用したテキスト挿入法は32767文字の壁を越えられるか?
 →できませんでした!

AppendText メソッドによるテキストボックスのテキストへのテキストの追加も、SelectedTextを使用したテキスト挿入法同じ結果となりました。

これからは、.NET Framework 1.1で動作するプログラムを作る人はあまりいないと思いますが、その場合には 32767文字の壁を意識する必要があります。


方法としては、以下のものが挙げられます。

・AppendText メソッドによるテキストボックスのテキストへのテキストの追加、SelectedTextを使用したテキスト挿入法の場合には、テキストボックスのテキストが 32767文字 に達しないようにプログラム的に処理を施す。

・処理は重いが、テキストボックスのテキストをすべて入れ替える方法 を用いる。

・その他の方法を取る
  以下のページに書かれているように RichTextBox を使う方法などがあるようです。
C#(.NET)勉強中。。。:IntelligentCommandLine【2】:TextBox.AppendTextの罠C#(.NET)勉強中。。。:IntelligentCommandLine【2】:TextBox.AppendTextの罠






以上、なかなか困った問題ですが、.net framework 2.0 以上でソフトウェアを作る上では今回の問題は発生しなかったので、.net framework 2.0 以上 に移行するのが一番簡単な解決策かもしれません。




スポンサーリンク

コメントを投稿

コメント投稿機能について