台灣最大程式設計社群網站
線上人數
794
 
會員總數:244663
討論主題:188766
歡迎您免費加入會員
討論區列表 >> VB6 >> Binary Mode 讀檔發生記憶體空間不足
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Binary Mode 讀檔發生記憶體空間不足
價值 : 100 QP  點閱數:285 回應數:6

樓主

青仔
初學者
15 19
353 35
發送站內信

Hi 各位先進好:

小弟在讀取一個檔案(裡面資料量非常大),使用Binary Mode 讀檔的方式下去讀,主要是希望他讀檔的時間可以很快,但目前碰到一個問題,就是因為檔案裡的內容太多了,導致程式發生記憶體空間不足而執行中斷,請問各位先進,有沒有其他的方法改善,謝謝!




Function Read_File(File_Path As String) As String

Dim fnum As Integer
Dim Tmp() As Byte

fnum= FreeFile
Open File_Path For Binary As #fnum
ReDim Tmp(LOF(fnum) - 1)
Get #fnum, , Tmp()
Close #fnum
Read_File = StrConv(Tmp, vbUnicode)


End Function




搜尋相關Tags的文章: [ Binary Mode 讀檔 ] ,
本篇文章發表於2019-01-03 15:39
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
如果用分段讀取的方式呢?
------------------------
檔案那麼大 讀進來後要作什麼處理呢?
本篇文章回覆於2019-01-03 22:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

青仔
檢舉此回應
P陳您好:

分段讀取是可行的,但重點是要能快速,目前我能想到利用open下去做的話,只有Binary Mode 讀檔方式最快,使用input mode方式不會出現記憶體空間不足,但讀檔真的太慢了,謝謝!

ps:檔案讀進來後,會將每行有用的字串截取出來做整理。
本篇文章回覆於2019-01-04 07:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
分段讀應該不會慢太多才對
不知您的程式如何寫的

另目前的電腦都有多個CPU,您功力足的話,可以用多執行緒的方式來處理
邊讀邊比較

本篇文章回覆於2019-01-04 20:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
想到了,您的問題不是出在讀,而是出在字串組合上 (也就是字串相加時)

1.請用 stringbuilder 元件就可以了
2.讀到 陣列中 也可以
本篇文章回覆於2019-01-04 20:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

青仔
檢舉此回應
P陳大大您好,小弟不才,google一下,如何使用stringbuilder元件還是摸不著頭緒,可否舉個例,謝謝!
本篇文章回覆於2019-01-08 21:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

P陳
檢舉此回應
請將您分段讀取的程式PO上來

另 vb6 不知有沒有支援 stringbuilder



本篇文章回覆於2019-01-09 17:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.