Delphi XE5 - EXE Boyutu küçültmek için ...

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4718
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Delphi XE5 - EXE Boyutu küçültmek için ...

Mesaj gönderen mrmarman » 02 Eki 2013 08:31

Herkese Merhaba..

- Delphi XE5 kuranların ilk şikayeti EXE dosya boyutunun büyüklüğü. Ben de merak ettim ve deneme sürmünü kurdum ve dedim ki "AMAN O NE" :shock:
- Delphi 2007 ile bünyesinde sadece ve sadece boş bir Form olan bir Proje açtım.

* Şimdi aşağıda Delphi 2007'nin Project / Options / Linker sayfasını görüyorsunuz.
Resim

Delphi 2007 için Resimde Gördüğünüz üzere Include Remote Debug Symbols ve Include TD32 Debug Info başlıklarıyla ilgileniyoruz.
-Her iki kutucuk işaretli iken ile,
-Kutucuklardan Include Remote Debug Symbols kaldıralım ama Include TD32 Debug Info başlığı işaretli kalsın dediğimizde boyutlar
aynı kaldılar ve aşağıdaki gibiydi.

Kod: Tümünü seç

Resimdeki gibi her iki kutucuk da işaretli iken build ettiğimizde boyutu :  3.112.567 byte(s)  oldu. 
Bunu mpress isimli executable file compressor ile sıkıştırınca           :    161.792 byte(s) 'a küçüldü.
Kutucuklardan yer değiştirelim Include Remote Debug Symbols işaretli ama Include TD32 Debug Info işaretini kaldıralım,

Kod: Tümünü seç

Boyut inanılmaz azaldı.                                                :    407.552 byte(s)  oldu. 
Bunu mpress isimli executable file compressor ile sıkıştırınca bakınız :    161.280 byte(s) 'a küçüldü.
Include Remote Debug Symbols tek başına burada boyut değişikliği yapmadı.
- Her ne kadar etkisiz eleman gibi görünse de, bu durum sadece çıplak bir form olduğundandır. İçinde fonksiyon, procedure, type tanımları vs. olsaydı çok büyük olmasa da duruma göre 100-200 kbyte(s) fark edecekti.

Şimdi gelelim Delphi XE5'e
Resim

Kod: Tümünü seç

Yeni VCL Proje dedik ve sadece çıplak bir form var. Build ettik sonuç  : 10.760.021 byte(s) oldu. !!!
Bunu mpress isimli executable file compressor ile sıkıştırınca bakınız :    544.768 byte(s) 'a küçüldü.

Kod: Tümünü seç

Resimdeki "Debug Information" isimli kutucuğu boşalttık sonuç          :  2.104.320 byte(s) geriledi.
Bunu mpress isimli executable file compressor ile sıkıştırınca bakınız :    543.232 byte(s) 'a kadar küçüldü.  
Bu noktada Proje dosyasına bir Direktif ekledim. Google taraması yapınca bulduğum bir direktif. Bunu buradan bu vesileyle paylaşayım.
kaynak için bkz. Create Smaller Delphi XE Executables: Remove RTTI, Pack EXE

Kod: Tümünü seç

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Bu direktifi projenin kaynağında aşağıdaki şekilde yerleştirirseniz.

Kod: Tümünü seç

{$R *.res}
  {$WEAKLINKRTTI ON}
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

Kod: Tümünü seç

Boyut biraz daha azalıyor... Build ettik sonuç                         :  1.721.344 byte(s) kadar daha geriledi....
Bunu mpress isimli executable file compressor ile sıkıştırınca bakınız :    466.944 byte(s) 'a kadar da küçüldü.
SONUÇ :
Project / Options / Linking sayfasından Debug Information işaretini kaldırıyoruz.
Her projemizin DPR uzantılı (proje) kaynak dosyasına da aşağıdaki direktifi ekliyoruz. Ben buna bir IF BLOĞU ekleyeceğim.
- Bugünlerde aynı projeyi Bir Delphi 2007 bir de Delphi XE5'de derlemek isterseniz bu direktifler yeni olduğundan Delphi 2007'de hata verecektir.
- Neden buna gerek duyayım ? sorusunu duyar gibiyim, açıklayım. Mesela birisi forumda soru sordu. Siz de XE ile derleyip örnek cevap hazırladınız. Bunu paketleyip yolladınız. 2007'si olan yazılımcı derlerken hata alacaktır. Tabi XE5 kullanmadığı için nedenini de kavrayamayacaktır.

bkz.Turbo Pascal 4.0'dan başlayıp XE5'e kadar olan tüm Delphi Sürüm Tanım Kodları

Kod: Tümünü seç

// VER260 Delphi XE5'in sürün tanımıdır. 
{$IfDef VER260}
  {$WEAKLINKRTTI ON}
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$EndIf}
Özetle : Henüz tanışmış olsam da Delphi XE5 öyle korkulacak kadar yük getirmeyecek. Lütfen gözümüzde büyütmeyelim. :bravo:
Bitti :bravo:
Resim Resim

mehmetantalya
Üye
Mesajlar: 186
Kayıt: 30 Eyl 2013 09:17

Re: Delphi XE5 - EXE Boyutu küçültmek için ...

Mesaj gönderen mehmetantalya » 02 Eki 2013 08:51

Ellerine sağlık. Çok teşekkürler.

nguzeller
Üye
Mesajlar: 107
Kayıt: 19 Oca 2004 03:29

Re: Delphi XE5 - EXE Boyutu küçültmek için ...

Mesaj gönderen nguzeller » 02 Eki 2013 11:07

çalışma için teşekkürler, exe olarak pcler çok geliştiği için pek sorun görmüyorum da, mobil deki boyutlar bayağı yüksek apk dosyası ufak gibi görünsede paket olduğu için sıkıştırılmış bu cepde daha fazla yer kaplıyor.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4718
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Delphi XE5 - EXE Boyutu küçültmek için ...

Mesaj gönderen mrmarman » 03 Eki 2013 03:28

:idea: EVET bu konuda Mobil Cihazların sınırlı hafıza boyutları değerlendirildiğinde çok önemli.

:arrow: Bu arada bugün Proje Opsiyonlarında dahili THEME değişikliği kısmını gördüm, çok sevdim. Project / Options / Application / Appearance kısmında yer alıyor. Tema değişikliği EXE dosyanın açık veya sıkıştırılmış olduğu halde değişmeksizin 100 kb civarında bir büyüme yapıyor. Bilginize.
Resim Resim

PROGRAMADOR
Üye
Mesajlar: 232
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Delphi XE5 - EXE Boyutu küçültmek için ...

Mesaj gönderen PROGRAMADOR » 03 Oca 2015 05:01

Ben de kod sayfalarının tamamında interface satırı altına ve dpr dosyasında program satırının altına aşağıdaki kodu ekliyorum.

Kod: Tümünü seç

{$IF CompilerVersion >= 21.0}
  {$WEAKLINKRTTI ON}
  {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
{$ENDIF}
Böylelikle eski sürümlerde hata söz konusu olmuyor.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...

Cevapla