精華區beta Visual_Basic 關於我們 聯絡資訊
一個簡單的二進位檔複製.. ------ open "c:\xxx.1" for binary access read as #1 open "c:\xxx.2" for binary access write as #2 do until eof(1) get #1, ,a put #2, ,a loop close #1 close #2 -------- 結果 xxx.2 總會比 xxx.1 多出 1 bytes, why?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.197.145 ※ 編輯: acosy 來自: 61.60.197.145 (08/05 12:06) > -------------------------------------------------------------------------- < 作者: fumizuki (小獅子) 看板: Visual_Basic 標題: Re: [VB6 ] duplicate binary file 時間: Fri Aug 5 12:32:24 2005 ※ 引述《acosy (acosy)》之銘言: : 一個簡單的二進位檔複製.. : ------ : open "c:\xxx.1" for binary access read as #1 : open "c:\xxx.2" for binary access write as #2 : do until eof(1) : get #1, ,a : put #2, ,a : loop : close #1 : close #2 : -------- : 結果 xxx.2 總會比 xxx.1 多出 1 bytes, why?? 多出一個 chr(0) ,不知道為何讀到 0 ... eof才會是true @@ 下面兩種方法就不會有這問題 1) Dim a As Byte Open "c:\xxx.1" For Binary As #1 Open "c:\xxx.2" For Binary As #2 Do While Loc(1) < LOF(1) Get #1, , a Put #2, , a Loop Close 2) Dim a() As Byte Open "c:\xxx.1" For Binary As #1 Open "c:\xxx.2" For Binary As #2 Redim a(LOF(1) - 1) Get #1, , a Put #2, , a Close -- VB 程式設計 倉木麻衣 PTT 星爺板 行列輸入法 ====================================================== Visual_Basic MaiKuraki Stephen Array -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.58.156.43 > -------------------------------------------------------------------------- < 作者: acosy (acosy) 看板: Visual_Basic 標題: Re: [VB6 ] duplicate binary file 時間: Fri Aug 5 12:46:19 2005 感激不盡! 但是發現處理比較大檔案時, 程式會當掉, 且頗吃資源, 是因為沒有用 buffer 就邊讀編寫 的關係嗎? 另外, 表單中不知如何實現動態文字, 想呈現 xx% 的進度, 卻到 100 % 才顯現出來. ※ 引述《fumizuki (小獅子)》之銘言: : ※ 引述《acosy (acosy)》之銘言: : : 一個簡單的二進位檔複製.. : : ------ : : open "c:\xxx.1" for binary access read as #1 : : open "c:\xxx.2" for binary access write as #2 : : do until eof(1) : : get #1, ,a : : put #2, ,a : : loop : : close #1 : : close #2 : : -------- : : 結果 xxx.2 總會比 xxx.1 多出 1 bytes, why?? : 多出一個 chr(0) ,不知道為何讀到 0 ... eof才會是true @@ : 下面兩種方法就不會有這問題 : 1) : Dim a As Byte : Open "c:\xxx.1" For Binary As #1 : Open "c:\xxx.2" For Binary As #2 : Do While Loc(1) < LOF(1) : Get #1, , a : Put #2, , a : Loop : Close : 2) : Dim a() As Byte : Open "c:\xxx.1" For Binary As #1 : Open "c:\xxx.2" For Binary As #2 : Redim a(LOF(1) - 1) : Get #1, , a : Put #2, , a : Close -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.197.145
mouse26:迴圈裡插入一行doevents即可 210.58.40.212 08/05
fumizuki:文字很好表現吧 迴圈執行時間很長的話就加樓上 210.58.156.43 08/05
fumizuki:所說的 210.58.156.43 08/05
fumizuki:第二個方法只適合小的檔案~ 210.58.156.43 08/05
> -------------------------------------------------------------------------- < 作者: mhc (路邊小草) 看板: Visual_Basic 標題: Re: [VB6 ] duplicate binary file 時間: Wed Aug 10 11:28:43 2005 如果只是單純要做複製檔案之類的檔案操作,可以try看看另一個比較有效率的作法 加入Microsoft Scripting Runtime Library參考,然後用FileSystemObject(FSO)操作 Private Sub CopyFile(ByVal FileName As String,ByVal Target as String) Dim FS As New FileSystemObject Call FS.CopyFile(FileName, Target) End Sub 可以參考MSDN: http://0rz.net/6b0zQ ※ 引述《acosy (acosy)》之銘言: : 感激不盡! 但是發現處理比較大檔案時, : 程式會當掉, 且頗吃資源, 是因為沒有用 buffer 就邊讀編寫 : 的關係嗎? : 另外, 表單中不知如何實現動態文字, : 想呈現 xx% 的進度, 卻到 100 % 才顯現出來. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.88.170