powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ToolsApi. Узнать проект сохранен после создания или еще нет
14 сообщений из 14, страница 1 из 1
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770071
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Можно узнать через ToolsAPI сохранен ли проект?
Например у меня есть экземпляр IOTAProject.
Когда через Wizard создается новый проект, его еще нет в файловой системе. И IDE предлагает его сохранить.
Я хочу узнать, проект уже имеет эти файлы в файловой системе или еще нет?

Цель: Сделать действие только когда проект имеет сохраненный dproj+dpr файл, иначе уведомить о необходимости сохранения.

IOTAProject.FileName - возвращает полный путь к файлу, даже если он не сохранен.
На вскидку решение просто проверять наличие этого файла. Если его нет - то проект новый.
Но это как-то через одно место. Может есть какой-то признак?
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770078
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeвозвращает полный путь к файлу, даже если он не сохранен.Вот и проверь, есть ли этот файл
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770084
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найти Action Save и проверить Enabled
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770090
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот и проверь, есть ли этот файл
Это же я предложил, но может есть более цивильный способ. Вдруг там лежит этот файл но не относится к проекту, совпало просто.
авторНайти Action Save и проверить Enabled
Нет ничего такого
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770092
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteНет ничего такого
Меню-то есть. Обычное TMainMenu.
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770098
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanX-CiteНет ничего такого
Меню-то есть. Обычное TMainMenu.
Такой же через одно место вариант, к тому же AddIn у меня в DLL, а не BPL.
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770107
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например у меня есть экземпляр IOTAProject.
Значит есть и BorlandIDEServices и INTAServices.ActionList
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770114
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  IOTAProjectFileStorageNotifier = interface(IInterface)
    ['{D6B7B13F-F5EA-4320-BDCE-55236638BDE2}']
    { This function will return the name of your node in the project file. }
    function GetName: string;
    { Called when a project is loaded and there is a node that matches the
      result of GetName.  You may keep a reference to Node and edit the contents
      but you must free the reference when ProjectClosing is called. }
    procedure ProjectLoaded(const ProjectOrGroup: IOTAModule; const Node: IXMLNode);
    procedure CreatingProject(const ProjectOrGroup: IOTAModule);
   procedure ProjectSaving(const ProjectOrGroup: IOTAModule; const Node: IXMLNode);
    procedure ProjectClosing(const ProjectOrGroup: IOTAModule);
    property Name: string read GetName;
  end;
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770226
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteВдруг там лежит этот файл но не относится к проекту, совпало просто.Не совпадет. При наличии файла с существующим именем IDE создаст другие модули
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770289
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_X-CiteВдруг там лежит этот файл но не относится к проекту, совпало просто.Не совпадет. При наличии файла с существующим именем IDE создаст другие модули
Можно создать проект, потом подложить файл.
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770334
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteМожно создать проект, потом подложить файл.И IDE попросит его перезагрузить.

А еще можно открыть проект и час его редактировать не сохраняя.

Нельзя работая с проектом втихую лезть к его файлам
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770414
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще на самом деле суть другая.
Надо по клику в меню добавить в проект файлы с собственным расширением, например Config.xml

Если добавить через CreateModule не указывая имени файла, он создает по умолчанию Unit1.pas и т.д. и добавляет в проект, хотя явно выставлен sText = 'Text'; // Raw single file module with no skeleton code

Если задать просто имя файла, без полного пути, то он якобы добавляет файл в dproj но его не видно в менеджере проектов и в dproj он в странной секции.

Если задать полный путь с именем, то все ок.

Но, если проект только создан и не сохранен, то странно задавать путь, т.к. неизвестно куда сохранится потом проект.

Поэтому решения два:
1) Если проект не сохранен физически - не разрешить добавление файла.
2) Добавить файл в проект с моим именем, но без физического размещения и так, чтобы он был виден в проекте, и соответственно потом сохранился при сохранении проекта.

Вариант 2 предпочтительнее. Но непонятно пока что, где указать.
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770437
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
procedure ProjectSaving(const ProjectOrGroup: IOTAModule; const Node: IXMLNode)
This method is called when the project is being saved so you can save your custom XML information. 
ProjectOrGroup is the IOTAModule interface to the project or group being loaded and Node is a 
reference to the XML code in the project / group file.



Код: pascal
1.
2.
3.
Этот метод вызывается при сохранении проекта, чтобы вы могли сохранить свою пользовательскую 
информацию XML. ProjectOrGroup - это интерфейс IOTAModule для загружаемого проекта или группы,
а Node - это ссылка на код XML в файле проекта / группы.
...
Рейтинг: 0 / 0
ToolsApi. Узнать проект сохранен после создания или еще нет
    #39770864
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался.
Оказывается в IOTAModuleCreator.GetImplFileName если указать полное имя файла, то это не значит что он его физически создаст.
В совокупности с
GetCreatorType = sText
GetExisting = False
GetUnnamed = True
Создается нужный файл и он физически нигде не расположен и IDE предлагает его сохранить.
А я то думал что задавая полный путь к файлу в GetImplFileName она его создаст сама.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ToolsApi. Узнать проект сохранен после создания или еще нет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]