Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Viele Formulare in einem Projekt (https://www.delphipraxis.net/176938-viele-formulare-einem-projekt.html)

dr. jack1 5. Okt 2013 17:14

Viele Formulare in einem Projekt
 
Hallo zusammen,

habe mal eine allgemeine Frage:

Mein Projekt umfasst derzeit ca. 36 Formulare. Ist das zwecks Geschwindigkeit und evtl. Stabilität überhaupt noch sinnvoll oder sollte man es auf einzelne Teilprogramme auslagern und diese dann ggf. aufrufen? Aktuell habe ich zwar keine Probleme, nur das Starten dauert natürlich etwas länger.
Da das Projekt ehr noch wächst, ist es für mich sicherer es im Vorfeld schon zu wissen...


Danke und viele Grüße,

Jack

Furtbichler 5. Okt 2013 17:15

AW: Viele Formulare in einem Projekt
 
Ich würde nur ein einziges Formular im Hauptprogramm erstellen lassen, alle anderen 'on demand', d.h. wenn man das Formular benötigt.

danielmagin 5. Okt 2013 20:07

AW: Viele Formulare in einem Projekt
 
genau so macht man es. alle anderen werden dann nur on demand erzeugt. :-D

Der schöne Günther 6. Okt 2013 14:30

AW: Viele Formulare in einem Projekt
 
Kommt wohl auch immer darauf an, was man für eine Zielgruppe hat. Ich habe mir lieber einen billigen Splashscreen zusammengezimmert und erzeuge und richte alle Formulare (z.B. Overlays und Popup-Dialoge) direkt beim Start ein.

Die Ladezeit für die Anwendung ist bei mir ziemlich egal, aber wenn ich im Betrieb eine halbe Sekunde für ein Monsterformular sparen kann nehme ich das dankend an.

himitsu 6. Okt 2013 14:43

AW: Viele Formulare in einem Projekt
 
OK, in Zeiten wo selber billige FertigPCs mit 16 GB RAM ausgestattet sind...


Aber man stelle sich mal vor alle würden so arbeiten...

DeddyH 6. Okt 2013 14:57

AW: Viele Formulare in einem Projekt
 
Ich versuche da stets, eine gute Balance zu halten. Fenster, die eigentlich immer wieder gebraucht werden, erzeuge ich automatisch, (modale) Eingabefenster zur Laufzeit. Damit erspart man sich auch ggf. das Löschen alter Daten. Pauschal zu sagen "alles sofort erzeugen" oder "alles erst zur Laufzeit" halte ich persönlich für blödsinnig, es kommt halt immer auf den Einzelfall an, da beides Vor- und Nachteile hat (wer hätte das gedacht? *g*).

Bernhard Geyer 6. Okt 2013 15:34

AW: Viele Formulare in einem Projekt
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1230957)
Kommt wohl auch immer darauf an, was man für eine Zielgruppe hat. Ich habe mir lieber einen billigen Splashscreen zusammengezimmert und erzeuge und richte alle Formulare (z.B. Overlays und Popup-Dialoge) direkt beim Start ein.

Die Ladezeit für die Anwendung ist bei mir ziemlich egal, aber wenn ich im Betrieb eine halbe Sekunde für ein Monsterformular sparen kann nehme ich das dankend an.

Wie wäre es die (Monster)formular bei der ersten verwendung zu initalisieren und dann nur noch wieder zu verwenden. Das wäre m. E. maximal ein Kompromiss.

Zitat:

Zitat von himitsu (Beitrag 1230960)
OK, in Zeiten wo selber billige FertigPCs mit 16 GB RAM ausgestattet sind...

Hat Windows immer noch Ressourcenbegrenzungen im Bereich Handels und GDI-Ressourcen.
Und was bringen dir 16 GB wenn du dein programm immer noch als 32-Bit Exe bereit stellst ... :-)

himitsu 6. Okt 2013 15:43

AW: Viele Formulare in einem Projekt
 
8 Programme mit 2 GB (oder gar mit 3 GB) machen das dennoch schnell voll. :zwinker:

Im Prinzip wie es DeddyH schon sagte.
Nur da, wo es "unbedingt" nötig ist, daß vorher laden.

Wobei man es auch teilweise machen kann, nur einige Dinge cached (das, was wirklich langsam ist) und das "langsame" Formular dennoch erst dann erstellt, wenn es benötigt wird.


Eventuell auch mal überlegen, ob das Programm wirklich 400 Formulare benötigt und man da nicht besser erstmal was Anderes optimiert.

sx2008 6. Okt 2013 18:39

AW: Viele Formulare in einem Projekt
 
Zitat:

Zitat von dr. jack1 (Beitrag 1230905)
... oder sollte man es auf einzelne Teilprogramme auslagern und diese dann ggf. aufrufen?

Nur wenn sich die Aufgaben der potentiellen Teilprogramme ohne Überlappungen trennen lassen.
Ein Beispiel wäre eine Hauptanwendung und ein Backupprogramm dass die Datenbank und lokalen Einstellungen sichert.
Oder das Hauptprogramm soll Dateien per FTP hochladen.
Hier könnte man eine weitere Anwendung beilegen, die sich nur um den Datentransfer kümmert und vom Hauptprogramm aufgerufen wird.

Delphi bietet leider recht schwache Möglichkeiten eine Anwendung zu unterteilen ("Partitionierung").
Der Versuch einige Formulare in DLLs auszulagern scheitert regelmässig an folgenden Gründen:
1.) Anwendung + DLLs benötigt mehr Speicher in RAM und auf Disk als eine monolitische Anwendung
2.) Probleme bei Updates weil Anwendung und DLLs zusammenpassen müssen
3.) aufwändigere und langsamere Entwicklung weil Schnittstellen zw. Anwendung und DLLs entwickelt werden müssen und sich nur mit höherem Aufwand ändern lassen
4.) erhöhter Aufwand beim Debuggen
5.) auch mit Delphi Packages (=DLL mit objektorientierter Schnittstelle) kommt regelmässig Stress auf weil man dann VCL-Packages benutzen muss. VCL-Packages muss man global für den ganzen Rechner installieren.
Tut man dies nicht erreicht man nichts anderes dass man den Rechner mit BPL-Dateien vollmüllt und man mindestens doppelt soviel Diskspeicher benötigt als wenn alles in einer EXE wäre.

Mathematiker 6. Okt 2013 19:00

AW: Viele Formulare in einem Projekt
 
Hallo,
ich habe selbst ein Projekt laufen, dass im Moment 100 verschiedene Formulare für verschiedene Berechnungen und grafische Darstellungen nutzt.
Mit dem Tip von jaenicke
Delphi-Quellcode:
procedure ShowForm(const AFormClass: TFormClass);
var
  MyForm: TForm;
begin
    MyForm := AFormClass.Create(nil);
  try
    MyForm.ShowModal;
  finally
    MyForm.Free;
  end;
end;
...
   showform(TFirgendetwas);
werden die modalen Formulare in dem Moment gerufen, wo sie gebraucht werden. Es funktioniert absolut problemlos und vor allem geschieht der Aufruf sehr schnell.
Die Startzeit der Anwendung ist minimal, der Speicher wird nicht übermäßig belastet, was will man mehr. Natürlich geht das so nur mit modalen Fenstern.

Beste Grüße
Mathematiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz