发新话题
打印

[基础] 文件读写(一个奇怪的现象????)

文件读写(一个奇怪的现象????)

复制内容到剪贴板
代码:
如果把其中的
If basePartLen < 1024 * 5 * 3 Then                  
    miniLoopTime = 0
    miniLeft = 0
Else
    miniLoopTime = basePartLen \ (1024 * 5)
    miniLeft = basePartLen Mod (1024 * 5)
End If
改为
If basePartLen < 1024 * 2 * 3 Then                  
    miniLoopTime = 0
    miniLeft = 0
Else
    miniLoopTime = basePartLen \ (1024 *2)
    miniLeft = basePartLen Mod (1024 * 2)
End If
或者相应地改为(1024*n), 且在后面的redim temp(1024*5) as byte里面作相当地改动,发现:n越大,分割后得到的文件复原后与原文件大小越接近???!!!(我在测试时都是复原后比原文件大)
本来可以只要redim temp(basepartlen) as byte就行,但是不好得到文件读写进度.
我是为了在分割时更准确地知道处理进度的(并用进度条显示出来)。

[ 本帖最后由 只爱陌生人 于 2006-10-26 15:52 编辑 ]

TOP

这样肯定不行,不要老想关1024,到最后的时候,你必须计算字节数
下面代码供你参考
复制内容到剪贴板
代码:
    Dim aa() As Byte
    Open "c:\1.txt" For Binary As #1
    alen = LOF(1)
    b = alen Mod 1024
    Open "c:\2.txt" For Binary As #2
    i = alen
    Do While i > 0
        If i < 1024 Then
            ReDim aa(i)
            i = 0
        Else
            i = i - 1024
            ReDim aa(1024)
        End If
        Get #1, , aa
        Put #2, , aa
    Loop
    Close #2
    Close #1
   
   
   
换个头像,看见广告就眼红,直接封ID。

TOP

还真TMD邪了??

在我这台电脑上, 连下面这段代码都运行不正确??!!
复制内容到剪贴板
代码:
Private Sub Command1_Click()
Dim temp() As Byte
Open "c:\1.txt" For Binary As #1
ReDim temp(LOF(1)) As Byte
Open "c:\2.txt" For Binary As #2
Get #1, , temp
Put #2, , temp
Close#2
Close #1
Debug.Print "filished......."
end sub
2.txt总比1.txt多出一字节???用其它类型文件也是如此!!!

[ 本帖最后由 只爱陌生人 于 2006-10-28 10:43 编辑 ]

TOP

这样试试
ReDim temp(LOF(1)-1) As Byte
换个头像,看见广告就眼红,直接封ID。

TOP

redim(temp(lof(1)-1) as byte可以是可以,但是
这没道理呀,怎么解释呢???搞不懂!?

TOP


比如你有1024个字节
redim a(1024) 实际上数组a实际上是有1025个,因为第一个是a(0),最后一个是a(1024)
换个头像,看见广告就眼红,直接封ID。

TOP

发新话题