掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルから配列データを動的配列への一括読み込み (ID:151242)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
AAAAAさん、vramさん、ありがとうございます。 AAAAAさん 動的配列は使用せず、TMemoryStreamで読み込んだデータ領域へIndexで参照できる様にしたと言う事でしょうか? メモリー不足・・・ 一括読み込みした後に、ポインターでシーケンシャルに読み出し、動的配列へ代入した場合にはエラーにはなりません。 配列サイズが大き過ぎるとも思えない様です。 vramさん 以前の問い合わせと関連があるかも知れませんが、一括読み込みした場合、エラーにはならないのでメモリー不足ではない様にも思えます。 fs.readでもGetMemで一括で読みだしているので、ファイルからの読み出しとしては、満足しています。 GetMemした領域へはポインターでのアクセスなので、面倒なので、動的配列へ代入し直して、以降の処理に備えたいと思いました。 ただ、この代入作業が非常に時間が掛かっているので、高速化の為、ファイルから動的配列へ直接読み込めないか?と思いました。 行毎にfs.Readする事で、一括読み込みと遜色のない速度で読み込めていたので、その点は良かったのですが、何故かエラー(access violation)が生じる様になりました。(読み込み自体でエラーはありません。その後の処理で発生します) 一括読み出し後シーケンシャルに代入した動的配列とファイルから行毎に読み込んだ動的入れるは同じものです。念の為。 行毎に読み込むとその後の処理でエラーが生じる為、一括読み込みで進める事にしたいのですが、 データの代入で時間が掛かっている点を高速化したいと思っています。 一案は、AAAAAさんに示唆頂けたMemory上へIndex参照する関数などを作るなどを考えています。(動的配列へ代入せず、メモリー上へアクセスする) 然しながら、この配列要素の演算結果を各要素毎に格納する必要もあるので、動的配列は必要となり、演算結果を格納すると言う事は動作としては各要素を代入するのとほぼ同じであり、やはり時間が掛かってしまいます。 この様な配列要素での演算を高速に処理する方法はあるのでしょうか? "Application.ProcessMesage"はループ内で毎回呼び出しています。セオリー知らずで失礼しました。 進捗を示す為なので、ProgessbarのValueを変更する度に呼び出していました。 いつ呼ぶのが、正しいタイミングなのでしょう?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.