fcf.bbs@bbs.mgt.ncu.edu.tw (** 小峰哥哥 **) 在 programming 版問到: 我的QB程式寫完之後,在QB程式裡執行沒有問題,但是當我想把這個程式 做成.EXE檔時,卻出現了 Program-memory overflow 這個Severe error,我試過若我把程式中裡的一些副程式殺掉的話(就是讓 程式的功能少一點),那麼此時瘦身過後的程式就可以做成.EXE檔了 請問我要如何才能使我的程式保有全部的功能,即不刪除任何副程式,且可製作出 EXE的檔案呢?? 請各位前輩、高手幫幫忙吧,謝謝!!! ------------------------------------------------------------------------------ 發信人: Devil@bar (璉璉), 信區: programming 發信站: 成大資訊所_BBS ( Jan 6 08:39:36 1999) 首先恭喜你, 對於 QuickBASIC 你即將跨向新的領域! 使用 QuickBASIC 撰寫大型 程式所必然碰到的瓶頸! 方法很單純, 原因後述! 在 QuickBASIC 下, File 選單中你是否從未用過 Create File, Load File or Unload File 的子選單? 沒錯, 正是目前這個選單存在的必要性! 根據官方文件的說法, 請你利用 Create File 建立一個新的 BASIC 檔, 在用 SUBs (F2) 的 MOVE 來將原程式的部分模組搬移到新建立的模組, 此時 QB 將會 自動產生與專案同名的計畫檔 (Project.MAK) , 每次開啟時, 只要開啟 Project.BAS 會去檢查 MAK, 進而開啟相關的檔, 當你每個模組維持在一定規模以下時, 就可 用線上功能編譯! 建議做法: 一般撰寫程式, 為了維護方便, 會把相類似的功能存在同一個檔, 例如: Project.BAS Project.MAK include.BI or include.inc FileMan.BAS MenuTool.BAS MathTool.BAS Graphic.BAS 而在 Project.BAS 中使用 Load File 選單將各子模組載入! 所以一般會用文字編輯軟體搬移 Sub or Function! 優點是程式碼的利用率增加! 及維護容易! 比如說: 你未來將發展另一個程式時, 只要將這些檔 Load File 就可以具備這 些功能, 而你有新的修正時, 舊的程式參考到同一檔案亦將自動更新, 只要將要使 用到的 Sub or Function 宣告 copy 到 Project 就可以使用! 且未用到的 Sub or Function 是不會編譯到執行檔中! 我自己的做法是在 QB +---Module | +--- *.BAS +---MyInc +---*.INC & *.BI 兩個目錄! 關於不能編譯的問題, 轉載自成大資研 fortran 版精華區 (ip: 140.116.82.7) 編譯及連結 ------------------------------------------------------------------------------ 編號 標 題 1 連結的方法 (Link) -- Devil 整理 > 2 連結注意事項 (Link) -- Devil 整理 3 編譯非常大檔 (Error: F1901) 的解決方案 -- Devil 整理 ------------------------------------------------------------------------------ 再來, 若如你說的那種情形發生的話, 是 link 本身的問題, 不是編譯器的問題 ! 你可以先看看你的 obj檔有沒有超過 100 k! 若有, 那就請你繼續看, 由於真 實模式定一節區為 64 k 所以當你的 obj檔載入記憶體超過 64 k , link 就無 法動作! 這不是 fortran的問題, 其它如上述諸語言亦是如此! (保護模式也逃 不掉! 保護模式一節區可任意調整, 但上限仍為 64 k ! 真實模式如 DOS的記憶 體配置, 保護模式如 Windows的記憶體配置! 詳細內容在此已是題外話! ) 發生 上述問題時, 你就一定得將程式分成兩個以上來編譯! OBJ 檔在目錄下的上限是 多少我不能很確定, 我有OBJ 檔大概 118 k就不能 link 過的經驗! ------------------------------------------------------------------------------