• ベストアンサー

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/17068)
回答No.1

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • inet コントロールを用いてHTMLソースのリンクを全て取得するには?

    お世話になります。 Inet.OpenURL("http://www.yahoo.co.jp") でhtmlソースは取得できたのですが <a href>タグの中のurlを全てとりだしてテキストファイルに保存するにはどうすればよいでしょう? いろいろ調べてみたのですがサンプルプログラムがみつからず困っています。詳しい方しえてください。

  • メモリ不足

    たびたび、メモリ不足というメッセージが出て、動作が停止してしまいます。それでまたそのファイルを開こうとしてもひらけません。何をしても開けないので、そのファイルはもう開くことはできないのでしょうか。 作業中に、とつぜんエラーメッセージが出て、画面が消えてしまいます。なぜですか? ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • PHPでHTMLソースを取得する方法はありますか?

    PHPでHTMLソースを取得する方法はありますか? RSSで複数のHTMLソースを取得しました。 以下のことをやりたいのですが、こういったことは可能でしょうか? ・複数のHTMLソースを取得する(同じサイトからなのでタグの種類も大体同じものです) ・その中から<data>タグを取得する(dataの中にはそれぞれ適当な数字が入っています) ・それをソートして、ソート順にURLを表示する。 このようなことは可能でしょうか? $RSS=RSSのURL(XML) foreach($RSS as $value){ $URL[]=$value->URL; } for ($i = 0, $n = count($URL); $i < $n; $i++) { echo $URL[$i] . "<br />"; } これでそれぞれのURLが URL1 URL2 URL3 とそれぞれ表示されます。これらのURLからそれぞれの<data>タグを取得して上のようなことをやりたいです。 説明が下手で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • WebBrowserに映されたページのhtml文獲得方法

    WebBrowserでナビゲートしたページのHTML文(ソース)をtextボックスに表示させたいのですが、出来なくて困っています。 text1.Text = inet1.OpenURL (★)  ★=表示させたいURL という事まではわかったのですが、WebBrowser1のURLの引渡し方法がわかりません! 教えてください!!おねがいします。

  • メモリ不足

    先日メモリ不足の質問をしたものです。実は他のエクセルとかのソフトではその表示はでません。「パーソナル編集長vol9」のファイルである一つだけのファイルが「メモリが足りません」とエラーがでてしまいます。別のファイルは何とか読み込めます。読み込めるようにするにはどうしたらよいのですか。もうパーソナル編集長で作ったファイルがメモリ不足と出たら、開くことができないのでしょうか? ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • メモリ不足です。

    VBAのADOで For i = 1 To rs.RecordCount の部分で 実行時エラー -2147024882(8007000e) メモリ不足です。 になります。 同じコードでも今までは問題なく動いてました。 この状態になったら、一度再起動するしかないのでしょうか? アクセス2010です。

  • 「Active X Inet」と「WinInet.dll」の違いについて

    最近「VB6」から「VB 2008 Express Edition」へプログラミング環境を 移行したものです。 VB6では「Active X コントロール:インターネットトランスファ(Inet)の OpenURLメソッド」を使用してHTTPファイルを取得していました。 環境の移行を機に「Windows Internet(WinInet.dll)の機能」を使用して、 VB6の「Inet.OpenURLメソッド」と同様の処理を行おうと考えました。 しかしいざ実行すると、「Inet.OpenURL」だと正常にファイルを取得できるのに、 「WinInet.dll」では異常終了してしまうケースがあります。 私の経験不足から、その原因を突き止めることができません。 よろしくお願いいたします。 ◎HTTPファイルを取得するまでの WinInet.dll で行っている処理[1] (1) InternetOpen ↓ (2) InternetConnect ↓ (3) HttpOpenRequest ↓ (4) HttpSendRequest ↓ (5) HttpQueryInfo ↓ (6) InternetReadFile ◎HTTPファイルを取得するまでの WinInet.dll で行っている処理[2] (1) InternetOpen ↓ (2) InternetOpenUrl ↓ (3) HttpQueryInfo ↓ (4) InternetReadFile ◎ 上記、処理[1]で正常にファイルが取得できるURL 上記、処理[1]では失敗するが処理[2]で正常にファイルが取得できるURL 上記、処理[1]でも処理[2]でも失敗するが、「Inet.OpenURL」で正常に ファイルが取得でいるURLの、3通りのURLが存在します。 この差はどこから生じるのでしょう。 処理[1]、処理[2]で失敗する場合は、 「InternetConnect」、「HttpSendRequest」または、「InternetOpenUrl」で 異常終了し、「エラーコード:2(ERROR_FILE_NOT_FOUND: The system cannot find the file specified.)」が返ってきます。 「ファイルが見つからない」というのは、「該当のURLが存在しない」と いう事なのかもしれませんが、「Inet.OpenURL」で、正常にファイルが 取得できるのは腑に落ちないです。 「Inet.OpenURL」自体も「WinInet.dll」の機能を使って実現している様な事を 聞きました。いったい、何が違うのでしょう。 何方か、私のこの疑問を解消して頂けないでしょうか? よろしくお願いいたします。

  • iTunesでメモリ不足

    win7でiTunesを使用しています。 [i Tunes Library ]ファイルが保存できません メモリが不足しています というエラーがでて終了しようとすると何度か再起動します。 大量の曲をゴミ箱にいれたのが原因なのかな?と思うのですが、iTunesのゴミ箱は どこにあるのでしょうか? 他に原因があるとすれば何でしょう? プレイリストをたくさんつくったときにも同様のエラーがでてプレイリストを削除したことがあります。 iTunes自体は何度か修復を試みました。 追記:CDのインポートもできなくなり困っております。

  • FTP接続での不具合

    以下のコードでFTPへの接続を行っていますが、わからないところがあります。 (1)「リモートホストに接続できません」とエラーが出てしまいます。 どのあたりが怪しいのかわからず困っています。 (2)GET の書き方について "GET test.txt C:\Test\test.txt"    ******** 受信するファイル名の指定の仕方ですが、上記の*******印部分ですが、 たとえばURLがpc000のTempフォルダの下にあるtest.txtを受信したい場合はディレクトリの指定の書き方がわかりません。 "GET /Temp/test.txt C:\Test\test.txt" と書いたりもしていますが、はたしてこの書き方があっているのかわかりません。 ご教示ねがえませんでしょうか? よろしくお願いいたします。     'FTP接続------------------------------------- Inet1.URL = "FTP://pc000" Inet1.Password = "xxx" Inet1.UserName = "yyy" Text1.Text = Inet1.OpenURL Inet1.Execute Inet1.URL, _ "GET test.txt C:\Test\test.txt" '-------------------------------------

  • 「メモリが不足しています」と表示されます

    ムービーシアターで 写真と音楽を入れて作っています。(15分くらい) 最後に「映画のエンドロール風で終わりたい」という編集機能を使って、テキストの入力をしました。途中で、プレビューを確認したら 「メモリが不足しています。処理を続行できません。  OSを再起動してください。」 と 表示されます。再起動しましたが、解決できませんでした。 お詳しい方、是非教えてください。よろしくお願いします。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

このQ&Aのポイント
  • 海外の整形外科医からのアプローチに心揺れる女性の話
  • 国際結婚に挑戦する勇気のない女性の葛藤
  • 安定した人生を選ぶか、夢を追うかの選択に迷う女性
回答を見る