回 帖 发 新 帖 刷新版面

主题:关于分割文件

INPUT "请输入文件名 ", fa$
INPUT "生成文件路径 ", p$
fa$ = LTRIM$(RTRIM$(fa$))
IF fa$ = "" THEN SYSTEM
f$ = DIR$(fa$)             '[color=FF00FF]这一句需要QB7.1支持[/color]
IF f$ <> UCASE$(fa$) THEN
  PRINT "文件名不正确,请重新执行程序"
  SYSTEM
END IF
PRINT "正在分拆文件"; f$; "为以下文件"
fr = FREEFILE
OPEN f$ FOR BINARY AS #fr
  fl& = 1500000
  DO UNTIL EOF(fr)
         IF fl& > 1400000 THEN
            CLOSE #f2
            IF i > 0 THEN PRINT p$ + "cf" + LTRIM$(STR$(i)) + ".cf"; "已完成"
            IF INKEY$ = CHR$(27) THEN EXIT DO
            i = i + 1
            f2 = FREEFILE
            OPEN p$ + "cf" + LTRIM$(STR$(i)) + ".cf" FOR BINARY AS #f2
            fl& = 0
         END IF
         r$ = INPUT$(16383, fr)
         PUT #f2, , r$
         fl& = fl& + 16383
  LOOP
IF i > 0 THEN PRINT p$ + "cf" + LTRIM$(STR$(i)) + ".cf"; "已完成"
CLOSE
PRINT "分拆完成,正在生成批处理文件"
f2 = FREEFILE
batf$ = p$ + "cf" + LTRIM$(STR$(i)) + ".bat"
OPEN batf$ FOR OUTPUT AS #f2
PRINT #f2, "copy ";
FOR j = 1 TO i
  PRINT #f2, "cf" + LTRIM$(STR$(j)) + ".cf";
  IF j <> i THEN PRINT #f2, "+";
NEXT
PRINT #f2, " "; f$
  PRINT #f2, "del cf??.cf"
  PRINT #f2, "del cf??.bat"
CLOSE
PRINT "已生成批处理文件"; batf$
SYSTEM


1400000是以软盘为基础的数字,对U盘或者其他载体具体更改
把生成的文件全部复制过去后执行其中的批处理文件就可以复原了
嘿嘿,比起老大的,当然是我的要快了,呵呵.

回复列表 (共7个回复)

沙发

看不懂

板凳

FUNCTION ExistFile (DirName As String, FileName As String)
FName$=UCase$(FileName)
IF DIR$(DirName+"\*.*")=FName$ THEN ExistFile=-1
DO
A$=DIR$
IF A$="" THEN EXIT DO
IF A$=FName$ THEN ExistFile=-1
LOOP
END FUNCTION

3 楼

你这算是在捣乱吗?
你做是什么意思?
南辕北辙?

4 楼

用QB来编写分割文件的程序,原理上是没什么的,但实际上会出意外,这是因为QB的一些特殊字符的处理与之后的规定不完全一致。所以,文件分割程序最好不要用QB来编写。(我不知道表达清楚了没有)

5 楼

to staa
这个一般来说不会出意外,但是如果对qb中的数据类型不清楚的话,就会出问题!
先复习一下,在qb开始的教程中,说过整数占2个字节,单精度数4个字节.........

设想一下,如果打开一个字节的文件,然后你用GET 1,,A来读,A如果是默认的单精度数,就是有4个字节,这个时候,你把读出来的A写入另一个文件,如:PUT 2,,A
你会发现,你新生成的文件比原来的大,它的大小是4个字节!

我刚刚开始学做游戏修改的时候,就碰到这个问题,比如主角的生命直、内力、还有别的什么宝物,他有的是用整数,有的只有一个字节,英雄无敌2中,兵种是2个字节,而魔法代码是一个字节,如果用PUT 1,,A%写,运行游戏就无法达到你需要的,有时还死机!在qb中没有一个字节的类型,所以可以用一个字符来读,一个字符是一个字节!

moz的程序处理好了是不会出什么问题的,,比如一个文件是100字节,而他定义的一次读16383个字节,超过了,所以moz只要边界处理好就ok!

6 楼

有很多的事情,
想像起来会有很多问题,或者一点问题都没有
但这只是主观上的事情.

至于对错与否
许多的事情都需要现实去验证和经受考验
(毛主席说的:真理是需要实践来证明的)

我其实并不算老
但稳重到我这个地步的,已经不能再说是年轻了.

这个程序我是试验过的,
无论文件长度,文件内容,文件结尾,还有一次读16383字节长度不足的情况下所出现的意外(不会有意外)
我都考虑过了.

百火炼真石(不敢说金),
很多知识和技巧都需要在不停的排错和优化中学习出来的.

7 楼

PF PF

我来回复

您尚未登录,请登录后再回复。点此登录或注册