[ borovac @ 04.07.2005. 22:46 ] @
Znam da su velike zato što koriste VCL. Imali li još razloga??
Znam da se mogu smanjiti koristeći UPX compressor. Ja svoje aplikacije smanjujem na još jedan način. Otvorim ih u Borland C++ -u . Onda se pokaže resource. Izbacim one bitmaps i cursors, tako budu manje za nekoliko kb.
Ima li još načina da se smanji nešto napravljeno u Delphi-u?????
[ _v!rus_ @ 04.07.2005. 23:23 ] @
Ima vec ovakav thread, koristi pretragu...
[ milex @ 05.07.2005. 07:09 ] @
Ima, vrlo jednostavan compresor, Aspack.exe. Kompresuje sve iz Delphia pa čak i dll-ove.


[ vardarce @ 05.07.2005. 08:11 ] @
Evo ti dobre primer za nonVCL aplikacije. Ako hoces da naucis nesto poslozenije prouci ove primere i aplikacije ce ti bude goleme kao da su pravene u C++

www.freewebs.com/vardarce/download/examples/Win32APITutorials.rar
[ Nemanja Avramović @ 05.07.2005. 08:28 ] @
Citat:
milex: Ima, vrlo jednostavan compresor, Aspack.exe. Kompresuje sve iz Delphia pa čak i dll-ove.


malo sam progooglao i svi rezultati pominju ASPACK zajedno sa SPYWARE... no dobro... imas li ti link za download tog ASpack-a (jako mi je poznato ime, vec sam ga video, ali ne znam gde), jer mi ovi sajtovi koje nadjem na google-u ne daju link za download (posto kazu da je spyware)?
[ vardarce @ 05.07.2005. 10:24 ] @
Evo ti oficijalnu stranu.

http://www.aspack.com
[ obucina @ 05.07.2005. 13:15 ] @
Delphi programi nisu veliki zato što koriste VCL vec zato što se po defaultu u program sve linkuje statički. VC++ programi su mali zato što se u njima sve linkuje dinamički, a može da se linkuje dinamički zato što sve što je potrebno za njihov rad dolazi uz Windows.
Drugo, Delphi na veoma neekonomičan način čuva resurse i definicije formi, tako da nekada program možeš kompresovati na do deset puta manju veličinu.
Treće, u Delphi program se linkuje sve što se nalazi u uses, a u VC++ samo ono što je potrebno. Delphi programi takođe mogu da se linkuju dinamički, ali da bi takav program radio moraš na ciljnu mašinu instalirati runtime pakete (pošto oni ne dolaze uz windows). Opcija kojom to radiš je "Build with runtime packages". Kada iskombinuješ "Build with runtime packages" i exe kompresor (lični favorit je UPX), dobijaš čudo. 6MB pada na 200kb. Osim ovoga, imaš na raspolaganju i druge arhitekture programa, tj možeš da premestiš delove svog programa u dll-ove.
[ borovac @ 05.07.2005. 17:16 ] @
Kako instalirati te RunTime pakete, i kako znati koje trebaš instalirati??
[ morlic @ 06.07.2005. 00:30 ] @
Samo da napomenem da Delphi ne linkuje sve sto se nalazi u uses listama. Da je tako programi bi vam bili mnogo, mnogo veci. Delphi, naprotiv radi dobru optimizaciju, cak na nivou samih klasa vrsi neke izbore prilikom kompajliranja, da sada ne ulazim u detalje. Poenta je dakle, da Delphi predstavlja odlican jezik opste namene i da je default exe fajl takav da pokriva neke osnovne namene. Stednja u kilobajtima se moze ostvariti u Delphi-u kao u recimo c-u, samo treba znati. Vecini korisnika nije bitno to sto je osnovni exe sa jednom formom velik oko par stotina KB, bitno im je da ne moraju da uloze veliki trud kako bi tih recimo 300KB smanjili na 50KB. Momci u Borlandu su napravili po meni dobar odnos brzine razvoja aplikacije i velicine rezultujuceg exe-a. Kome treba manje ima sasvim dovoljno prostora za rad, naravno ako ima dovoljno vremena ;)

[Ovu poruku je menjao morlic dana 06.07.2005. u 01:30 GMT+1]
[ obucina @ 06.07.2005. 14:39 ] @
Napravi
Citat:
morlic: Samo da napomenem da Delphi ne linkuje sve sto se nalazi u uses listama. Da je tako programi bi vam bili mnogo, mnogo veci. Delphi, naprotiv radi dobru optimizaciju, cak na nivou samih klasa vrsi neke izbore prilikom kompajliranja, da sada ne ulazim u detalje.


