• ベストアンサー

Inetでサイトのソースを取得する時にメモリ不足のエラーが出る

For i = 0 To 10 Inet1.URL = List2.List(i) Text1.Text = Text1.Text + VbCrLF + Inet1.OpenURL Next i Text1に複数のサイトのソースを表示するプログラムです。 繰り返しの回数が10回くらいだとエラーは出ませんが30くらいにすると メモリ不足のエラーが出てしまいます。これを防ぐには どうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#102878
noname#102878
回答No.2

エラー時、テキストボックスの文字数はどのぐらいに増えてますか? ヘルプによると、MultiLineプロパティがTrueの場合は最大で32KB(約32000文字)、Falseの場合は2048文字です。 しかし、恐らくこれはVBの言語仕様によるところのメモリ不足かもしれませんね。 VBの場合は先にバッファを用意せず、文字が追加される都度、必要分だけメモリ上に格納場所を用意します。 メモリ上で連続した領域が必要になりますから、文字が追加されるたびにメモリの中で値のコピーが繰り返される。 どうもここら辺にエラーの原因があるような気がします。 先に全体の文字数を想定しておき、 Dim strSource As String * 30000 というように、あらかじめ30000文字分(例えばですが)のバッファを持つ文字列型変数を作り、そこへ全部の文字を格納してから最後にテキストボックスのTextプロパティに入れてみてはどうでしょうか。

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

リッチテキストボックスなら32Kを超えても大丈夫。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Text1.Text には文字列がるい積されていくのですがFor Nextのループ外で(Forに入る前に) Text1.Text=""を入れておられるでしょうね。 見当はズレだとすみません。

関連するQ&A

専門家に質問してみよう