Иногда разработчикам может потребоваться изменить атрибуты файлов исходного кода, таких как .pas и .dfm, на writable из среды разработки Delphi, не прибегая к использованию систем контроля версий. Вопрос о возможности такого изменения был задан пользователем sse, который использует Delphi XE и Delphi 6.
Проблема
В стандартных настройках Delphi IDE нет встроенного инструмента для изменения атрибутов файлов на writable. Право на запись для файлов, измененное в IDE, не отражается на атрибутах файлов в файловой системе.
Решение
Для решения этой проблемы можно создать внешнюю команду или использовать расширение IDE. Один из предложенных вариантов заключается в использовании .bat файла, который можно вызвать из меню инструментов. Такой .bat файл может содержать логику для изменения атрибутов файлов с помощью команды attrib.
Другой подход - разработка консольного приложения на Delphi, которое выполняет ту же задачу.
Подтвержденный ответ
Наиболее эффективное решение - создание нового пакета для IDE, который будет установлен в среду разработки в режиме дизайнера. Пример такого пакета представлен ниже:
unit MakeEditable;
interface
procedure Register;
implementation
uses
Windows, SysUtils, Menus, ToolsAPI;
type
TMakeEditable = class(TObject)
private
FEditorServices: IOTAEditorServices;
FFileMenu: TMenuItem;
FMakeEditable: TMenuItem;
function MenuItemWithCaptionLike(const Menu: TMenuItem; const DesiredCaption: string): TMenuItem;
procedure MakeEditableClick(Sender: TObject);
public
constructor Create;
destructor Destroy; override;
end;
constructor TMakeEditable.Create;
var
Index: Integer;
PreviousMenuItem: TMenuItem;
begin
inherited;
// Инициализация компонентов и добавление пункта меню для изменения атрибутов файлов
end;
destructor TMakeEditable.Destroy;
begin
// Освобождение ресурсов
inherited;
end;
function TMakeEditable.MenuItemWithCaptionLike(...);
procedure TMakeEditable.MakeEditableClick(...);
procedure MakeFileEditable(const FileName: string);
begin
// Логика изменения атрибутов файла
end;
var
FileName, LinkedFileName: string;
EditBuffer: IOTAEditBuffer;
begin
// Обработка изменения атрибутов файлов исходного кода и связанных файлов
end;
var
MakeEditableInstance: TMakeEditable;
procedure Register;
begin
MakeEditableInstance := TMakeEditable.Create;
end;
initialization
finalization
MakeEditableInstance.Free;
end.
При компиляции и установке этого пакета в IDE появляется новый пункт меню "Make Editable", который очищает флаг только для чтения в буфере ввода и делает файл записываемым.
Важные замечания
Пакет должен требовать дизайн IDE.
Проверка на .dpr и .dpk файлы, а также изменение атрибутов для .dproj и .res файлов.
Создание такого пакета позволяет разработчикам удобно и быстро менять атрибуты файлов исходного кода в среде Delphi IDE без необходимости использования системы контроля версий.
Разработчики в Delphi IDE требуют изменить атрибуты файлов исходного кода на writable без использования систем контроля версий.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS