Ошибка Delphi EXPERT ToolServices.getCurrentFile

#delphi #delphi-xe

#delphi #delphi-xe

Вопрос:

Какой новый способ получить текущий файл, над которым работают эксперты для Delphi XE

Ранее в Delphi 5-7 мы использовали ToolServices.getCurrentFile

Комментарии:

1. Вам придется показать нам больше, чем это.

2. -1. Итак, это эксперт, который вы написали, или просто тот, который вы получили откуда-то еще? Как происходит сбой? Вы исправляете это, находя ошибку и исправляя ее.

3. Я отредактировал сообщение. Проблема связана со сломанным интерфейсом, представленным в Delphi XE, но я пока не могу найти для нее решение. Я могу переформулировать вопрос, спросив, как получить текущий файл, над которым я работаю, в API Delphi tools.

4. Все еще -1. Все, что было в моем предыдущем комментарии, остается в силе.

5. Хорошо, я работаю над этим. ToolServices — это ссылка в устаревшем модуле, который предоставляет IDE. Просто он не инициализируется delphi при загрузке expert. Я должен найти другой способ получения текущего файла, над которым работает редактор.

Ответ №1:

Возможно, устаревшие модули ToolIntf и ExptIntf т. Д. Больше Не Работают. Вместо этого вы можете использовать IOTAModuleServices.CurrentModule . Вот краткий пример:

 function GetCurrentEditorFileName: string;
var
  Module: IOTAModule;
  Editor: IOTAEditor;
begin
  Result := '';
  Module := (BorlandIDEServices as IOTAModuleServices).CurrentModule;
  if Assigned(Module) then
  begin
    Editor := Module.CurrentEditor;
    if Assigned(Editor) then
      Result := Editor.FileName;
  end;
end;
  

Комментарии:

1. и более полезно попытаться немного разобраться в проблеме, прежде чем вы нажмете -1! 1 ТОндрей за правильный ответ.

2. Спасибо RBA, я подумал, что это разумный вопрос.

3. @RBA: для OP более полезно прочитать комментарии и предоставить запрошенную в них информацию. Если в вопросе нет информации, ответить на него намного сложнее. Если вам нужна помощь, укажите, что людям нужно, чтобы помочь вам, когда они спросят — если им придется угадывать, это потребует гораздо больше работы (и помощь здесь бесплатная , помните?). «Я получаю ошибки» или «это не работает» никому ничего не дает, чтобы помочь. Если вы получаете ошибки, точно укажите, что это за ошибка; без этой информации мы слепы. 1 ТОндрею за навыки экстрасенсорной отладки. 🙂

Ответ №2:

Альтернативный метод — передать «имя файла в редакторе» вашему инструменту в качестве параметра. $EDNAME

Комментарии:

1. Это может сработать для мастера, но не для эксперта. Эксперты обычно запускаются в среде IDE (в виде пакетов) и поэтому не получают параметры командной строки; мастера могут быть внешними исполняемыми файлами и могут получать параметры.