作者acosy (acosy)
看板Visual_Basic
標題[VB6 ] duplicate binary file
時間Fri Aug 5 12:05:31 2005
一個簡單的二進位檔複製..
------
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