Бред - это не создание формы в ДЛЛ. Бред - это то, как это реализованно (судя по обрывкам исходника).
Значит для начала обьясню вот что: <!--QuoteBegin-Elvis+8:09:2005, 13:01 -->
<span class="vbquote">(Elvis @ 8:09:2005, 13:01 )</span><!--QuoteEBegin-->Пожскажите плиз в чём разница между этимим двумя примерами
[snapback]24609" rel="nofollow" target="_blank[/snapback]
[/quote]
По сути, Application.CreateForm делает следующее:
>
XXX:= TXXX.Create(Application);
if <главная форма не существует> then <XXX становится главной формой>.
>
В реале действие одинаковое, если главная форма в наличии.
Теперь о реализации:
Лично мне не понятно, зачем создавать все формы стразу? Ведь может получится так, что какие-то формы вообще не будут показаны за сеанс работы с программой. И не следует забывать, что вместе с формой, создаются и контроллы на ней. ИМХО нужно создавать форму при необходимости, а вот освобождать ее следует при завершении работы программмы (почему? читай ниже). И отговорка "не хочется теперь редактировать весь код проекта " звучит не убедительно.
Далее: Учитывая, что используется XXX:= TXXX.Create(Application), какая форма в вашем приложении считается главной? Или в вашем приложении нет главной формы
?
И еще: Главное, что нужно помнить при разработке DLL - вы не должны допускать ситуацию, при которой любое исключение осталось бы неперехваченным. В теле экспортируемых функций "заверните" все в блоки try..except.
И напоследок: Любые ресурсы, которые вы явно создаете при открытии DLL, должны освобождаться в обработчике FormClose. Мне кажется, что при вызове DLL (и использовании ее для распределения ресурсов) они не полностью освобождается до тех пор, пока вызывающее приложение не будет закрыто, а при вторичном вызове DLL не перегружается (это мои наблюдения, но, похоже, они верны). По всей видимости, ресурсы, освобожденные в первый раз, во время второго вызова не пересоздаются. У меня была масса проблем до тех пор, пока в коде я не определил "нужное место" для освобождения ресурсов. Но после того, как я переместил освобождение ресурсов в обработчик события FormClose, ошибки исчезли.
Кроме того,как уже было замечано, для освобождения ресурсов вы должны вместо метода Close или Free использовать метод Release.
Исходя из вышесказанного следует, что лучше переписать код сейчас, чем потом ловить ошибки и исправляя их потратить кучу времени и сил и в итоге переписать проект.
<!--QuoteBegin-Barmutik+13:09:2005, 09:20 -->
<span class="vbquote">(Barmutik @ 13:09:2005, 09:20 )</span><!--QuoteEBegin-->Poseidon Про договор на ты я помню .. но в общественном обсуждении как-то не могу
[snapback]24745" rel="nofollow" target="_blank[/snapback]
[/quote]Да ладно тебе. Ведь не на приеме у президента...