0

我想在 VI 终端中打开一个 .4gl 文件并写入它,这是我目前拥有的代码:

 let p_command = "test -f ", MTGENDIR CLIPPED,"/",p_prog clipped,".4gl"
      run p_command returning p_status

      let p_command = "vi ",p_prog clipped,".4gl"
      --let p_command = "w ",p_prog clipped,".4gl"
      --let p_command = ":w ",p_prog clipped,".4gl"
      run p_command

这是我在调试器进入步骤 vi 后遇到的错误,然后它挂起:

(fgldb) next
376       let p_command = "vi ",p_prog clipped,".4gl"
(fgldb) next
377       run p_command
(fgldb) next
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

如果我尝试使用上面的注释代码(w 或:w)编写它会崩溃并显示此错误:

The DVM process crashed. Please contact FourJs support.
DVM has encountered a problem. Execution of 'mt_gen' stopped

有没有其他方法可以写入 Genero 中的 .4gl 文件?

4

1 回答 1

1

回答最后一句“我可以用其他方法在 Genero 中写入 .4gl 文件吗?” 然后您可以使用 base.Channel 类写入文件...

MAIN
    DEFINE ch base.Channel

    LET ch = base.Channel.create()
    CALL ch.openFile("example.4gl","w")
    CALL ch.writeLine("MAIN")
    CALL ch.writeLine("    DISPLAY 'Hello World'")
    CALL ch.writeLine("END MAIN")
    CALL ch.close()
END MAIN

...关键位是使用 base.Channel.openFile 和 w(或 a)作为打开模式http://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_ClassChannel_openFile。 html

或者,您可以在 STRING 或 base.StringBuffer 变量中构建文件并使用 TEXT writeFile 方法http://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_datatypes_TEXT_writeFile.html ...

MAIN 
    DEFINE s STRING
    DEFINE t TEXT

   LET s = 
      "MAIN", ASCII(13),
      "    DISPLAY 'Hello World'", ASCII(13),
      "END MAIN"

   LOCATE t IN MEMORY
   LET t = s
   CALL t.writeFile("example2.4gl")
END MAIN

我不确定为什么您认为您的解决方案中需要 vi/vim 才能写入 .4gl 文件。

于 2021-01-07T22:48:52.083 回答