none
請問關於查看二位進檔(binary files)的方式 RRS feed

  • 問題

  • VS版本是2005。

    目前使用了最基本的讀取方式(如下)。

    dim temp as byte()=My.Computer.FileSystem.ReadAllBytes(FileName)

    我想將 Binary Files 表現在 Textbox 中,

    就像以 Ultra Edit 開啟二進位檔案時,會顯示一連串的十六進制的數字。


    而我目前遇到的目難,是如果我用迴圈去跑 Byte 陣列(從第一個讀取到最後一個),

    當 binary files 檔案很大(像800MB),

    讀取的時間太長,常造成程式死當。@@

    我不是要寫一個像 UltraEdit 功能的程式,

    只是很單純地想把每一個 BYTE 顯在Textbox 裡,

    那想請問,有沒有更好的方式可以直接顯現在Textbox,不要耗太長時間。@@

    2010年4月29日 上午 10:12

解答

  • 這麼大的東西光要從Byte轉成String或Char 大概就把記憶體灌爆了吧. 而且我認為除非是用分頁的方式做, 也就是只處理要顯示出來的那個範圍的資料, 不然要一次做完, 就算沒把記憶體給灌爆, 也不可能快到哪去.

    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    • 已標示為解答 想不到ID 2010年4月29日 上午 11:51
    2010年4月29日 上午 10:52
    版主

所有回覆

  • 這麼大的東西光要從Byte轉成String或Char 大概就把記憶體灌爆了吧. 而且我認為除非是用分頁的方式做, 也就是只處理要顯示出來的那個範圍的資料, 不然要一次做完, 就算沒把記憶體給灌爆, 也不可能快到哪去.

    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    • 已標示為解答 想不到ID 2010年4月29日 上午 11:51
    2010年4月29日 上午 10:52
    版主
  •  

    這個問題我找了一天資料又嘗試了半天,現在知道不適用就不用一直往這方面鑽牛角尖了。

    萬分謝謝您。QQ

    2010年4月29日 上午 11:51
  • 處理翻頁事件,只把需要顯示在螢幕上的資料讀出來並輸出成 16 進位字串,所以捲軸要自己拉,不要使用 TextBox 內建的。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年4月29日 下午 03:23
  • 原來速度太慢是因為我執著在Textbox(因為我一直想說輸出在Textbox比較方便進行修改)。QQ

    多謝大大的建議。QQ

    2010年4月30日 上午 11:57