| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1169 人关注过本帖
标题:如何在目录中寻找文件,而不是从表中寻找?
只看楼主 加入收藏
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
如何在目录中寻找文件,而不是从表中寻找?
我们在电脑中经常会使用搜索功能查找某一类、或者某一份文件,我不知道VFP有没有这种命令?特请教各位,如何使用VFP程序代码实现这项功能?
搜索更多相关主题的帖子: 表中 VFP 代码 文件 目录 
2022-03-25 16:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:20 
adir()

坚守VFP最后的阵地
2022-03-25 17:18
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 2楼 sdta
我是用过这个函数,抄来的。具体代码如下:
LPARAMETERS tcFolder                    && 将调用程序传入的数据,赋值给局部内存变量和数组。
LOCAL ARRAY laFiles[1]                    && 创建的数组laFiles,[1]表示一组。
LOCAL lcFileName, ii                        && 缺少这一步,会漏掉许多内容。
m.tcFolder = ADDBS(m.tcFolder)            && 向路径表达式添加一个反斜杠;没有这条,子目录出不来。
IF ADIR(m.laFiles, m.tcFolder + '*.*', 'ARD', 1) < 3            && 若是文件长度小于3个字节,则不计算;少了D,不能进入子目录。
    RETURN .F.
ENDIF
ASORT(m.laFiles, 3, -1, 1)                    && 按第3列排序数组,最后一位数大于0为降序排序。
FOR m.ii = 1 TO ALEN(m.laFiles, 1)            && LAN(数组名,数组属性),0[返回数组元素数目],1[返回数组的行数],2[返回数组的列数]。
    m.lcFileName = m.laFiles[m.ii, 1]            && m.laFiles是 . ;缺少这一步,后面进行不下去
    DO CASE
        CASE '.' == m.lcFileName Or '..' == m.lcFileName    && 设此可避免直接进入OTHERWISE,出现死循环
        CASE AT('D', m.laFiles[m.ii, 5]) > 0                    && 该位置若是D,则表明这是一个目录,执行下一行命令。
            ThisForm.wjtran(m.tcFolder + m.lcFileName)        && listfiles与m.tcFolder都是目录的路径,m.lcFileName则是子目录名称
        OTHERWISE
            lafilesdt1=DTOC(m.lafiles[m.ii, 3])
            lafilesdt2=m.lafiles[m.ii, 4]
            m.lafiles[m.ii, 3]=CTOT([&lafilesdt1 &lafilesdt2])
            Npath=SUBSTR(m.tcFolder,pathlong+1)        && +1
            Npath=SUBSTR(Npath,1,LEN(Npath)-1)
            Npath=Npath+'\'
            INSERT INTO files0 VALUES (Npath, m.lafiles[m.ii, 1], m.lafiles[m.ii, 2], m.lafiles[m.ii, 3])    && 将数据录入到表中;此处不能用listfiles代替m.tcFolder
    ENDCASE
ENDFOR
我将搜索结果形成若干个.dbf临时表文件,任务完成之后删除。问题出在退出程序的时候,不意间发现临时表文件出现的过程目录之下。
据此看来,我其实是要找出能删除所有filse*.dbf的办法,不论它们出现在哪一个过程目录中。
2022-03-25 18:59
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 2楼 sdta
请教版主,能否使用数组代替临时表文件?这是我的短板,在上述代码中,如何将创建files0.dbf的内容转成数组?谢谢!
2022-03-26 08:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
adir()生成的就是数组

坚守VFP最后的阵地
2022-03-26 08:43
cluna2013
Rank: 1
等 级:新手上路
帖 子:234
专家分:0
注 册:2013-3-2
收藏
得分:0 
回复 5楼 sdta
谢谢!我会按照这个思路去思考。
2022-03-26 12:25
快速回复:如何在目录中寻找文件,而不是从表中寻找?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016897 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved