如何获取Delphi IDE中打开的文件列表

问题描述 投票:0回答:1

我正在开发 Delphi 的扩展,我想获取 IDE 中所有打开的文件的列表, 如果我按下

Ctrl + B
,它就会列在缓冲区列表中。

我尝试了两种方法,但它们只列出了扩展项目中包含的文件,即使项目组不包含该项目。

class function IOTAUTils.GetOpenedEditorFiles : TArray<string>;
var
  module : IOTAModule;
  editor : IOTAEditor;
  service : IOTAModuleServices;
begin
  Result := [];
  service := (BorlandIDEServices as IOTAModuleServices);
  if Assigned(service) then begin
    for var i := 0 to service.ModuleCount - 1 do begin
      module := service.Modules[i];
      for var j := 0 to module.GetModuleFileCount - 1 do begin
        editor := module.GetModuleFileEditor(j);
        Result := Result + [editor.FileName];
      end;
    end;
  end;
end;

至少我可以用这种方法过滤掉不可见的打开文件:

EditViewCount > 0

class function IOTAUTils.GetOpenedEditBuffers: TArray<string>;
var
  service : IOTAEditorServices;
  it : IOTAEditBufferIterator;
  buffer : IOTAEditBuffer;
begin
  Result := [];
  service := (BorlandIDEServices as IOTAEditorServices);
  if Assigned(service) then begin
    if (service.GetEditBufferIterator(it)) then begin
      for var i := 0 to it.Count - 1 do begin
        buffer := it.EditBuffers[i];
        if buffer.EditViewCount > 0 then begin // if view count = 0, it is not shown between tabs
          Result := Result + [buffer.FileName];
        end;
      end;
    end;
  end;
end;

获取所需的打开文件列表的正确方法是什么?

delphi delphi-ide
1个回答
0
投票

睡眠一段时间并重新启动 IDE 和 PC 后,使用上面的第二种方法

IOTAUtils.GetOpenedEditBuffers

仍然按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.