ИНФОРМАЦИЯ О ФАЙЛЕ
Использование системного дескриптора 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.
ИМЯ-ФАЙЛА: ТИП ФАЙЛА начинается с буквы D для каталогов и F для простых файлов. Он также включает информацию о правах чтения и записи. Обратитесь к справке для получения дополнительной информации. Если файл не существует, все атрибуты, кроме ИМЯ ФАЙЛА, будут пустыми или неизвестными (?).
Изменить: кажется, что в некоторых случаях FILE-TYPE возвращает 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.
ПОИСК
При проверке одного файла будет работать команда ПОИСК. Если файл существует, он возвращает полный путь. Однако он не работает с каталогом, только с файлами. Если вы ПОИСК без полного пути, например 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.
person
Jensd
schedule
07.11.2013