Nije u potpunosti tacno, bar ne na D7 SP1. Verovatno ne linkuje BAS sve, ali neke suvisne stvari linkuje. Evo primera:

Napravi prazan projekat, kompajliraj ga. Velicina ovog fajla je 370176.

U uses dodas "Grids" i "DBGrids", kompajliraj ga. Ovde primeti da ti je DBGrid samo u uses, a nemas ga nigde na formi, tj ne koristis ga. Velicina ovog fajla je 465920.

Dodaj na formu DBGrid, kompajliraj projekat. Velicina ovog fajla je 703976.

U prilogu se nalazi sadrzaj ovih fajlova prema JCL-ovom Analyze Project alatu. Vidi se da se tu nesto desava (u drugom slucaju unit Controls ucestvuje sa ~68000B, a u trecem sa ~70000B), ali isto tako se vidi da je ukljucen DBGrid tamo gde se uopste ne koristi.

Citat:
morlic:... Momci u Borlandu su napravili po meni dobar odnos brzine razvoja aplikacije i velicine rezultujuceg exe-a. Kome treba manje ima sasvim dovoljno prostora za rad, naravno ako ima dovoljno vremena ;)


Ovde se u potpunosti slazemo. Moje misljenje je da bilo kakvo cimanje oko velicine fajla nije vredno truda. Eventualno ako se radi udaljena administracija programa pa je potrebno ponekad propustiti novu verziju programa kroz vezu od 56k.

Dodatak:
Evo sad sam probao sve ovo ali u kombinaciji sa QuantumGrid-om. Velicine fajlova u ova tri slucaja su redom: 370176, 2254336, 2266624.
Ispada da linkuje sve u sesnaest...



[Ovu poruku je menjao obucina dana 06.07.2005. u 15:49 GMT+1]
[ alexione @ 06.07.2005. 18:50 ] @
Citat:
Napravi prazan projekat, kompajliraj ga. Velicina ovog fajla je 370176.

U uses dodas "Grids" i "DBGrids", kompajliraj ga. Ovde primeti da ti je DBGrid samo u uses, a nemas ga nigde na formi, tj ne koristis ga. Velicina ovog fajla je 465920.

Dodaj na formu DBGrid, kompajliraj projekat. Velicina ovog fajla je 703976.


Ovo je sasvim razumljivo, mada se ni meni ne svidja to tako funkcionise :(

Razlog je jednostavan: u Grids i DBGrids imas initialization sekcije koje inicijalizuju neke promenljive. Zbog toga, Delphi u zavrsni EXE ukljucuje inicijalizacione sekcije kao i kompletan kod koji je potreban iz odgovarajucih klasa i sve konstante i promenljive koje se u tom kodu pominju.

Sto se tice eksplozije velicine prilikom stavljanja na formu, uopste me ne cudi, posto Delphi tada ubacuje dobar deo VCL koda za tu komponentu (da ne kazem sve, nisam tacno siguran sta).

Na kraju, ne treba zaboraviti na DLL-ove. Sta ako pozelis da neki objekat posaljes nekom DLL-u? Tada ce tvoj EXE fajl morati da sadrzi kompletan kod svih virtuelnih funkcija plus jos ko zna sta. A ne postoji nacin da Delphi zna sta ces ti u tom DLL-u raditi sa objektom, i koje metode ces koristiti a koje ne...
[ obucina @ 07.07.2005. 00:02 ] @
Citat:
alexione:Razlog je jednostavan: u Grids i DBGrids imas initialization sekcije koje inicijalizuju neke promenljive.

Ni Grids.pas ni DBGrids.pas ne sadrze initialization sekcije. Bar ne u D7.
[ Srki_82 @ 07.07.2005. 06:43 ] @
Zasto se uopste opterecujete velicinom... danas su mediji za cuvanje podataka ogromni (vise desetina gigabajta), brzine interneta dosta velike... razlika izmedju 100kb i 2Mb ili 3Mb se i ne primecuje.

Zasto je velicina bas toliko bitna?
[ sasas @ 07.07.2005. 08:00 ] @
Citat:
Ni Grids.pas ni DBGrids.pas ne sadrze initialization sekcije. Bar ne u D7.


Sadrže neki uniti iz njihove uses liste (npr. Variants, Graphics...). Ko zna šta se sve tu dešava...

ss.