主题:把某文件连编进.exe,使用过程中如何把它拷贝出来?
琅拿度
[专家分:2820] 发布于 2010-01-21 14:22:00
如 题
最后更新于:2010-01-21 14:23:00
回复列表 (共30个回复)
11 楼
琅拿度 [专家分:2820] 发布于 2010-01-22 15:58:00
Ilikefox兄,真是非常感谢你的方法。
有时候想不明白,你们的方法怎么那么多呢
12 楼
琅拿度 [专家分:2820] 发布于 2010-01-22 16:11:00
我的文件大概15M
运行到 FREAD时,提示“函数参数类型、值或数目无效”,换了几K的小文件也不行
13 楼
Ilikefox [专家分:5770] 发布于 2010-01-22 16:48:00
呵呵,俺的版本 VFP9 sp2 英文版,并且测试后发帖的。
"帮助里面并没有字节限制的信息"。
nBytes
Specifies the number of bytes returned by FREAD( ) with a limit of 65,535 bytes.
第2参数确定一次FREAD( )返回的字节数,不超过65,535。
Calvin Hsia说他的示例适合于sp2。
俺说过avi不宜太大,如果不考虑时间的话,我用了24M的avi,同样可以,不过需要用循环多次FREAD( )。另外效果不好,程序要停顿一段时间。
---------------
再给个思路,如同5楼所言,不过用二进制Memo字段,先filetostr()把avi文件数据放入该字段,接着把表包含,运行时取出,然后strtofile()。
14 楼
琅拿度 [专家分:2820] 发布于 2010-01-22 16:52:00
找到原因了
gnFileHandle=FOPEN("SEARCH.AVI",10) 改为 gnFileHandle=FOPEN("SEARCH.AVI")
就OK了
这两个命令是缓冲或非缓冲差别而已,Ilikefox兄,想问问你有什么区别?
15 楼
hw2007name [专家分:4790] 发布于 2010-01-22 17:24:00
[quote][quote]不知道我理没理解到你的意思。我的理解如下:
我认为你在编译成EXE前,在项目中把一个A.AVI文件包含进去,在程序中并用命令:COPY FILE "A.AVI" TO "D:\B.AVI"
同时也支持楼上所说的方式.[/quote]
我试了不行啊,提示文件不存在啊[/quote]
谁说的不行?
我以前做的一个安装程序(VFP+WINRAR)就是用的这种方式,也就是把WINRAR.exe及相关自解功能文件包含在目项,在程序中只要要使用时就把WINRAR.EXE释放出来就行了,知道在那里添加EXE文件吗,要在"其它--其它文件"下面添加,不是在"代码--应用程序"中添加,我想你是没注意到这点.
还有一点,我是在程序中不是用COPY命令,是用的这样的方式释放的:
=strtofile(filetostr("a.avi"),"d:\b.avi")
16 楼
琅拿度 [专家分:2820] 发布于 2010-01-22 17:49:00
按道理应该楼上应该可以的,还没实验
请问这个有字节限制吗?
17 楼
foxdb [专家分:1830] 发布于 2010-01-22 18:33:00
15楼的方法已试过可行,且简单!顶一下!
18 楼
foxdb [专家分:1830] 发布于 2010-01-22 18:42:00
15楼的方法已试过可行,且简单!由于内存限制!单个的avi文件不能太大.
19 楼
北京惬意 [专家分:1330] 发布于 2010-01-22 18:59:00
[quote]不知道我理没理解到你的意思。我的理解如下:
我认为你在编译成EXE前,在项目中把一个A.AVI文件包含进去,在程序中并用命令:COPY FILE "A.AVI" TO "D:\B.AVI"
同时也支持楼上所说的方式.[/quote]
本人觉得6楼的方法简单、直观。
20 楼
kosung [专家分:910] 发布于 2010-01-23 15:16:00
6楼的方法不可能行的。COPY FILE命令是在复制文件,但如果包在主程序里了,根本就找不到文件名,复制从何说起。
附加到主程序后边里读出来是可以的,还但这种方法有些象病毒的做法了,很容易让现在“先进的”防病毒系统神经过敏的。
感觉到北京惬意有丰富的想象力。
我来回复