首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vfp多选文件函数,收藏有用

vfp多选文件函数,收藏有用

作者头像
加菲猫的VFP
发布2021-08-16 15:05:10
发布2021-08-16 15:05:10
8440
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP

狐友群里面刚好在聊这个问题。

梁林一【实易软件】:

vfp 的 getfile() 只能选择一个文件,不支持多选吗?

上传附件,想一次多选几个文件,调用哪个 win API?

vfp 项目管理器里,添加文件,就可以多选,与getfile()表面上一样一样的,应该是调用的同一个 win API,但做了不同的封装。

猫猫以前收藏的函数,派上用场了,就发到了群里面。

代码语言:javascript
复制
FUNCTION _GetOpenFileNames(szInitDir, szFileName, szFilter)
    LOCAL oFile
    oFile = CREATEOBJECT("MSComDlg.CommonDialog.1")
    oFile.Flags = 0x00080204    && 0x00080000 or 0x00000200 or 0x00000004
    oFile.Filter = szFilter
    oFile.maxFileSize = 10000 
    oFile.InitDir = szInitDir
    oFile.FileName = szFileName
    oFile.ShowOpen()
    RETURN oFile.FileName
ENDFUNC
*--调用方法

mystr=_GetOpenFileNames("c:", "", "jpg|*.jpg")  

然后,梁总贴心的总结了一下:

用 _GetOpenFileNames(szInitDir, szFileName, szFilter) 一次选择多个附件,

返回值看上去是以一个空格分隔,其实是以 chr(0) 分隔,第一个值是路径,其他的值是选择的多个文件名

getwordnum() 的第三个参数即分隔符 chr(0) 无效,所以 getwordnum() 分不开返回值

可以用 aLine() 以 cha(0) 分隔将返回值赋予数组

或者用 strtran() 将 chr(0) 替换为|,然后再用 getwordnum() 分解返回值

copy、wait window 等,遇到 chr(0) 则至此截断,后面的部分被忽略

为什么用chr(0) 来分隔文个名呢?

文件或路径带空格,用括号括起来,或用引号引起来。正是因为文件名或路径允许有空格,返回值才不能以空格分隔,而用了chr(0) 来分隔多个文件名。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档