Gra*_*ter 1 delphi delphi-10-seattle
是否有任何编译器定义或函数/常量/变量可用于判断某些代码是为构建时间包构建还是从IDE内部执行?
我们在一个单元的初始化中设置了一些代码钩子,这是一个包的一部分.我们不希望在IDE中安装软件包时执行此代码,只有当它作为应用程序的一部分运行时才会执行.
现在我已经为设计时间包添加了一个编译器定义,它剥离了代码,但我想知道是否有一个内置的编译器定义,表明这是设计时包的一部分,或者是否有一些函数/常量可以检查代码是否在IDE中运行.类似于if csDesigning in ComponentState then人们从内部组件使用的旧版本.
是否有任何编译器定义或函数/常量/变量可用于判断某些代码是为构建时间包构建还是从IDE内部执行?
没有.
我们在一个单元的初始化中设置了一些代码钩子,这是一个包的一部分.我们不希望在IDE中安装软件包时执行此代码,只有当它作为应用程序的一部分运行时才会执行.
那个代码根本不属于单位的initialization部分.将其移动到应用程序代码在启动期间可以调用的单独函数.
现在我已经在设计时包中添加了一个编译器定义来删除代码
这意味着你的设计时包正在直接编译你的运行时代码,它根本就不应该这样做.运行时代码和设计时代码需要在不同的包中.运行时代码不属于设计时包,设计时代码不属于运行时包.
我想知道是否有一个内置的编译器定义,表明这是设计时包的一部分
那没有.但是,如果您创建单独的运行时和设计时包(就像您应该这样),那么您的钩子代码只属于运行时包.设计时包可以require是运行时包(因此它可以访问运行时组件),运行时包可以公开设计时包可以设置的全局变量.然后,如果设置了该变量,则运行时代码可以忽略它需要忽略的任何内容.