AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Uses; brauche mal Euren Rat

Ein Thema von Daniel B · begonnen am 5. Okt 2002 · letzter Beitrag vom 7. Okt 2002
Antwort Antwort
Daniel B
(Gast)

n/a Beiträge
 
#1

Uses; brauche mal Euren Rat

  Alt 5. Okt 2002, 21:16
Hallöchen Jungs,

also, ich habe ein Programm mit sehr vielen Funktionen und Einstellmöglichkeit. Ich sag jetzt mal etwa 80% wie bei Outlook Express.
Nicht gerade wenig.
Wenn ich nun Uses rausschmeissen möchte, wie kann ich am besten rausfinden, welche ich nicht mehr brauche, ohne jede Funktion meiner WeichWare ausprobieren zu müssen.
Mein Programm bewegt sich so langsam auf 1,4MB zu.
Es soll aber auf jeden Fall auf eine Diskette passen. Es ist nur die .exe.
Kommentare rausschmeissen wird nichts bringen.
Es sind doch recht viele. Aber damit holt man nichts raus.
Bis ich fertig bin kommen noch 2 Formulare dazu. Dann wird es eng.
Wenn ich 200-300Kb sparen kann, wäre ich zufrieden.
Irgend welche Tips?
Vielen Dank

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 5. Okt 2002, 21:29
Moin Daniel B,

also was mir so spontan dazu einfällt:
Die Units unter Uses komplett auskommentieren (geht am Besten, wenn sie in einzelnen Zeilen stehen), und einen Syntaxcheck laufen lassen.
Günstigstenfalls läuft der jetzt glatt durch.
Wird gemeckert, müsstest Du, durch einzelnes wieder aufnehmen der Units, nach und nach rausbekommen, welche Unit eingebunden sein muss, damit kein Fehler mehr angezeigt wird. Das musst Du dann solange Fortsetzen, bis keine Fehler mehr angezeigt werden. Die Units die dann noch auskommentiert sind kannst Du wohl offensichtlich weglassen.
Das musst Du dann mit jeder einzelnen Unit in Deinem Programm machen.

So liesse sich relativ schnell und einfach ermitteln, welche Unit nicht eingebunden werden muss.

Da Du D6 benutzt vermute ich mal, dass Du auf jeden Fall die Unit Variants weglassen kannst. Die wird bei D6 ja immer automatisch mit eingebunden, aber längst nicht immer gebraucht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#3
  Alt 5. Okt 2002, 21:36
Also ist zwar nicht die Antwort auf deine Frage aber ich würde es noch UPXen
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 5. Okt 2002, 21:42
Hi,

Christian, das mit dem Check hab ich nicht verstanden.
Wie macht man das?
Im Anhang, sind meine jetzigen zu sehen.

Grüsse, Daniel

Nachtrag: Die Variants hab ich raus, gebracht hat es allerdings nichts.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 5. Okt 2002, 21:57
Moin Daniel B,

ich versuch's mal mit einem kleinen Beispiel (Standardvorgabe bei D5)

Code:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
Schritt 1 Alle untereinander und auskommentieren:
Code:
//uses
//  Windows,
//  Messages,
//  SysUtils,
//  Classes,
//  Graphics,
//  Controls,
//  Forms,
//  Dialogs;
Jetzt Strg-F9 um zu kompilieren. Dabei wird mit Sicherheit ein Fehler auftreten, denn ganz ohne eingebundene Unit kommmt man selten aus.

Schritt 2 Eine Unit wieder zulassen:
Code:
uses
  Windows;
//  Messages,
//  SysUtils,
//  Classes,
//  Graphics,
//  Controls,
//  Forms,
//  Dialogs;
Erneut kompilieren. Tritt jetzt der gleiche Fehler auf wie vorher, die Unit wieder auskommentieren, und die // bei der nächsten wegnehmen, bis der erste Fehler nicht mehr auftritt. Die erste Unit die das Programm wirklich braucht ist dann gefunden.

