【问题标题】:Add a dcu file to a project before compiling [OTA]在编译之前将 dcu 文件添加到项目中 [OTA]
【发布时间】:2012-05-10 03:15:39
【问题描述】:

我想在编译之前将一个 dcu 文件添加到项目中。我正在尝试使用OTA。 在 IOTAProject 中,我可以选择添加文件 (AddFile()),但是当我尝试添加 dcu 时,它不允许我,我必须将文件设置为我的第一个文件项目。

我想模拟一些类似的东西:

------------------ Original project
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
etc...

------------------- Before compile I intercept it and set
program Project1;

uses
  MyDCU, //Add this
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
etc...

------------------ After compile remove and it came back to 
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
etc...

编译后/之前的拦截不是问题 IOTAIDENotifier 为我提供了必要的接口来使用。问题仅在于 dcu 文件作为我项目的第一个文件。

有人可以帮助我吗?谢了

【问题讨论】:

  • 您在项目选项中具有编译选项之前和之后,您可以调用一个实用程序来为您执行此操作。
  • @Dorin Duminica,我编辑了我的帖子。感谢答案。但是我没有编译拦截的麻烦,问题是dcu。
  • 我正在考虑将 dpr 更改为文本文件,添加我需要的内容,保存,然后删除并再次保存。但我正在寻找避免它的解决方案。
  • 您可以在 SO 上找到对您发布 here 的部分答案:还原应该是直截了当的,TUsesManager 也可以做到!
  • @Dorin Duminica:你说得对,就像 Rudy Velthuis 所说的 here 所说的那样,DPR 文件的 uses clause 或多或少属于 IDE。

标签: delphi delphi-xe


【解决方案1】:

由于 OTA 不提供 CodeDom(据我所知),唯一的方法是拦截 BeforeCompile 通知,解析项目文件(IDE 版本而不是文件系统)并将其添加到自己使用子句。完成后,将修改后的内容流回 IDE 缓冲区。

【讨论】:

  • 确实,这是已失效的DelFor 专家用来重新格式化代码(包括 PAS 和 DPR 文件)的机制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多