问题标签 [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.

0 投票
0 回答
99 浏览

delphi - Delphi【查找声明】使用OTA

我正在西雅图 D10 研究 IDE 专家,但不知道如何在代码中访问“查找声明”(又名Ctrl+ Click)。我需要在我自己的键绑定中使用它,以便我可以先删除面包屑。

如果它不可用,是否有通过某种方式访问​​ delphi 上下文菜单的解决方法?

提前感谢您的任何建议。

蒙特

0 投票
0 回答
148 浏览

delphi - Delphi Expert:如何注册 IOTAEditorNotifier 回调

我正在编写一个 Delphi IDE 专家(OpenToolsAPI)。我想接收 IOTAEditorNotifier 接口的回调。

我如何注册以获取这些事件?我没有找到接受 IOTAEditorNotifier 接口的 AddNotifier 调用。

0 投票
2 回答
2939 浏览

delphi - 如何在 Delphi 10.2 中使用 ToolsAPI 获取当前项目的版本号

在 Delphi 2007 中,我可以使用以下 ToolsAPI 调用轻松获取当前项目的版本信息:

在 Delphi 10.2.3 中,无论实际版本号如何,这将始终返回版本 1.0.0.0。这是“简单”的案例:一个 VCL 应用程序。

我还尝试了返回 TStrings 指针的“Keys”值。在那里我也得到了 FileVersion 字符串,但它总是“1.0.0.0”。

我想这与对各种平台和配置的支持有关,但我找不到任何关于它现在应该如何工作的文档。我还在 ToolsAPI.pas 中搜索了“版本”和“发布”,但没有出现任何可疑情况。

关于如何在 Delphi 10.2 中获取版本信息的任何提示?

0 投票
0 回答
400 浏览

delphi - Delphi IDE Expert - 拦截“查看源代码”或 DPR 文件加载

尝试为我的 Delphi XE2 调整 AutoOpenUnit IDE Expert(实现 I-OTA-IDE-Notifier 并实现 FileNotification 事件)我偶然发现了一个问题......

我需要扫描代码编辑器(或 IDE 本身)打开的每个源文件。

我做了一个测试项目:控制台应用程序(DPR),它使用两个单元 - Unit1.pas 和 Unit2.pas

我删除项目 DSK 文件或保存在代码编辑器中未打开任何文件的项目,或仅保存 DPK 文件。

现在,.DPR 文件本身几乎从未通过通知程序事件。它发生的唯一情况是当我执行“打开项目”并指定它时。

但是,当我执行文件/重新打开时 - 它是 DRPOJ 文件发出的已打开信号,而不是 DPR 文件。当我在项目预打开的情况下重新启动 IDE 时,它再次“打开”DPROJ 文件,“跳过”DPR 文件。

有通知,如 Active Project 已更改。甚至还有项目 DSK 文件和默认空项目组文件的“文件打开”通知。但不适用于项目源文件。

在这里,我可以进行粗略的破解,从 DPROJ 文件中提取项目名称并“通知”自己。虽然这是事实,IDE不会为它触发一些“正常”事件???

更糟的是。如果我打开了项目(但项目 DPR 文件已关闭),然后我执行查看源操作 - 然后在代码编辑器打开项目的新选项卡时,专家仍然没有任何事件。

当在代码编辑器中打开带有项目根文件的新选项卡时,是否有办法确保 IDE 通知您?

UPD。我发现iOTAEditorNotifier,现在试图阅读 CnWizards 他们如何设法利用它,因为在 IDE OTA 中似乎没有对该接口的注册调用......

PS https://github.com/the-Arioch/XE2_AutoOpenUnit

PPS XE2 string double-free bug demo:http ://www.sql.ru/forum/1300873-a/xe2-string-double-free

0 投票
0 回答
86 浏览

delphi - IOTAHighlighter 没有调用 Tokenize

我正在尝试编写一个简单的荧光笔(它在 pas 文件中添加突出显示某种变量)

我使用了http://www.delphi-central.com/syntax_highlighting.aspx中的代码

问题是永远不会调用 Tokenize 过程。它确实通过以下方式在注册程序中注册:

或者在构造函数中通过:

当我启动菜单 Tools.Options 时调用 GetName

代码片段:

该教程提到“使用 OTA,您可以为新的源文件类型创建荧光笔”。那么我是否必须以某种方式为pas文件注册它,还是我错过了其他东西?

0 投票
1 回答
95 浏览

delphi - 如何使用 OpenTools API 检索环境变量的值?

我在 IDE 设置中添加了一些新的环境变量:

工具 > 选项 > 环境选项 > 环境变量 > 用户覆盖

这些只是一些路径,例如:$(MYPROJ_ROOT)\Source.

如何使用 OpenTools API 检索其中之一?

我使用的 IDE 是 Delphi 10.2 Tokyo。

0 投票
2 回答
103 浏览

delphi - 来自 IOTAModuleCreator 的 de NewImplSource 是否会自动“显示”IDE 上的新单元?

我正在尝试使用 ToolsApi 实现 IDE 向导,并使用 GExperts 常见问题解答(http://www.gexperts.org/examples/GXModuleCreator.pas)作为参考。

尽管 bpl 可以编译,但该单元并未显示在 IDE 上。我正在使用 Delphi 10.3.2 Rio。

这是我如何从 IOTAModuleCreator 调用方法“NewImplSource”的示例

0 投票
1 回答
358 浏览

delphi - 升级到 Delphi 10.4 Sydney 时缺少 ToolsAPI 接口方法的实现

我在一个新的虚拟机中安装了 Delphi 10.4 Sydney w/ Patch 2,并将 Delphi 10.3 Tokyo 的源代码复制到它。

重建可视化器(用于 DevExpress TcxSchedulerEvents)时,我收到此错误:

[dcc32 错误] EventVisualizr.pas(19): E2291 缺少接口方法 IOTAThreadNotifier.EvaluateComplete 的实现

我只删除了已编译的包cxLibraryRS26, cxSchedulerRS26, dxCoreRS26, dxGDIPlusRS26, 并添加了cxLibraryRS27, cxSchedulerRS27, dxCoreRS27, dxGDIPlusRS27- 没有其他代码更改:

图片

TEventViewerFrame我在类型定义的第一行得到错误:

在 中ToolsAPI.pas,两者都有EvaluateComplete定义,但在该源文件中没有实现:

在比较 ToolsAPI 文件时,我看到:

  • 它在 10.3 中被命名EvaluteComplete(缺少 'a')并且已修复为EvaluateComplete
  • 现在IOTAThreadNotifier160.EvaluateComplete得到一个重载指令(当然,与我认为的问题无关)

改名会是原因吗?10.3 版本中的程序也没有“实现” EvaluateComplete(这似乎很好,从我对接口的了解很少)。

为什么我得到错误在 Delphi XE2 中缺少接口方法的实现?为什么我会收到错误缺少实现?,我知道错误的原因可能是参数列表不同,但我不知道在这种情况下在哪里寻找正确的。

0 投票
0 回答
95 浏览

delphi - 从 Evaluator 获取 OleVariant (TClientDataset.Data)

是否可以使用 Delphi 评估器评估类型为 varArray(TClientDataset 的数据)的 OleVariant?我正在尝试使用 ToolsApi 为这种类型构建一个调试器可视化器。我在一个广泛使用它来将数据从客户端传输到服务器的应用程序中工作,这真的很棒!我尝试使用指针,评估TVarData(variable).VTypeand TVarData(variable).VArray,然后将其转换为指针,但指针在 api 中无效。

当我在调试代码中有一个 TClientDataset 变量时,这不是必需的,因为我们已经使用 ToolApi 进行了扩展来可视化数据集(在评估器中调用 SaveToFile)。但是我们有太多只有数据变量的代码。

所以我的问题是:有没有办法通过多次评估来做到这一点,比如将 varArray 转换为字符串,然后在 api(可视化器)中反序列化结果?我看到了这个可以将 OleVariant 转换为字符串的答案,但没有说明任何关于转换回 OleVariant 的内容。

我将这篇文章用作可视化工具的示例。

0 投票
0 回答
13 浏览

delphi-2007 - 有什么方法可以使用 Open Tools API 获取 Delphi 2007 项目的两种不同配置的设置

Delphi 2007 为一个项目引入了多个构建配置(默认情况下:“Debug”和“Release”,但可以添加更多),但IOTAProjectOptionsConfigurations通过 Open Tools API 访问这些配置的相应接口仅在 Delphi 2009 中引入。

有没有办法在 Delphi 2007 中访问这些配置的设置?

编辑:我试图从 Delphi 2009 复制接口声明,但Supports(ProjectOptions, IOTAProjectOptionsConfigurations, ProjectOptionsConfigurations)在 Delphi 2007 中返回 False,所以没有 cookie。