|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
ckp
註冊時間: 2003-08-29 文章: 6
第 1 樓
|
發表於: 星期三 九月 03, 2003 6:24 pm 文章主題: 請教諸位先進,,append general 的相對指令是什麼呢? |
|
|
小弟用 append general 發票章 from 'abc.bmp'
把圖檔存進去了
那要如何從欄位 『發票章』中,把 abc.bmp 拷貝出來呢?
找不著相關指令啊! |
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 2 樓
|
|
回頂端 |
|
|
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 3 樓
|
發表於: 星期四 九月 04, 2003 5:58 pm 文章主題: |
|
|
文章标题
将图片从通用字段中导出
作品来源
VFP 论坛
最后更新
2001年07月22日
文字数量
约字
译者及程序改编者姓名
RMH
版权声明 版权属于原作者、译者
相关下载 --
细节描述
将图片从通用字段中导出
*--复制 .DBF 通用字段内容到一个.BMP,.DOC,.GIF 或 .JPG 文件,
*--切去由 APPEND GENERAL 命令添加的所有的头和尾部信息.
*--调用方法 =gentofil(字段名,表名)
如下:
&& parameters lcfieldname,lcfilename
******************************************************************************
******************************************************************************
*-- 要运行该示例,将 VFP 示例表 employee.dbf, employee.fpt, employee.cdx
*-- 复制到该文件所在目录, 并将该目录设置为默认目录. 然后在命令窗口打入:
*-- do gentofil
*-- 这样,该示例程序将根据通用字段内容的属性.把在当前 employee 表中第一条记录的通用字段 photo 中的内容
*-- 复制到一个 employee.bmp/employee.doc/employee.jpg/employee.gif 文件中。
******************************************************************************
******************************************************************************
lcfieldname = "photo"
lcfilename = "employee"
set defa to c:\copygen
local lccompatible,lcextension,liendoffset,;
lctempfile,lihandelin,lihandleout,lisize,llsuccess
lccompatible=set("COMPATIBLE") && 保存 "Compatible" 设置
set compatible on && 这样 FSIZE 函数返回文件大小, 而不是字段大小
if "." $ lcfilename
lcfilename=left(lcfilename,at(".",lcfilename))
endif
lctempfile=sys(3) && 指定临时文件名
copy to (lctempfile) fields (lcfieldname) next 1 && 复制通用字段的内容到临时文件中
lihandlein=fopen(lctempfile+".FPT") && 打开它的 .FPT
*--考查 .FPT 内容以决定嵌入文档的类型
do case
case fseek(lihandlein,590)>0 .and. fread(lihandlein,2)="BM"
lcextension="BMP"
liendoffset=fseek(lihandlein,590)+83
*-- 注: 在源代码中 以上代码行中的 590 为 599
case fseek(lihandlein,610)>0 .and. asc(fread(lihandlein,1))=208 ;
.and. asc(fread(lihandlein,1))=207 .and. asc(fread(lihandlein,1))=17
lcextension="DOC"
liendoffset=fseek(lihandlein,610)+16798
case fseek(lihandlein,669)>0 .and. asc(fread(lihandlein,1))=255 ;
.and. asc(fread(lihandlein,1))=216 .and. asc(fread(lihandlein,1))=255
lcextension="JPG"
liendoffset=fseek(lihandlein,648)+3779
*-- 注: 在源代码中 以上代码行中的 669 为 648
case fseek(lihandlein,666)>0 .and. fread(lihandlein,3)="GIF"
lcextension="GIF"
liendoffset=fseek(lihandlein,666)+3780
*-- 注: 在源代码中 以上代码行中的 666 为 663
otherwise
lcextension=""
endcase
if .not. empty(lcextension)
lisize=fsize(lctempfile+".FPT")-liendoffset && 决定数据大小
lihandleout=fcreate(lcfilename+"."+lcextension) && 创建输出文件
=fwrite(lihandleout,fread(lihandlein,lisize)) && 复制数据到它
=fclose(lihandlein) && 关闭临时 .FPT..
=fclose(lihandleout) && ...和输出文件
endif
if empty(lcextension)
messagebox("未找到该类型的通用字段",0,"注意")
set compatible &lccompatible && 恢复 "Compatible"
return .f.
endif
lctempfile=lctempfile+".*" && 删除临时 .DBF/.FPT
erase (m.lctempfile)
set compatible &lccompatible && 恢复 "Compatible"
if file(lcfilename+"."+lcextension)
llsuccess=.t.
endif
return llsuccess _________________ #############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
學會VFP使用者社區的搜尋,Code才會更有趣~
############################# |
|
回頂端 |
|
|
elleryq
註冊時間: 2007-06-21 文章: 768
第 4 樓
|
發表於: 星期五 九月 05, 2003 9:41 am 文章主題: |
|
|
原來是直接處理二進位檔案~
嗯嗯
真厲害~ |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|