我在 DEBUG 和预编译器指令方面遇到了一些错误行为。
我有一个 PowerBuilder 应用程序。在生产环境中,它使用证书登录,但在开发环境中,为了让自己更轻松,我想使用用户名和密码登录。我添加了这段代码:
#if defined DEBUG then
MessageBox("Info","Running in DEBUG mode, certificates disabled!")
ibool_certlogin = FALSE
#else
ibool_certlogin = TRUE
#end if
这似乎只是有时有效。当我第一次加载项目并运行它时,它失败了。意思是,即使我在 IDE 中并且应该定义 DEBUG,消息框 still 也不会显示,并且证书 still 已启用。
但是,我可以通过稍微任意的更改来纠正该行为。具体来说,如果我打开这段代码所在的模块,然后任意键入一个空格,然后保存。然后我运行该项目,消息框正确显示并且证书被正确禁用。它会继续正常运行,直到我关闭 PowerBuidler IDE 并重新打开它。
有人经历过这个或知道解决方案吗?
我相信如果你对指令进行更改,你需要重建项目,简单的运行是不够的。
如果您在从 IDE 运行时需要特定行为,则更简单的解决方案是:
IF handle(getapplication()) = 0 THEN
// running from the IDE
...
ELSE
// running from EXECUTABLE
END IF