gpt4 book ai didi

delphi - 编译器为设计时包或代码定义以检查在 IDE 中的执行情况

转载 作者:行者123 更新时间:2023-12-03 19:13:36 24 4
gpt4 key购买 nike

是否有任何编译器定义或函数/常量/变量可用于判断某些代码是为设计时包构建还是从 IDE 内部执行?

我们有一些代码 Hook ,我们在作为包的一部分的单元的初始化中设置。我们不希望在 IDE 中安装包时执行此代码,仅当它作为我们应用程序的一部分运行时才执行。

现在我已经在设计时包中添加了一个编译器定义,它剥离了代码,但我想知道是否有一个内置的编译器定义表明这是设计时包的一部分,或者是否有一些功能/constant 可以检查代码是否在 IDE 中运行。类似于人们在组件内部使用的旧if csDesigning in ComponentState then

最佳答案

Are there any compiler defines or functions/constants/variables that can be used to tell whether some code is being built for a design time package or is being executed from inside the IDE?

没有。

We have some code hooks that we setup in the initialization of a unit which is part of a package. We don't want this code to be executed when installing the package in the IDE, only when it's running as part of our application.

然后该代码根本不属于单元的initialization 部分。将其移至您的应用程序代码可以在其启动期间调用的单独函数。

For now I have added a compiler define to the design time package which strips out the code

这意味着您的设计时包正在直接编译您的运行时代码,它根本不应该这样做。运行时代码和设计时代码需要放在不同的包中。运行时代码不属于设计时包,设计时代码也不属于运行时包。

I was wondering if there was a built in compiler define that indicates that this is part of a design time package

没有。但是,如果您创建单独的运行时包和设计时包(您应该这样做),那么您的 Hook 代码仅属于运行时包。设计时包可以要求运行时包(因此它可以访问您的运行时组件),并且运行时包可以公开设计时包可以访问的全局变量放。如果设置了该变量,则运行时代码可以忽略任何需要忽略的内容。

关于delphi - 编译器为设计时包或代码定义以检查在 IDE 中的执行情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com