2015-02-27 2 views
0


У меня есть одна проблема, и это сводит меня с ума, Вот строка кодаLotusScript и реж функция

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 
+0

Работы для меня здесь. пожалуйста, покажите больше кода и сообщите нам о версии заметок и os, которые вы используете. Я ГУСЕСС, у вас нет 'Option declare' и не использовал'% include 'lsconst.lss'', так что ATTR_DIRECTORY = 0 вместо 16 –

+0

http://stackoverflow.com/questions/15424919/lotusscript-search-windows- directory-for-subdirectories-and-files-recursion –

+0

У меня нет директивы Declare Declare, и это не так, я думаю, о директиве Include он не помогает, где я могу найти lss-файлы, являются ли они системными файлами? О моем клиенте, это 8.5.3, а сервер 6.5.4 под окнами 2003 – Velaro

ответ

1

Хотя код не является полным, я думаю, ясно из комментариев, что происходит: Там не находится в Options- части кода нет Option declare.

Это означает: переменные не обязательно должны быть объявлены. Любая используемая переменная автоматически будет пустым вариантом.

ATTR_DIRECTORY является константой в lsconst.lss (находится в программно-каталоге Клиента Нот) и имеет значение 16, как можно прочитать в конструкторе помощи:

0 Обычный файл ATTR_NORMAL
2 Скрытый ATTR_HIDDEN файл
4 Системный файл ATTR_SYSTEM
8 метка тома ATTR_VOLUME
16 Каталог ATTR_DIRECTORY

В случае отсутствия lsconst с использованием оператора %include "lsconst.lss", ATTR_DIRECTORY будет пустым. Поскольку это необязательный параметр для dir, он будет обрабатываться так, как если бы его не было - обработка по умолчанию ATTR_NORMAL.

В качестве решения вы должны ВСЕГДА добавить Option Declare в свой код и объявить любую используемую переменную, так как это лучшая практика, чтобы избежать таких странных ошибок.
Чтобы получить константы, определенные примечаниями, дополнительно используйте оператор% include.

Другой возможностью было бы использовать числовое значение вместо константы:

qdName$ = Dir(fDir, 16) 

должен дать правильный результат.

+0

Но чувак, я забыл прокомментировать, даже если я пишу 16 (числовое значение), вместо этого я упоминал выше, проблема остается :( – Velaro

+0

Включено lsconst.lss, установить объявленный вариант и скорректировать необъявленные переменные, проблема остается такой же – Velaro