FILE-INFO
Использование системы ручки FILE-INFO дает много информации. Он также работает в каталогах.
FILE-INFO:FILE-NAME = "c:\temp\test.p".
DISPLAY
FILE-INFO:FILE-NAME
FILE-INFO:FILE-CREATE-DATE
FILE-INFO:FILE-MOD-DATE
FILE-INFO:FILE-INFO
FILE-INFO:FILE-MOD-TIME
FILE-INFO:FILE-SIZE
FILE-NAME:FILE-TYPE
FILE-INFO:FULL-PATHNAME
WITH FRAME f1 1 COLUMN SIDE-LABELS.
Простая проверка для существующего каталога с правами записи может быть что-то вроде:
FUNCTION dirOK RETURNS LOGICAL (INPUT pcDir AS CHARACTER):
FILE-INFO:FILE-NAME = pcDir.
IF INDEX(FILE-INFO:FILE-TYPE, "D") > 0
AND INDEX(FILE-INFO:FILE-TYPE, "W") > 0 THEN
RETURN TRUE.
ELSE
RETURN FALSE.
END FUNCTION.
FILE-NAME: FILE-TYPE будет начинаться с D для каталогов и F для обычных файлов. Он также содержит информацию о правах на чтение и запись. Обратитесь за помощью для получения дополнительной информации. Если файл не существует, то все атрибуты, кроме FILE-NAME, будут пустыми или неизвестными (?).
Edit: мне кажется, что тип файла возвращает W в некоторых случаях, даже если нет никаких реальных прав пишущих в этой директории, так что я вам, возможно, придется справиться с этим в процессе обработки ошибок вместо
ОШИБКИ ОБРАБОТКА
OUTPUT TO VALUE("f:\personal\test.txt").
PUT UNFORMATTED "Test" SKIP.
OUTPUT CLOSE.
CATCH eAnyError AS Progress.Lang.ERROR:
/* Here you could check for specifically error no 98 indicating a problem opening the file */
MESSAGE
"Error message and number retrieved from error object..."
eAnyError:GetMessage(1)
eAnyError:GetMessageNum(1) VIEW-AS ALERT-BOX BUTTONS OK.
END CATCH.
FINALLY:
END FINALLY.
ПОИСК
При проверке одного файла, SE Команда ARCH будет работать. Если файл существует, он возвращает полный путь. Однако он не работает в каталоге, а только в файлах. Если вы ПОИСК без полного пути e g SEARCH("test.p")
, команда выполнит поиск по каталогам, установленным в переменной среды PROPATH, и вернет первую соответствующую запись с полным путем. Если нет совпадения, оно вернет неизвестное значение (?).
Синтаксис:
IF SEARCH("c:\temp\test.p") = ? THEN
MESSAGE "No such file" VIEW-AS ALERT-BOX ERROR.
ELSE
MESSAGE "OK" VIEW-AS ALERT-BOX INFORMATION.
Вы имеете в виду ВЫХОД НА ЗНАЧЕНИЕ (filePath). ? –