问题标签 [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 的第一次测试,但我只发现使用ExptInft
and的旧源代码ToolsIntf
已被弃用(Delphi 2007)。
我正在寻找更新的示例代码或更新旧示例的帮助。
这是我为尝试更新旧示例所做的:
我从这个示例源代码开始:
在官方文档中,我读到我应该使用TNotifierObject
who implements IOTAWizard
and IOTAMenuWizard
interfaces (From ToolsAPI
unit),而不是ExptIntf
and 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 的地址?HModule
dbkdebugidexxx.bpl
TExceptionNotificationDlg
请注意,此表单仅在显示异常时创建并在之后立即销毁,使用HWnd
获取信息已出(我之前使用创建表单的 HWnd 访问表单的发布信息https://compilerintrinsics.wordpress.com /,但我不能在这里这样做)。
delphi - 可以使用 OTAPI 以编程方式设置 Delphi 10 的选项集文件吗?
是否可以在分别使用接口1创建新的 Delphi 项目时以编程方式自动设置选项集文件引用?IOTAProjectOptions
IOTAProjectOptionsConfigurations
或者我可以使用任何其他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 应用该操作之后,我知道并研究了.dproj
XML 中的差异,但是有不可忽略的逻辑量(关于依赖关系等),我避免(重新)实现该逻辑通过纯 XML 文件操作。更不用说必要的逻辑很容易随着 IDE 的未来版本而改变。
1)我试图在IOTAProjectCreator
实现的上下文中使用它,并定义procedure SetInitialProjectOptions(NewProject : IOTAProject);
函数。
2)遗憾的是,这些功能的文档记录如此糟糕。