问题标签 [toolsapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 我可以只忽略一次异常吗?
当发生异常时,调试器会给我以下消息:
我可以通过检查来选择忽略异常ignore this exception type。
然而,这样做会忽略所有未来项目中的异常,这比无用更糟糕,因为我不想忽略每个项目中的异常;我只想在这次运行中忽略它们。
使用 ToolsAPI,有没有办法:
A - 仅忽略此运行的异常,或
B - 仅忽略此项目的异常,或
C - 重新启动 Delphi 时恢复忽略异常设置?
如果我能做到 A、B 或 C,我的问题就解决了。
我知道ignore exception数据存储在:
HKEY_CURRENT_USER\Software\Embarcadero\BDS\17.0\Debugging\Embarcadero Debuggers\Language Exception Classes
我的首选选项是使用 ToolsAPI 来修复消息框并添加一个ignore this exception for this session only复选框。
但是,如果那不可用,我可以在注册表中搞乱。
如果我确实回退到注册表,我想强制 Delphi 重新加载设置,这样我就不必重新启动 IDE。
作为记录,我正在使用西雅图,但我更希望从 2007 年开始使用它。
我检查了 ToolsAPI,但IOTAFileFilterWithCheckEncode看起来不相关,我认为IOTABreakpoint80仅适用于用户设置的断点。
我还没有源代码,因为我不确定使用 ToolsAPI 是否可以实现我想要的,如果不是,我将回退到使用记录上述注册表项的外部应用程序,启动 Delphi 并恢复注册表项。我希望有一种更清洁的方法。
delphi - 使用OTA返回特定平台的库路径
我想获取特定平台(win32、win64、OSx)的库路径。但是,当我询问库路径时,OTA 只是返回给我 OSx 库路径。
代码是:
我注意到一件奇怪的事情。当我询问键值时,我得到 3 LibraryPath。
当我做:
我得到:
我认为每个键都必须代表我拥有的可能目标之一(win32、win64、OSx)。但是因为我可以将 Key 的值称为它的名称,所以它总是返回它找到的第一个键,在我的情况下它是 OS X。
delphi - 如何更新旧的 IDE 扩展代码,使其不使用已弃用的 ExptIntf 和 ToolsIntf 单元?
我正在做关于扩展 IDE 的第一次测试,但我只发现使用ExptInftand的旧源代码ToolsIntf已被弃用(Delphi 2007)。
我正在寻找更新的示例代码或更新旧示例的帮助。
这是我为尝试更新旧示例所做的:
我从这个示例源代码开始:
在官方文档中,我读到我应该使用TNotifierObjectwho implements IOTAWizardand IOTAMenuWizardinterfaces (From ToolsAPIunit),而不是ExptIntfand ToolsIntf。
为了更新示例代码,我执行了以下步骤:
- 已从源代码中
ExptIntf删除。ToolsIntf - 添加
ToolsAPI到使用条款。 - 替换
TExpertState为TWizardState - 替换
esEnabled为wsEnabled。 - 替换
RegisterLibraryExpert为RegisterPackageWizard。
这样做之后,我仍然在TExpertStyle和上有未声明的标识符错误ToolServices。
应该如何更新这些部分和/或在哪里可以找到不使用已弃用单元的示例?
delphi - 使用 ToolsAPI 将菜单项添加到 Delphi IDE 中单元的选项卡上下文菜单
我正在寻找需要使用哪些服务/接口将项目添加到 Delphi IDE 中源文件的右键菜单。
例如,如果我右键单击一个单元的选项卡,它具有“关闭页面”、“关闭所有其他页面”、“属性”等项目。如果可能,我想向该菜单添加自定义项目。
我查看了 ToolsAPI 单元,但不知道从哪里开始。我假设有一个界面可以用来枚举项目和添加项目,但我不知道从哪里开始寻找。
如果那不可能,我会选择代码编辑器的上下文菜单。
也许网上有一些样品,但我仍在寻找,但没有找到。
任何帮助表示赞赏。
delphi - Delphi 5组件会自动将“db.pas”单元添加到uses子句?
我正在编写我自己的组件,我希望它在我将它放在表单上时将它添加"db"到interface使用子句中,因为它有一个已发布的事件,例如:
TDataSet在中声明db.pas,我需要手动添加这个单元,我想避免。
我已经看到了这个解决方案:
和这个:
我可以让自定义 Delphi 组件向使用子句添加多个单元吗?
那个用途RegisterSelectionEditor,但Delphi 5(我知道......)似乎没有这个单元。
我有哪些选择?
delphi - 使用 ToolsApi 应用不同值 IDE SizeFont 后如何刷新 Delphi IDE?
在应用新的字体大小后,我正在尝试刷新我的 IDE。代码是:
如果我从 IDE 打开编辑器选项,我可以看到新值已正确应用,但当我单击“工具选项”屏幕上的“确定”按钮时,它只会反映在 IDE 中。如何直接从代码中应用它?
delphi - debugAPI 中的 Frame 是什么?
在 Delphi debugAPI 中,有几个对 a 的引用,FrameIndex例如:
有几个方法接受一个FrameIndex参数,但是,什么是FrameIndex?我可以在哪里获得FrameIndex?
delphi - 如何在 IDE 上获取 RTTI 信息
我想获取TExceptionNotificationDlg位于 dbkdebugidexxx.bpl 中的 VMT 条目。
IDE 在启动后不久加载此模块。
我想阻止显示异常报告对话框并替换我自己的显示。
简单的方法是拦截这个窗口的ShowModal功能。ShowModal 是一个虚函数,因此存储在 VMT 中。
默认情况下,此类的 VMT 包含指向 的链接CustomForm.ShowModal,因此简单挂钩已失效。我需要修改 VMT。
IDE 在启动时将我的代码加载为 DLL。
如果我只有模块 ( )name和窗口类 () 的名称,我如何获得 VMT 的地址?HModuledbkdebugidexxx.bplTExceptionNotificationDlg
请注意,此表单仅在显示异常时创建并在之后立即销毁,使用HWnd获取信息已出(我之前使用创建表单的 HWnd 访问表单的发布信息https://compilerintrinsics.wordpress.com /,但我不能在这里这样做)。
delphi - 可以使用 OTAPI 以编程方式设置 Delphi 10 的选项集文件吗?
是否可以在分别使用接口1创建新的 Delphi 项目时以编程方式自动设置选项集文件引用?IOTAProjectOptionsIOTAProjectOptionsConfigurations
或者我可以使用任何其他OTAPI IDE 服务2来做到这一点吗?
我目前正在使用 RAD Studio Delphi 10 Seattle IDE。不过,如果更新的 OTAPI 版本支持该功能,我仍然想知道这一点。
我找不到任何合适的属性或函数,这似乎在我当前的ToolsAPI.pas.
我想实现与Apply Option Set -> Reference在 IDE 的项目管理器视图中选择根项目配置根节点相同的效果:
假设我正在寻找一些功能,例如
多一点背景:
我目前正在为我们公司范围的 Delphi 项目设置开发遗留项目向导。我已经有一个工作IOTAProjectCreator实现,它还可以.dproj在 IDE 生成和保存 MSBuild XML 文件后对其进行操作。我只是在Import那里添加一些条件元素。
现在我们还想使用存储在中央存储库中的选项集文件。在使用 GUI 应用该操作之后,我知道并研究了.dprojXML 中的差异,但是有不可忽略的逻辑量(关于依赖关系等),我避免(重新)实现该逻辑通过纯 XML 文件操作。更不用说必要的逻辑很容易随着 IDE 的未来版本而改变。
1)我试图在IOTAProjectCreator实现的上下文中使用它,并定义procedure SetInitialProjectOptions(NewProject : IOTAProject);函数。
2)遗憾的是,这些功能的文档记录如此糟糕。


