Czy dobrym rozwiązaniem były by np. biblioteki dll z formularzami?
U mnie pisze się właśnie w ten sposób. Całość piszemy w dll'kach które eksportują odpowiednie funkcje wyświetlające okienko. Oczywiście są również i inne metody. Każdy moduł siedzi w oddzielnej dll'ce. Plik główny exe ma za zadanie tylko utworzyć wszystkie obiekty, dokonać logowania do systemu i wywoływać odpowiednie metody wyświetlające okna po wybraniu z menu głównego żądanej opcji.
Fatalne rozwiązanie dla Delphi, imho...
Strasznie dużo gównianych problemów, a największy z nich - każda DLLa w Delphi posiada własną kopię RTLa (nie dość że taka DLLka jest wielka jak stodoła to wieczne problemy z przekazywaniem instancji obiektów RTL pomiędzy DLL->HOST->DLL) i wszystko co się z tym wiąże.
Co do exe'ca o wadze 60MB to nie miałbym nic przeciwko. W dzisiejszych czasach pojemności dysków nie są małe i nie ma różnicy czy mam 1 exe 60MB, czy 1 exe 500kB oraz 50 1-2MB plików dll. Jedyna różnica może być w szybkości uruchamiana takiej aplikacji. Jeśli tworzymy obiekty oraz ładujemy pliki dll na żądanie (dopiero gdy będą nam potrzebne), to szybkość uruchamiana aplikacji rozbitej na małe dll'ki powinna być większa. Jeśli jednak uruchamiamy wszystko podczas startu to czasy uruchamiania będą podobne.
Nie, nie będzie podobna ta szybkość.
Po pierwsze jeden exe będzie dużo, DUUUUŻOOOOO mniejszy niż suma wielu DLL, które zawierają jak to napisałeś formatki.
Złożyłbym się, ale to powszechnie znany fakt...
Po drugie - w jednym exe konsolidator posprząta.
W DLL każda biblioteka posiada własne śmieci z RTLa, mimo tego, ze inne posiadają to samo.
Ładowanie takiego DLLa to inicjacja wielu obiektów, często nawet robiona niejawnie.
Ładowanie wielu DLL, to wielokrotna inicjacja tego samego - po każdej kopii dla jednej DLL.
Żadnych tych problemów nie posiadają BPLe, ale mają inne wady, a główna to:
wszystkie BPL i host (czyli exe) musza być skomplikowane w tej samej wersji kompilatora.
Jeżeli używa się DLL, zwłaszcza zgodnych z COM, ten problem nie istnieje.