1

当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)

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

4

1 回答 1

0

compile 函数只有在足够致命时才会返回错误:

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

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

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

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

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

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

希望对你有帮助,节日快乐!

于 2014-12-30T16:09:02.830 回答