lotusscript和dir函数

时间:2015-02-27 08:26:50

标签: function lotusscript lotus dir


我有一个问题,它让我发疯, 这是一行代码

qdName$ = Dir(fDir, ATTR_DIRECTORY)

fDir是目录路径。
目的:我想只检索fDir路径下的目录列表
现实:我得到所有对象,目录,文件等,我做错了什么?

这是一段代码

qdName$ = Dir(fDir, 16)
While qdName$ <> "" 
If qdName <> "." And qdName <> ".." And InStr(1, qdName$, ".JPG", NoCaseNoPitch) = "0" Then
            folders = folders + 1
            If InStr(1, qdName, "tmp") = 0 Then
                Name fDir + qdName As fDir + "tmp" + SetDoc.counter(0)
                qdName$ = "tmp" + SetDoc.counter(0)
                Set item = SetDoc.replaceItemValue("counter", CStr(CInt(SetDoc.counter(0)) + 1))
                Call SetDoc.save(True, True)                
            End If
            dList(dNo%) = qdName$
            dNo% = dNo% + 1
            qdName$ = Dir$()
        Else 
            qdName$ = Dir$()
        End If
    Wend

1 个答案:

答案 0 :(得分:1)

虽然代码不完整,但我认为从评论中可以清楚地看到: 代码的选项部分中没有Option declare

这意味着:不必声明变量。任何使用过的变量都将自动为空变量。

ATTR_DIRECTORY是lsconst.lss中的常量(位于Notes-客户端的程序目录中),其值为16,可以在设计器帮助中读取:

  

0普通文件ATTR_NORMAL
   2隐藏文件ATTR_HIDDEN
   4系统文件ATTR_SYSTEM
   8卷标ATTR_VOLUME
   16目录ATTR_DIRECTORY

如果不使用语句%include "lsconst.lss"包含lsconst,则ATTR_DIRECTORY将为空。由于这是dir的可选参数,因此它将被处理,就好像它不存在一样 - 默认处理是ATTR_NORMAL。

作为解决方案,您应该始终在代码中添加Option Declare并声明任何使用过的变量,因为这是避免此类奇怪错误的最佳做法。
要另外使用注释定义的常量,请使用%include语句。

另一种可能性是使用数字值而不是常数:

qdName$ = Dir(fDir, 16)

应该给出正确的结果。