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

將dll以及package包入project後Run程式出現exception

 
Littleasss
一般會員


發表:12
回覆:6
積分:3
註冊:2006-08-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-14 18:06:06 IP:140.122.xxx.xxx 未訂閱
本來project還是dymanic的run,且可以run。但是現在將package和Dymanic RTL 取消之後run就出現錯誤了。有看了很多exception的文章,也看了BCB的help還是不知道要怎麼解決,因為不知道try catch要加在哪裡???也不知道為什麼包裝起來後就會出現錯誤??? 錯誤訊息如下:Project XXX.exe raised exception class EAccessViolation with message 'Access violation at address 004C47F1.Read of address 00000000'.Process stopped.Use Step or Run to continue.
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-14 22:35:01 IP:211.72.xxx.xxx 未訂閱

EAccessViolation 一直是 BCB 令人困擾的問題. 依經驗, 多為 Component 或 TStrings 或 Variable 或 Array

在執行時是 Not Exist 所引起, 故要注意 Trace 該 Object 是 Public, Private 或 Local, 甚至如 PageControl 之 OwnerDraw

若為 true, 而其 OnDrawTab() 所用到的 Object 在 Form->OnClose() 若已不存在, 也會引起. 因 OnClose() 也會觸發

OnDrawTab() , 故除了您自行小心檢查, 很難有簡易的方法 Debud.

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-15 02:35:14 IP:61.229.xxx.xxx 未訂閱
請問package是自己設計的嗎? 還是第三元件? 哪一個?

若是自己設計或是有改過source code,是否重新compile package,然後再compile主程式一次。


===================引 用 文 章===================
本來project還是dymanic的run,且可以run。但是現在將package和Dymanic RTL 取消之後run就出現錯誤了。有看了很多exception的文章,也看了BCB的help還是不知道要怎麼解決,因為不知道try catch要加在哪裡???也不知道為什麼包裝起來後就會出現錯誤??? 錯誤訊息如下:Project XXX.exe raised exception class EAccessViolation with message 'Access violation at address 004C47F1.Read of address 00000000'.Process stopped.Use Step or Run to continue.
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
Littleasss
一般會員


發表:12
回覆:6
積分:3
註冊:2006-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-15 13:23:07 IP:140.122.xxx.xxx 未訂閱
PageControl和From和一些開檔讀檔的Dialog都是我直接拉出來的,其他的TabSheet、BitBtn還有Memo都是我自己new出來的。其實我也在想會不會是這個問題。因為好像都是用BCB拉出來的就不會有錯。
===================引 用 文 章===================
請問package是自己設計的嗎? 還是第三元件? 哪一個?

若是自己設計或是有改過source code,是否重新compile package,然後再compile主程式一次。


===================引 用 文 章===================
本來project還是dymanic的run,且可以run。但是現在將package和Dymanic RTL 取消之後run就出現錯誤了。有看了很多exception的文章,也看了BCB的help還是不知道要怎麼解決,因為不知道try catch要加在哪裡???也不知道為什麼包裝起來後就會出現錯誤??? 錯誤訊息如下:Project XXX.exe raised exception class EAccessViolation with message 'Access violation at address 004C47F1.Read of address 00000000'.Process stopped.Use Step or Run to continue.
Littleasss
一般會員


發表:12
回覆:6
積分:3
註冊:2006-08-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-09-15 14:59:38 IP:140.122.xxx.xxx 未訂閱
找到問題所在了!原來是ifstream有問題。這也是個很奇怪的問題,我在讀取背景圖是.jpeg的檔的時候也遇到降的問題。比如我要設定一個BitBtn button的背景button->Glyph->LoadFromFile("button.bmp"); 如果改成load button.jpg就會有問題,除非多include 就可以了。但是如果開檔是用OpenDialog的方法就不用多include 了。這是為什麼阿??? 所以我在猜我ifstream的問題也是在這裡,因為我不是用OpenDialog的寫法,而是直接 ifstream file("test.dat"); 那降有需要include什麼嗎?
Suzuna
一般會員


發表:25
回覆:57
積分:16
註冊:2004-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-11-21 17:39:24 IP:60.248.xxx.xxx 訂閱
您好,我最近也遇到跟您相同的問題!原本參照前面的文章<就是您也參照的那篇>,但是我怎麼弄都是會出現跟您一樣的錯誤!後來想到我的exe檔與DLL也都有使用ofstream,將他拿掉之後果然就可以執行了! 我很納悶為什麼DEBUG模式就可但是這時候就不行?因為有時候會想輸出一些東西到文件,難道一定得用其他方法才能輸出嗎@@?(P.S另外想知道文章要怎麼換行,怎麼按SPACE都沒用= =)
===================引 用 文 章===================
找到問題所在了!原來是ifstream有問題。這也是個很奇怪的問題,我在讀取背景圖是.jpeg的檔的時候也遇到降的問題。比如我要設定一個BitBtn button的背景button->Glyph->LoadFromFile("button.bmp"); 如果改成load button.jpg就會有問題,除非多include 就可以了。但是如果開檔是用OpenDialog的方法就不用多include 了。這是為什麼阿??? 所以我在猜我ifstream的問題也是在這裡,因為我不是用OpenDialog的寫法,而是直接 ifstream file("test.dat"); 那降有需要include什麼嗎?
skybow
一般會員


發表:10
回覆:10
積分:4
註冊:2004-04-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-08-18 12:59:28 IP:59.116.xxx.xxx 訂閱

小弟最近也遇到相同問題!

剛剛爬文才發現這篇!

只要在程式中有宣告ofstream變數,

而且把Linker和Packages頁面中的那兩個打勾選項取消 (將DLL包入執行檔,方便在其他電腦執行)

這樣按Alt F9是沒問題,但是按F9執行時就會出現錯誤訊息!

如下圖:
http://www.badongo.com/pic/4246556

但是只要把宣告ofstream變數那行蓋掉,就沒有問題!

如此一來就無法使用ofstream來輸出資料到檔案! 如何是好?

由於這篇文章沒有確定的答案,可以請高手再次解答嗎? 謝謝!
編輯記錄
skybow 重新編輯於 2008-08-18 13:01:35, 註解 無‧
skybow
一般會員


發表:10
回覆:10
積分:4
註冊:2004-04-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-08-18 14:35:02 IP:59.116.xxx.xxx 訂閱
剛剛試了一下,成功了~


只要把
#include fstream
using namespace std;
這兩行放在Form1的 .h檔的最前面,

ofstream 的變數宣告放在Form1的 .h檔的Public區域就可以了!

輸出功能正常! 也可以在別台電腦執行!
編輯記錄
skybow 重新編輯於 2008-08-18 14:35:42, 註解 無‧
skybow 重新編輯於 2008-08-18 14:36:12, 註解 無‧
系統時間:2024-04-26 15:32:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!