Dieses jetzt solange wiederholen, bis kein Fehler mehr auftritt. Mit ein bisschen Glück werden dann ein paar Units auskommentiert sein.

Units, von denen Du genau weisst, dass Du sie auf jeden Fall brauchst, brauchst Du natürlich nicht zu berücksichtigen. Da kommt bei Dir wohl, z.B. die ShellAPI in Frage.

Ich hoffe, dass das jetzt verständlicher war, wenn nicht versuch' ich's nochmal deutlicher.

Wie schon gesagt, auf Variants wirst Du wohl verzichten können.
Bei kleinen Änderungen im Code wohl auch auf Messages und Dialogs. Du müsstest halt nur die API MessageBox statt MessageDlg/ShowMessage verwenden, sowie die zugehörigen Konstanten. Die befinden sich in der Unit Windows.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 5. Okt 2002, 22:01
Hallo Christian,

ja natürlich. Stand jetzt auf dem Schlauch. Ich dachte das ich was übers Menü machen müsste, irgend eine option o.ä.
Werd ich mal machen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#7
  Alt 5. Okt 2002, 22:11
Hallo Christian,

das hab ich jetzt mal gemacht.
Sobald ich eins ausklammere, wird die Uni beim Kompilieren Autom. wieder eingefügt. Nur auf die ShellApi kann ich verzichten.
Nur ersparnis hab ich davon nicht. Naja.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 5. Okt 2002, 22:53
Moin Daniel B,

bei einigen Units passiert das leider. Auf die kann dann wohl meist auch nicht verzichtet werden.
Lustig, dass Du gerade auf die ShellAPI verzichten kannst. Die musst schliesslich manuell hinzugefügt haben.

Ich hab's mal eben ausprobiert, und ausser der Unit Forms braucht D6, natürlich bei einem leeren Formular, nichts weiter. Je nachdem was draufkommt ändert sich das natürlich.

Da fällt mir gerade ein:
Hast Du jetzt nur neu kompiliert, oder bist Du über Projekt/Projekt erzeugen gegangen?

In ersterem Falle werden die Units nicht unbedingt neu erzeugt, so dass Du keinen Unterschied sehen kannst.

Ausserdem musst Du das natürlich bei jeder Unit machen, die Dein Programm umfasst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#9
  Alt 5. Okt 2002, 22:58
Hallo Christian,

die ShellApi hab ich schon ergänzt. Ich weiss aber nicht mehr was ich mal damit ausprobiert habe.
Ich habe natürlich neu erzeugt und dann Kompiliert.
Soweit habe ich das schon auf die Reihe gekriegt.
Ich hab schon in der Dateiinfo nachgeschaut, mit welchem Datum und welcher Uhrzeit die .exe erzeugt wurde.
Bei den anderen Formularen hab ich "noch" ncihts gemacht, da nur die Standard sachen drin sind. Die Variants hab ich allerdings bei allen raus.

Grüsse, Daniel
  Mit Zitat antworten Zitat
R.Meyrat

Registriert seit: 6. Okt 2002
22 Beiträge
 
Delphi 2005 Personal
 
#10
  Alt 7. Okt 2002, 07:21
Hallo Daniel,

vermutlich ist dein Problemchen schon gelöst, aber trotzdem..
Den Tip mit dem auskommentieren, mache ich auch immer. aber
die D6 IDE hat so seine macken, welche nicht immer nach zu vollziehen sind.
Wenn ich diesbezüglich Probleme habe, muss ich manchmal das ganze zuerst sichern und anschliessend die *.DCUs manuell löschen, und eben das ganze Projekt neu erzeugen. Die IDE überschreibt vermutlich unter gewissen Umständen nicht immer die DCUs.
Dies ist bei mir immer der Fall, wenn ich die Debugg infos etc ein- oder ausschalte (Projekt/Optionen/Compiler)

Wenn du das fertigen Projekt ohne Debugg-infos compilierst, kannst du auch noch einige KB sparen.


Gruss Roger
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
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