当Windev无法编译时,Compile()方法返回错误。
例如(正确的代码):
teller is int = hnbrec("client")
result teller
此代码返回de Client数据文件中的项目数。
但是当我写错字时:
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 ... 但是我不想执行该过程,我只需要检查它并将其写入数据库。
答案 0 :(得分:0)
编译函数只有在致命的时候才会返回错误:
&#34;结果告诉&#34;这不是一个错误,因为windev无法猜测它是否会在执行时存在; &#34;特列斯&#34;可能是全局变量的名称或者此时编译器不知道的其他外部资源,因为此处的编译上下文是您已经在运行的应用程序中进行了预编译并且它具有访问权限到源代码,不能再扫描它来验证语法。
只有在解释器执行该行时才会知道错误(是的,它是一个&#34;实例化的#34;代码而不是传统的#34;编译的#34;传统的代码术语Compile()函数的名称会相信......)。
它无法知道&#34; telles&#34;在这样的动态上下文中是错误的,除非PCSFOT破坏了compile()函数并强制了自己的有限范围:)
我认为在你的情况下,这将需要更具防御性的编码风格:
WHEN EXCEPTION IN
teller is int = hnbrec("client")
result teller
DO
result -1 //Meaning something whent wrong in your function
END
然后当你调用动态proc时,你将不得不测试返回的值。
我希望这有帮助, 节日快乐!