線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2535
推到 Plurk!
推到 Facebook!

製作執行檔時~把RTL選項勾勾取消就不能執行了?

 
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-22 11:41:14 IP:140.110.xxx.xxx 訂閱
大家好:
我有個疑問
我原本在尚未製作獨立執行檔時,在電腦上COMPILE以及執行都沒有問題
可是當我把RTL以及build with runtime packages 勾勾都取消之後 COMPILE沒問題 但在RUN時就出現錯誤
但我也沒有自己寫DLL
所以我嘗試把build with runtime packages 取消而RTL仍勾選 就沒問題
相反的話 就會出現錯誤
<textarea class="cpp" rows="10" cols="60" name="code">#include #pragma hdrstop #include #include <math.h> #include #include #include #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; FILE *fpgrid1,*fpgrid2,*fpgrid3; ifstream fpmap1; ifstream fpmap2; ifstream fpmap3; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::LonChange(TObject *Sender) { LON = atof(Lon->Text.c_str()); } //--------------------------------------------------------------------------- void __fastcall TForm1::LatChange(TObject *Sender) { LAT = atof(Lat->Text.c_str()); } //--------------------------------------------------------------------------- void __fastcall TForm1::MonthChooseChange(TObject *Sender) { a = atoi(MonthChoose->Items->Text.c_str()); sprintf(mapname1,"%s%d%s","D:\\XX\\Version#1\\Month_",a,".txt"); sprintf(mapname2,"%s%d%s","D:\\XX\\Version#2\\Month_",a,".txt"); sprintf(mapname3,"%s%d%s","D:\\XX\\Version#3\\Month_",a,".txt"); fpmap1.open(mapname1,ios::in); fpmap2.open(mapname2,ios::in); fpmap3.open(mapname3,ios::in); } </textarea>
以上是部份程式碼跑到這一行a = atoi(MonthChoose->Items->Text.c_str());好像就會出問題請大家幫我看看
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-22 12:37:16 IP:210.241.xxx.xxx 訂閱
把RTL以及build with runtime packages 勾勾都取消 => 您是拷貝到別台電腦上執行嗎 ? 要把相關的 .rtl (Runtime Library) 拷貝過去才行
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-22 13:04:10 IP:140.110.xxx.xxx 訂閱
你好,

我都是在同一台電腦上測試,我想要把RUN出來的執行檔COPY到別台電腦使用
只是我只要把RTL勾勾取消之後,就會出現錯誤的訊息
所以我很苦惱...
不知道問題到底出在哪

謝謝你^^
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-22 15:34:33 IP:210.241.xxx.xxx 訂閱
詳細錯誤訊息是什麼 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-22 16:32:49 IP:140.110.xxx.xxx 訂閱
Error Message:

Project gain.exe raised exception class EAccessViolation with mesage 'Access violation at address 00498519. Read of address 00000000'. Process stopped.Use Step or Run to continue.


pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-22 17:25:10 IP:210.241.xxx.xxx 訂閱
想到一個問題    把RTL以及build with runtime packages 勾勾都取消 => 您是在哪個下拉選單 ? 哪個標籤 ? 裡面哪個選項 ?
您是說您既不使用 .rtl , 也不讓 compile 將 runtime packages 包入 .exe ?
這樣 c_str 會無法執行, 因為這個函數的實際程式碼應該在 BCB 的某個 Runtime Packages 中
您不是讓它包入 exe (程式比較大), 就是要產生 .rtl 檔案和程式放相同目錄(或系統目錄)
不然就是不要使用任何放在 Runtime Packages 的函數
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-03-23 16:38:15 IP:140.110.xxx.xxx 訂閱
Project->Options->Linker->RTL選項
Project->Options->Packages->runtime選項

因為我之前COMPILE過其他程式,沒有出現這次類似的問題
也是都用一樣的方法
我剛剛爬文
有看到有前輩說是第三方元件的問題
拿掉元件就可以執行
但是我不太懂是哪方面的元件影響..
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-03-23 17:37:34 IP:210.241.xxx.xxx 訂閱
這要看您使用的函式是否放在其他 RunTime Packages 中, 如果是, 這兩者至少應該保留一個
如果不是, 那兩個都可以取消

===================引 用 文 章===================
Project->Options->Linker->RTL選項
Project->Options->Packages->runtime選項

因為我之前COMPILE過其他程式,沒有出現這次類似的問題
也是都用一樣的方法
我剛剛爬文
有看到有前輩說是第三方元件的問題
拿掉元件就可以執行
但是我不太懂是哪方面的元件影響..
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-03-27 17:19:20 IP:140.110.xxx.xxx 訂閱
我再COMPLIE的時候沒問題
在RUN的時候就出現錯誤的訊息
跑出ios_c的程式碼
錯誤顯示在ios::beg這一行上
不知道是否也遇過相同的問題呢?

因為我即使只勾選一向
也試過在沒有裝設BCB的電腦上無法執行
他會出現少了BCBREAD.DLL<-可能有點記錯名稱.. 的錯誤訊息視窗
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-03-27 17:30:42 IP:210.241.xxx.xxx 訂閱
屬於執行時期錯誤 (Runtime Error)的, 在 Compile 時候是不會有錯誤警告的
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-03-27 20:33:20 IP:220.131.xxx.xxx 訂閱
在 Project Options 的 Linker 中有一個 Use dynamic RTL 的勾勾。
那個勾了表示你必須把這個 DLL 一起交給客戶。
沒勾表示請 LINKER 把它當做靜態LIB連結。
動態連結是因為也許客戶手上會有N個 borland 開發工具開發的軟體,就不用都給客戶,佔了記憶體也佔空間。
靜態是說我理你那麼多,要交給客戶越簡單越好。幹嘛多交給客戶東西,要是我忘了交付,我又要跑一趟。
反正,現在的硬碟跟RAM跟狗屎一樣不值錢。沒差這一點點空間。

而並不是你不勾,就不會連結。

===================引 用 文 章===================
也試過在沒有裝設BCB的電腦上無法執行
他會出現少了BCBREAD.DLL<-可能有點記錯名稱.. 的錯誤訊息視窗
stella_cheng
一般會員


發表:1
回覆:5
積分:1
註冊:2006-12-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-03-28 15:24:41 IP:140.110.xxx.xxx 訂閱
我把視窗出現缺的DLL全部都COPY到沒有安裝的電腦上
就可以執行了
是目前的解決方法

謝謝大家的幫忙
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-03-28 15:29:23 IP:210.241.xxx.xxx 訂閱
小弟習慣用預設的選項, 雖然 exe 檔案大些, 但是省得拷貝一堆額外的檔案
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-07-03 2:42:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!