gpt4 book ai didi

directory - PROGRESS - 验证用户输入文件输出路径

转载 作者:行者123 更新时间:2023-12-05 01:47:56 24 4
gpt4 key购买 nike

我已经编写了一些 PROGRESS 代码,可以将一些数据输出到用户定义的文件中。数据本身并不重要,输出过程工作正常。基本上是

定义变量文件路径。UPDATE filePath/*用户输入类似于 C:\UserAccount\New.txt */输出到(值)文件路径。

效果很好,在输入目录中创建了一个 txt 文件。我的问题是:

progress 是否有任何功能可以让我检查输入是否文件路径是否有效? (具体来说,如果用户输入了一个有效目录,并且他们有权在他们选择的目录中创建文件)

如有任何意见或反馈,我们将不胜感激。

最佳答案

文件信息

使用系统句柄 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 之外的所有属性都将为空或未知 (?)。

编辑:在某些情况下,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 命令将起作用。如果文件存在,则返回完整路径。但是,它不适用于目录,仅适用于文件。如果您在没有完整路径的情况下进行搜索,例如 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.

关于directory - PROGRESS - 验证用户输入文件输出路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com