我在工作的组件上Delphi 7和Delphi 2006,在那里我使用,我需要添加到一个单元.dpr上的组件自动删除该项目的文件.就像Eureka Log自动将单元'ExceptionLog'添加到项目文件中一样:

当我将组件放在项目中的任何表单上时,有人能告诉我如何以编程方式将单元添加到项目文件中吗?
我已经成功注册了IDE通知程序(IOTAIDENotifier80),因此我收到了AfterCompile通知.
是否有可能找出项目是否构建而不仅仅是编译/制作?
我已经找到了关于实现a的答案,IOTAProjectCompileNotifier但这在D2007中不可用.
还有其他方法吗?我没有办法,因为这只适用于内部专家.
更新:我需要使用包含版本信息资源的外部.rc文件复制"AutoInc内部版本号"功能.也许这可以通过BuildEvents完成?虽然我喜欢在IDE中记录消息的能力,但显示更新的版本号...
是否有可能在活动编辑器窗口中突出显示特定行,就像Delphi IDE突出显示编译器错误时那样?
在Delphi调用堆栈中,是否可以隐藏/折叠没有源代码的堆栈帧,相应地,没有用这些蓝点标记?
仅供参考,Visual Studio可以执行此操作:
在托管代码中,默认情况下."调用堆栈"窗口隐藏非用户代码的信息.出现以下符号而不是隐藏信息:
[<外部代码>]
http://msdn.microsoft.com/en-us/library/a3694ts5.aspx
如果解决方案适用于Delphi XE2,那将会很好.
UPDATE
它可以是一些第三方专家,甚至是使用ToolsAPI的代码
我在delphi IDE专家工作,现在为了避免依赖性问题,我正在考虑重建这个专家作为dll专家,正如在这些答案中提出的那样,现在我的专家(编译为bpl)访问Screen和Application全局变量(实例) Delphi IDE),所以我想知道如果我编译我的专家作为一个DLL我仍然可以访问这些变量,我也想知道which are the main differences between a bpl delphi expert and a dll delphi expert?
我在Delphi的IDE专家工作,我需要通过枚举在Delphi IDE,显示目前我使用的所有形式的Screen.Forms财产,但如果存在另一种方式来做到这一点使用OTA我想知道.因为Screen.Forms当我的专家是BPL时使用唯一的作品,但现在我正在迁移到dll专家.
在一个包中,我有一个实现ToolAPi IOTAIDENotifier接口的组件.包可以设置,编译并显示在调色板上.这个组件的一个方法被设计用于在使用它的项目被编译(并且不被执行)时执行特定的操作...到目前为止,一切都可以.
当我在属于另一个项目的TForm上使用此组件时,问题会出现.当我尝试构建它时,我得到编译器消息File not found:ToolsAPI.dcu.
以下是该软件包的用途:
Uses
{$IFDEF PACKAGESETUP} DesignIntf, DesignEditors,{$ENDIF}
Classes, ToolsAPI;
Run Code Online (Sandbox Code Playgroud)
PACKAGESETUP仅在编译bpl时定义
当我双击错误消息时,IDE将打开文件,从该文件中声明对ToolsAPI的引用...如何摆脱此问题?
在Delphi 2007中,我可以使用以下ToolsAPI调用轻松获取当前项目的版本信息:
procedure Test;
var
ProjectOptions: IOTAProjectOptions;
Project: IOTAProject;
Major: Variant;
Minor: Variant;
Release: Variant;
Build: Variant;
begin
// GxOtaGetCurrentProject is a function in GExpert's GX_OTAUtils unit that returns the current IOTAProject
Project := GxOtaGetCurrentProject;
if Assigned(Project) then begin
ProjectOptions := Project.ProjectOptions;
if Assigned(ProjectOptions) then begin
Major := ProjectOptions.Values['MajorVersion'];
Minor := ProjectOptions.Values['MinorVersion'];
Release := ProjectOptions.Values['Release'];
Build := ProjectOptions.Values['Build'];
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
在Delphi 10.2.3中,无论实际版本号如何,它都将始终返回版本1.0.0.0.这是"简单"的案例:VCL应用程序.
我还尝试了"Keys"值,它返回一个TStrings指针.在那里我也得到了FileVersion字符串,但它总是"1.0.0.0".
我想这与各种平台和配置的支持有关,但我找不到任何关于它现在应该如何工作的文档.我还搜索了ToolsAPI.pas中的"版本"和"发布",但没有出现任何可疑的内容.
有关如何在Delphi 10.2中获取版本信息的任何提示?
我在 IDE 设置中添加了一些新的环境变量:
工具 > 选项 > 环境选项 > 环境变量 > 用户覆盖
这些只是像一些路径:$(MYPROJ_ROOT)\Source。
如何使用 OpenTools API 检索其中之一?
我使用的 IDE 是 Delphi 10.2 Tokyo。
delphi ×10
toolsapi ×10
delphi-2007 ×4
ide ×3
delphi-7 ×2
callstack ×1
debugging ×1
delphi-2006 ×1
delphi-xe2 ×1
opentools ×1
otapi ×1