【问题标题】:check file existance in progress 4GL检查文件是否存在进行中 4GL
【发布时间】:2014-01-03 18:16:25
【问题描述】:

如何使用代码检查特定文件是否存在。 例如。 def var a 作为字符。 a = "abc.p"

运行值(a)。 ---> 首先我想检查工作区中是否存在 abc.p。

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案1】:

    您可以使用搜索功能。直接来自在线手册:

    搜索功能 在 PROPATH 环境变量中定义的目录和库中搜索文件。 SEARCH 函数返回文件的完整路径名,除非它在您当前的工作目录中找到。如果 SEARCH 未找到该文件,则返回未知值 (?)。

    语法

    SEARCH ( opsys-file ) 
    

    opsys 文件

    一个字符表达式,其值为您要查找的文件的名称。该名称可以包含完整或部分目录路径。如果 opsys-file 是常量字符串,则必须将其括在引号 (" ") 中。 opsys-file 的值不能超过 255 个字符。

    例子:

    DEFINE VARIABLE cPgm AS CHARACTER   NO-UNDO.
    
    cPgm = "test.p".
    
    IF SEARCH(cPgm) <> ? THEN 
        RUN VALUE(cPgm).
    
    • 如果您提供完全限定的路径名​​,SEARCH 会检查文件是否存在。在这种情况下,SEARCH 不会搜索 PROPATH 上的目录。

    【讨论】:

    • 我有一个疑问。由于 SEARCH () 函数将搜索所有 propath 目录,它会降低应用程序的性能。如果我们提供了确切的目录路径,我们可以使用搜索功能在特定目录中搜​​索还是有其他方法可以做到这一点?
    • 来自文档:“如果您提供完全限定的路径名​​,SEARCH 会检查文件是否存在。在这种情况下,SEARCH 不会搜索 PROPATH 上的目录。”
    【解决方案2】:

    如果不想使用 propath,可以使用 FILE-INFO 系统句柄。

    设置 FILE-NAME 后,可以检查 FILE-TYPE 是否存在。另请参阅 FILE-INFO 的进度帮助。

    FILE-INFO:FILE-NAME = a.
    IF FILE-INFO:FILE-TYPE MATCHES "*F*"
    THEN RUN VALUE(FILE-INFO:FULL-PATHNAME).
    

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多