Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 05.03.04 21:04 
Hallo!

Gibt's eigentlich eine Möglichkeit, die erzeugte exe-Datei kleiner zu bekommen? ca. 354KB für ein leeres Formular sind ja nicht gerade ohne!

Danke schon mal!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 05.03.04 21:10 
Hallo,

entweder du steigst auf API-Programmierung um, oder du verwendest Exe-Packer.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Fr 05.03.04 21:14 
es gibt 2 möglichkeiten:
1. du verlässt die wunderbar einfache welt der VCL und programmierst nonVCL.
damit kannst du die dateigröße locker auf unter 50kB drücken.
was genau das ist lasse ich mal luckie erklären:

Zitat:
nonVCL, was ist das eigentlich?


Unter der nonVCL-Programmierung versteht man die Programmierung ohne die Verwendung
der VCL. Es gibt keine Komponenten, keine Formulare in dem Sinne ... usw.
Stattdessen greift man direkt auf das API (Application Programmers Interface)
zurück. Wenn Sie bereits Erfahrung mit der VCL-Programmierung haben, dann wird
Ihnen zuerst klar werden (müssen), dass Sie sich bei reinen API-Programmen um
viele Dinge selbst kümmern müssen. Der Nachteil dabei ist, dass die Quelltexte
solcher Projekte u.U. etwas umfangreicher und mitunter auch unübersichtlicher
werden. Andererseits haben die kompilierten Exe-Dateien nur einen Bruchteil der
Größe der VCL-Versionen. Und das ist für viele Programmierer Grund genug,
kleinere Tools komplett ohne VCL zu entwickeln.

Allerdings dürfen Sie die Vorteile der VCL nicht vergessen. Unserer Meinung nach
ist es nicht vertretbar, ein umfangreiches Projekt mit vier, fünf oder mehr
Formularen ausschließlich auf API-Basis zu entwickeln. Sicher wird sich das
realisieren lassen, aber hier sind Sie mit der VCL eindeutig schneller, und Sie
können bequemer arbeiten.
Ideal ist die API-Programmierung bei der Entwicklung von kleineren Projekten und
Tools, die vielleicht nur ein oder zwei Fenster oder Dialoge haben und bei denen
der Funktionsumfang nicht so gewaltig ist.

Im Gegensatz zum herkömmlichen Weg müssen Sie bei nonVCL-Programmen generell für
eins sorgen: Ihr Programm muss aktiv bleiben. Deshalb besteht ein typisches
nonVCL-Grundgerüst aus drei Teilen -

der Hauptfunktion (in PASCAL durch begin und end. gekennzeichnet)
der Nachrichtenschleife
der Nachrichtenfunktion

Beispiel verbergen

// Nachrichtenfunktion
function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM):
LRESULT; stdcall;
begin
Result := 0;

case uMsg of
WM_CREATE:
// Funktionen ausführen
WM_DESTROY:
PostQuitMessage(0);
else
Result := DefWindowProc(wnd,uMsg,wp,lp);
end;
end;

// Hauptfunktion
var
msg : TMsg;
begin
// Fensterklasse registrieren, & Fenster erzeugen
{ ... }

// Nachrichtenschleife
while(GetMessage(msg,0,0,0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end.


Bevor Sie jedoch beginnen nonVCL-Programme zu schreiben, sollten Sie sich mit
den Grundlagen der Programmierung in PASCAL respektive ObjectPascal (Delphi)
auskennen. Es macht nicht viel Sinn, völlig ohne Vorkenntnisse in diese Materie
einsteigen zu wollen. Frust dürfte wohl die Folge sein.

Außerdem sind weitergehende API-Dokumentationen unbedingt empfehlenswert. Als
erstes wären da die Win32-API-Hilfedateien von Borland zu nennen. Diese liegen
Delphi bei, sind allerdings auch veraltet und (in Bezug auf neue Controls)
unvollständig. Sofern möglich nutzen Sie also gleich die Quellen von Microsoft,
als da wären:

das Microsoft Developers Network (MSDN)
das Platform SDK (PSDK)


Die Tutorials bauen weitgehend aufeinander auf. Wenn Sie also nicht gezielt ein
bestimmtes Thema suchen, dann ist es ganz sinnvoll, sie der Reihe nach
durchzuarbeiten.

(quelle: www.luckie-online.de.../Was_ist_nonVCL.txt)

unter www.luckie-online.de/Tutorials/
findest du auch das passende tutorial ( Win32API_Tutorials )

2. du bleibst bei der vcl programmierung und verwendest einen EXE-Packer. welcher es möglich macht exe-dateien zu verkleinern und sie dennoch lauffähig zu halten.
das bekannsteste ist wohl UPX: upx.sourceforge.net/
da das ganze aber ein konsolenprogramm ist und entsprechend unhandlich hab ich vor längerem ein GUI dafür geschrieben:
www.freeware.de/soft...A_UPX_GUI_14043.html

so genug gelinkt :D

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Fr 05.03.04 21:15 
mist, da war ich wohl zu langsam :?

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 05.03.04 21:35 
Um genau zu sein, werden die Exe-Dateien so riesig, sobald die Classes.pas verwendet wird.
Die Sysutils.pas ist auch nicht von schlechten Eltern und wenn man sie in einem API-Projekt nicht dringend braucht, sollte man sie weglassen.
Da aber die Classes.pas selber die Sysutils.pas verwendet, lohnt dies sich in allen VCL-Projekten nicht.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 05.03.04 21:43 
Zitat:
Um genau zu sein, werden die Exe-Dateien so riesig, sobald die Classes.pas verwendet wird


Zunächst mal: Ok, verstehe, ich will wirklich nicht auf VCL verzichten! (Kann's ohne VCL nicht...)

Dann noch was: Werden eigentlich ALLE Prozeduren und Funktionen JEDER eingebundenen pas gelinkt, oder nur die, die man auch angegeben hat?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 05.03.04 21:48 
Classes, Forms und Duialogs sind wohl die Hauptschuldigen.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 05.03.04 21:57 
Luckie hat folgendes geschrieben:
Classes, Forms und Duialogs sind wohl die Hauptschuldigen.


Einer muss ja schuld sein...
Einen Exe-Packer verwende ich schon. Na ja, gibt schlimmeres!

Danke euch!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 06.03.04 11:08 
Nein, nicht alle Prozeduren und Variablen werden gelinkt, aber die Classes und Sysutils haben beide einen SEHR ausführilichen Initialization-Teil der seinerseits auch wieder viele Prozeduren und Variablen einbezieht.
Variants zählt auch dazu.
Über Forms und Dialogs weiß ich nichts.
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Sa 06.03.04 11:18 
Hi,

das was du suchst heist KOL Distro.

Das ist wie nonVCL mit VCL :)

Musst mal nen bisschen nach googlen. In der Freeware Sparte ist es auch zufinden, mit Erklärung usw.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 06.03.04 18:53 
BungeeBug hat folgendes geschrieben:
Hi,

das was du suchst heist KOL Distro.


Hab noch nie davon gehört! Bevor ich mir das installiere - funktioniert Delphi dann trotzdem noch so wie vorher, bleibt VCL also ganz normal erhalten oder muss ich da auf etwas achten?

Danke!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Sa 06.03.04 20:05 
zum einen haben wir das programm in der freewaresparte dort findest du sicher einige anworten auf deine fragen:
www.delphi-forum.de/viewtopic.php?t=20223

und hier ist die KOL Homepage:
bonanzas.rinet.ru/

_________________
Patrick
im zweifelsfall immer das richtige tun!!!