Announcement

Collapse
No announcement yet.

Units, DLL und die größe der Projekt.exe???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Units, DLL und die größe der Projekt.exe???

    Hi..

    mein Programm und damit die exe-datei hat nun 9,5 MB erreicht, aber erst etwa 10% der eigenlichen Aufgaben habe ich realisiert!

    Ich binde die Formulare (werden wohl > 50 werden) schon "dynamisch" :-) ein. Das wird überall beschrieben..."um sie erst zu laufzeit im speicher..und so...Das macht ja auch sinn! Aber! - meine Exe-datei wird immer größer *panik*, und Sie wird, wenn ich so weiter mache, auf > 60MB anwachsen!

    Wie wird eigentlich die Exe-datei geladen und behandelt - es wird immer davon gesprochen, daß nicht automatisch erzeugte Formulare erst durch das "Erzeugen" in den Speicher geladen werden. Und ebenso nach dem "Freigeben" wieder aus diesem entfernt werden!

    Wird eine 60 MB großen Exe erstmal komplett in den Speicher geholt? Oder was passiert? Gibt es da irgendwann (oder bald :-) ) Probleme?

    Ich finde die Idee der DLL eigentlich super, doch finde ich keine "leicht verständliche" Lösung, wie ich "eine Unit mit einem Form" als DLL lade und wieder freigebe, genauso wie es ausführlich als "bessere Lösung zu dem automatischen Laden eines Form's" beschrieben wird.
    Erzeugen - Anzeigen - Zerstören?

    Gruß Wolf...*Von "Old-Paskal" zur OOP scheint ein langer Weg* :-)

  • #2
    Hallo,

    woher kommt diese EXE-Grösse? Wie gross sind die DFM-Dateien? Wenn jedes Formular die gleichen Grafiken einbindet, würde ich <br>
    a) die Grafiken entweder auf <b>Frames</b> auslagern, oder <br>
    b) die Grafiken einmal in die RES-Datei packen und dann in jedem Formular erst <b>nach</b> dem Erzeugen laden.

    Die Formulare von Delphi werden in Form der DFM-Dateien in den Ressourcen-Block der Anwendung verschoben. Windows lädt die Ressourcen erst bei Bedarf nach und kann nicht mehr benötigte Blöcke auch dann aus dem Speicher entfernen, wenn die EXE noch ausgeführt wird. Ich würde daher zuerst einmal die Grösse aller DFM-Dateien zusammenrechnen. Wenn sich hier bereits ein hoher Wert ergibt, würde ich nachschauen, woher das kommt. Dazu schalte ich immer in Delphi das Formular auf die Textdarstellung um, die binären Datenblöcke sind so auf einen Blick erkennbar

    Comment


    • #3
      Hallo Hr. Kosch,

      der Tip mit den DFM-Dateien hat die Exe um 4,5 MB schrumpfem lassen!
      Hatte dort aus der experimentalen Phase (aus der bin ich wohl noch lange nicht raus) in einem Formular den Hintergrund "eingefärbt"- mit einem Image! In den anderen Forms löse ich das jetzt mit einem Panel, dem ich zur Laufzeit die rgb-Werte zuweise.
      In Zukunft werde ich regelmäßig die Grö0e der DFMs beobachten! Danke!

      Eine Frage zu DLLs bleibt:
      z.Z. packe ich alle sozusagen modularen prg-Teile in eine Unit/Form und lade es bei Bedarf dynamisch. Überall wird geraten das mit DLLs zu lösen. Damit würden sich die Teile auch nachträglich weitergeben, austauschen lassen, wenn man sie z.b. mit einem try/except-Aufruf laden könnte.
      Wie das genau geht, und was nicht!, wird sehr "stiefmütterlich" behandelt :-(
      Aufrufen/Zerstören einer Unit = DLL?
      Kann man dann noch globalen Variablen, aus der DLL heraus Werte zuweisen?
      ....Bin ich auf dem falschen Weg?

      Wolf-D. Wah

      Comment


      • #4
        Hi,

        an der Uni Linz / Österreich gibt es ein Tool zum Download (upx). Dieses Komprimiert die Exe Datei um bis zu 60 bis 80%, wobei diese Exe weiter ausführbar bleibt.

        Schau mal unter http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
        viel spaß

        Baldemaier Florian
        (www.Baldemaier.cjb.net

        Comment


        • #5
          Bei sovielen Formularen sind doch sicher viele ähnlich. Falls auf den Formularen z.B. ein Firmenlogo sitzt, dann ist es sinnvoll ein Muttervormular zu erstellen und alle weitere davon abzuleiten

          Comment


          • #6
            Probier doch mal, die Debug-Optionen auszuschalten.
            Unter Projekt|Optionen und dann unter Comiler|Debugger alles ausschalten und unter Linker die Debug-Info und Debug-Symbole ausschalten.<br>
            Ich hab es schon erlebt, dass 2/3 der Exe nur Debug-Informationen waren.

            Jürgen Kort

            Comment

            Working...
            X