【问题标题】:How do I check if the Compile() method in Windev checks the code?如何检查 Windev 中的 Compile() 方法是否检查代码?
【发布时间】:2014-03-04 14:59:03
【问题描述】:

Windev无法编译时Compile()方法返回错误。

例如(正确的代码):

teller is int = hnbrec("client")
result teller

此代码返回客户端数据文件中的项目数量。

但是当我打错字时:

teller is int = hnbrec("client")
result telles //should be teller

Windev 没有提到错误...

但是当我打错字时:

teller iss int = hnbrec("client") //should be is
result teller

它抛出一个语法错误,告诉我它无法识别 iss。

如何检查第二个示例以使其抛出错误?

编辑: 但是,当我使用

执行代码时
ExecuteProcess("<the process name>", trtProcedure)

该过程将返回一个错误,说它不知道告诉... 但是我不想执行这个过程,我只需要检查并写入数据库。

【问题讨论】:

    标签: windev


    【解决方案1】:

    编译函数只会返回足够致命的错误:

    “result telles”不是错误,因为windev在执行时无法猜测它是否存在; “telles”可能是全局变量的名称,也可能是编译器此时不知道的其他外部资源的名称,因为这里的编译上下文是您已经在一个正在运行的预编译应用程序中,并且它确实有访问源代码并且无法再扫描它以验证语法。

    只有在解释器执行该行时它才会知道存在错误(是的,它更像是一个“实例化”代码而不是传统术语中的真正“编译”代码,函数 Compile() 的名称会让人相信。 ..)。

    除非 PCSFOT 破坏 compile() 函数并强制限制他自己的范围,否则它无法知道“telles”在这种动态上下文中是错误的 :)

    我认为在您的情况下,这将需要更具防御性的编码风格:

    WHEN EXCEPTION IN
        teller is int = hnbrec("client")
        result teller
    DO
        result -1 //Meaning something whent wrong in your function
    END
    

    然后当你调用你的动态过程时,你将不得不测试返回的值。

    我希望这会有所帮助, 节日快乐!

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多