全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1051
推到 Plurk!
推到 Facebook!

請問各位大大,為何程式EXE檔會這麼大 ?

尚未結案
beamsVVTi
一般會員


發表:9
回覆:3
積分:2
註冊:2004-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-25 20:39:31 IP:221.127.xxx.xxx 未訂閱
小弟是一名新手,寫了一個簡單報表用了一分主Form 加一分Quick Report Form 但EXE檔會有2.2MB這麼大. Delphi的MASTAPP做了這麼多功能却只有1.5MB 左右. 希望請各位大大指點指點.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-26 01:32:56 IP:61.71.xxx.xxx 未訂閱
引言: 小弟是一名新手,寫了一個簡單報表用了一分主Form 加一分Quick Report Form 但EXE檔會有2.2MB這麼大. Delphi的MASTAPP做了這麼多功能却只有1.5MB 左右. 希望請各位大大指點指點.
1.你可能uses了很多用不到的源碼 當你從元件盤中拉了一個元件到form中時, 如果把該元件移除, 其uses的 程式源並不會自動被移除, 你必須自己刪掉 2.你可能在 form 中引用大量 image (包括ImageList, TImage, ..) 加了一張800k的圖片到form中, 被編譯時就會多了相對的k數 3.你可能把Application 中的 debug的設定都打開了 這樣會造成編譯時會把 系統的debug相關控制程式都加入, 使程式在除錯時 可以發生中斷及警訊, 所以移除 debug的設計可降低k數 4.你的程式碼用了太多源碼來重覆做事 精簡你的程式, 例如把很多共同要做事改成procedure或function, 其他用 call的方式即可 其他還有很原因, 不過我想最有可能的是第2項(假設你的form原本就很簡單)
poemkevin
初階會員


發表:26
回覆:77
積分:30
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-26 08:01:25 IP:210.202.xxx.xxx 未訂閱
使執行檔檔案變小,除了如上面那位p.d大大的方法外, 還可以將執行檔壓縮. 到這網站下載upx檔吧 http://upx.sourceforge.net UPX它能壓縮程式執行檔, 我試過約壓縮了三, 四倍吧 小弟覺得您應雙管其下吧 最根本的方法, 就像上面那位大大所說的, 不要太多冗長的程式碼, 也不要引入一些不必要的源碼 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-26 11:28:33 IP:211.162.xxx.xxx 未訂閱
不好意思,小弟插個花: 非常贊同P.D.和poemkevin兩位大大的idea,將所有資源文檔做成Resource DLL的形式提供給exe調用,同時將共用的Function也做成DLL供調用,最後將exe做進一步的壓縮(加殼): Aspack.exe http://www.aspack.com/ ================================= 人生在勤,不索何獲 業精於勤荒於嬉,行成於思毀於隨 臨淵羡魚不如退而結網
------
人生在勤,不索何获?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-26 20:41:28 IP:61.71.xxx.xxx 未訂閱
補充一下 個人並不是很喜歡用壓縮方式來縮小程式碼, aspack 可以將exe檔壓到近 1/3的大小, 但我執行的結果並不會因為 exe檔的縮小而使得程式的效能有 好到那裡, 因為壓縮畢竟是把資源中多餘的編程給排掉, 主要的運作仍然是 存在的, 所以根本之源就必須從基本面來處理, 不過 aspack的確可以讓exe 檔好看一點, 還有在傳檔時省一點時間!
beamsVVTi
一般會員


發表:9
回覆:3
積分:2
註冊:2004-05-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-26 21:20:26 IP:221.127.xxx.xxx 未訂閱
很多謝各位大大的指導.但我的報表Form內只是一個普通的Master-Detail Quick Report,沒有什麼image,我也試在USE中減去一些不用元件,但只減少了2-3K,程式內只有兩個before print event 處理一些報表內容.而我在Project-Option setting 如下圖請各位看看對不對. 謝謝過各位.
poemkevin
初階會員


發表:26
回覆:77
積分:30
註冊:2002-10-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-27 14:30:44 IP:210.202.xxx.xxx 未訂閱
引言: 很多謝各位大大的指導.但我的報表Form內只是一個普通的Master-Detail Quick Report,沒有什麼image,我也試在USE中減去一些不用元件,但只減少了2-3K,程式內只有兩個before print event 處理一些報表內容.而我在Project-Option setting 如下圖請各位看看對不對. 謝謝過各位. < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=17362749&CC=388311"> 發表人 - beamsvvti 於 2004/08/27 06:23:29
您的程式有加入圖檔嗎? 若有, 圖檔是否有先做過處理到適當大小, 因為加入的圖檔也會佔程式的空間 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-27 14:49:19 IP:211.23.xxx.xxx 未訂閱
因為看不到您的程式所以不知道問題點,但個人想法,或許您在BEFORE PRINT中作了怎麼的處理,又或者在其中有重覆的程式造成您的問題,如果可以,可否大致說明您在事件中作了什麼樣的動作? 讀萬卷書~不如來K.TOP走一遭
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-27 16:32:49 IP:61.71.xxx.xxx 未訂閱
引言: 小弟是一名新手,寫了一個簡單報表用了一分主Form 加一分Quick Report Form 但EXE檔會有2.2MB這麼大. Delphi的MASTAPP做了這麼多功能却只有1.5MB 左右. 希望請各位大大指點指點.
如果你真的在意大小的話, 還有一個方法, 不過這個方法是在探究是那裡有問 題, 而不是真的要幫你解決問題 1.開一個form直接編譯, 檢查其檔案大小, 應該大致在200-400k之間, 如果 超過大多, 檢查一下你的電腦是否有中毒 2.使用Delphi5,或7在編譯上的k數, 7大約會多1/3~1/2的大小, 因為7加了很 多資源進去, 不過當然可以關閉(我用D5, 目前沒有D7可以告訴你那些要關) 3.開一個FORM, 把原先你的東西, 一件一件的放進來到新FORM, 每放一個就 編譯一次, 查看那一次檔案大幅度的增大, 那就是那段的問題! 因為有時候真的常常發生在不知情的狀況下被加入很多東西到DFM中, 而實際 PAS中早已不存在的, 所以重新建立新的DFM, 或許可以解決這個問題! 試試看吧!
beamsVVTi
一般會員


發表:9
回覆:3
積分:2
註冊:2004-05-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-27 22:13:56 IP:221.127.xxx.xxx 未訂閱
先多謝各位幫忙.我真的是有點介意這麼簡單的報表為何會這麼大.我依照P.D.的第三點指示,發現了是因為我用了Infopower (woll2woll) 的一個lookup component, EXE 檔馬上由 375K 變成 1.5MB 我想是因為這個元件了. 多謝各位幫忙.
系統時間:2024-05-18 15:32:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!