DataModule создал перед основной формой

Некоторые разработчики приложения базы данных предпочитают создавать модуль данных перед основной формой путем редактирования исходного файла проекта как это

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TMainForm, MainForm);
{...}
  Application.Run;
end.

Вопрос - почему? Что такое профессионалы и мятежники?

5
задан Michael Riley - AKA Gunny 26 August 2011 в 21:33
поделиться

4 ответа

Очевидная причина была бы, если основной форма нуждается в модуле данных для его установки. Например, если там есть что-то, что основные формы ссылок в его онкреате, то, конечно, модуль данных должен быть готов сначала.

В противном случае это не имеет значения.

15
ответ дан 18 December 2019 в 06:11
поделиться

Я согласен с ответом Мейсона, потому что он объясняет, почему люди могут сделать это. Однако я считаю, что это плохой подход, потому что он скрывает зависимость в коде, который поддерживается IDE. На мой взгляд, модуль данных должен быть удален из списка автоматического создания, и он должен быть создан в методе Oncreate основной формы.

6
ответ дан 18 December 2019 в 06:11
поделиться

Компиляторы C++ для встраиваемых платформ намного ближе к 83 C с классами, чем 98 C++ стандарт, не говоря уже о C++ 0x. Например, некоторые платформы, которые мы используем, все еще компилируются со специальной версией gcc, сделанной из gcc-2.95!

Это означает, что интерфейс библиотеки не сможет обеспечивать интерфейсы с контейнерами/итераторами, потоками или такими расширенными функциями C++. Вам придется придерживаться простых классов C++, которые очень легко могут быть выражены как интерфейс C с указателем на структуру в качестве первого параметра.

Это также означает, что в вашей библиотеке вы не сможете использовать шаблоны в полной мере. Если вы хотите портативность, вы по-прежнему будете ограничены универсальными контейнерами использование шаблонов, что, я уверен, вы признаете, только очень маленькая часть C++ шаблоны мощности.

-121--4544640-

Требуется отдельное подключение JDBC, что означает, что необходимо создать новый экземпляр обработчика базы данных. Выполните инструкцию SHOW PROCESSLIST , а затем просмотрите результаты и выполните инструкцию KILL для каждого идентификатора потока, найденного для данного пользователя.

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

-121--1567562-

Только потому, что это самый ленивый способ обеспечить доступность содержимого DataModule для MainForm. Если у вас есть только один DataModule, проблем нет.

0
ответ дан 18 December 2019 в 06:11
поделиться

На самом деле есть два лагеря на этом, и оба верны.

Первое позволяет приложению управлять сроком службы каждой формы / модуля данных. В этом сценарии, если основная форма использует модуль данных, то он должен быть создан, прежде чем его можно будет использовать. Это работает нормально для небольших приложений, но есть нагрузка на загрузку, когда вы попадаете в более крупные приложения с несколькими формами ... однако после загрузки приложения отображается, затем отображение формы практически мгновенно, поскольку она уже создана в памяти. Поскольку каждая форма / ресурс уже создан там также является большой памятью при запуске приложения. Этот метод является тем, который Delphi «приводит» вам тоже как вы добавляете новые формы / модули данных в приложение. Если вы не используете DataModule в Oncreate Mainform, то он может быть ниже в порядке создания, поскольку он не будет вызывать до начала запуска Application.run.

Второй лагерь хочет обрабатывать создание и разрушение каждого самого модуля формы / данных (как правило, для всех форм, отличных от Mainform). Преимущество этого метода заключается в том, что приложение будет загружено быстрее, а немедленно потребляют меньше памяти после запуска. Как правило, в этом сценарии это основная форма (или другие формы), которые полностью управляют жизненным циклом каждой формы / модуля данных, которую они используют. Этот метод работает лучше всего для более крупных приложений со многими формами.

5
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: