You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量对Delphi单元中所有类执行Complete Class at Cursor操作?

批量完成Delphi单元中所有未实现的类(解决Shift+Ctrl+C光标跳转问题)

问题背景

我编写了CreateUnit函数,可从SwaggerHub导出的特殊JSON文件提取对象并生成Delphi单元,函数调用示例:

CreateUnit('d:\a.json', 'd:\MyAPI.pas');

生成的单元结构如下:

unit MyAPI;

interface

type
  TType1 = class;
  TType2 = class;
  TType3 = class;
  ...

  TType1 = class
    property p1: TType1;
    property p2: TType2;
    property p3: String;
    property p4: Integer;
  end;

  TType2 = class
    property p1: TType1;
    property p2: TType3;
    property p3: String;
    property p4: Integer;
    property p5: Integer;
    property p6: string;
  end;

  ...

implementation

end.

该单元包含133个类,我需要对每个类执行「Complete Class at Cursor」(快捷键Shift+Ctrl+C)生成实现代码,但每次执行后光标会跳转到单元底部,手动返回查找下一个未完成类的效率极低,求可行解决办法。


解决方案1:利用Delphi宏录制自动化操作

  • 打开目标单元文件,启动宏录制:Tools→Macro Recorder→Start Recording
  • 手动完成一次完整的类处理流程:
    1. 将光标定位到未完成的类定义行(如TType1 = class)
    2. 按下Shift+Ctrl+C执行类完成操作
    3. 用Ctrl+F搜索下一个= class(注意排除带分号的前向声明= class;),将光标定位到新的类定义行
  • 停止录制并保存宏(比如命名为CompleteNextClass)
  • 重复执行该宏,直到所有类处理完成;也可设置宏循环执行,直到找不到下一个目标位置。

解决方案2:修改CreateUnit函数直接生成完整实现

既然是自定义生成单元的函数,最彻底的办法是在生成代码时直接补全类的实现部分:

  • 在生成interface的类定义后,自动在implementation区块生成每个类的空实现框架,例如:
implementation

{ TType1 }

function TType1.Get_p1: TType1;
begin
end;

procedure TType1.Set_p1(const Value: TType1);
begin
end;

{ TType2 }

// 同理生成TType2的属性访问方法或空方法实现
...

end.

这样生成的单元无需后续手动执行类完成操作。

解决方案3:借助第三方IDE扩展工具

使用Delphi第三方插件批量处理:

  • GExperts:通过「Class Explorer」批量选中所有类,一键触发生成实现的操作
  • CnWizards:内置批量生成类实现的功能,可一次性处理所有未完成类,避免光标跳转问题

内容的提问来源于stack exchange,提问作者Mahan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:05:42