回 帖 发 新 帖 刷新版面

主题:把某文件连编进.exe,使用过程中如何把它拷贝出来?

如 题

回复列表 (共30个回复)

11 楼

Ilikefox兄,真是非常感谢你的方法。

有时候想不明白,你们的方法怎么那么多呢

12 楼

我的文件大概15M

运行到 FREAD时,提示“函数参数类型、值或数目无效”,换了几K的小文件也不行

13 楼

呵呵,俺的版本 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 楼

找到原因了

gnFileHandle=FOPEN("SEARCH.AVI",10) 改为 gnFileHandle=FOPEN("SEARCH.AVI")

就OK了


这两个命令是缓冲或非缓冲差别而已,Ilikefox兄,想问问你有什么区别?

15 楼

[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 楼

按道理应该楼上应该可以的,还没实验

请问这个有字节限制吗?

17 楼

15楼的方法已试过可行,且简单!顶一下!

18 楼

15楼的方法已试过可行,且简单!由于内存限制!单个的avi文件不能太大.

19 楼

[quote]不知道我理没理解到你的意思。我的理解如下:
我认为你在编译成EXE前,在项目中把一个A.AVI文件包含进去,在程序中并用命令:COPY FILE "A.AVI" TO "D:\B.AVI"
同时也支持楼上所说的方式.[/quote]
本人觉得6楼的方法简单、直观。

20 楼

6楼的方法不可能行的。COPY FILE命令是在复制文件,但如果包在主程序里了,根本就找不到文件名,复制从何说起。

附加到主程序后边里读出来是可以的,还但这种方法有些象病毒的做法了,很容易让现在“先进的”防病毒系统神经过敏的。

感觉到北京惬意有丰富的想象力。

我来回复

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