问题标签 [otapi]

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 投票
1 回答
122 浏览

delphi - 如何使用 OpenToolsAPI 在源代码编辑器中获取特定的行字符串 (UTF8) 或特定的行字符串长度

我想获取整个行字符串(UTF8)并想对行字符串进行操作。我试过以下代码。但如果我们有多字节字符,则无法做到这一点。

如果有人可以帮助我使用 OpenToolsAPI 获取特定的行字符串,那将是很大的帮助。

0 投票
0 回答
160 浏览

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)遗憾的是,这些功能的文档记录如此糟糕。

0 投票
1 回答
507 浏览

delphi - 如何通过 Delphi 上的 Object Repository 从包中创建可继承的自定义表单?

我创建了一个用于创建自定义表单的向导。它工作正常。我可以从“文件”>“其他”>“我的向导”菜单中创建它。但是,我想添加表单和对话框的常用选项:“使用”、“继承”和“复制”。这个怎么做?是否需要实现任何接口方法来设置它是可继承的?下面是我助手的代码片段。

...

...

...

...

下面是我希望我的向导如何留下的示例图片。类似于原生 Delphi 对象(如 AboutBox)

Delphi 文件对话框

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文件注册它,还是我错过了其他东西?