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

BCB中的錯誤訊息

尚未結案
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-20 22:49:01 IP:163.28.xxx.xxx 未訂閱
想請問各位高手: 我再執行程式完以後會跳出一個錯誤的訊息...如下第一張圖:    關掉這一個訊息之後,他的錯誤顯現在Project1.cpp上...如下第二張圖    接著我在去Run程式,他會跳出像是按F7的結果...如下第三張圖    想請問各位高手,錯誤出在哪裡? 還有F8要怎麼看@@ 我還是BCB的新手,周邊又沒有人用BCB...請各位高手不吝賜教< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=25104491&CC=561449"> 發表人 - akino0910 於 2005/10/20 23:11:10
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-21 01:29:47 IP:59.104.xxx.xxx 未訂閱
您好! 可以把程式碼po上來嗎?讓有經驗的前輩幫您看看! 會出現這錯誤,通常都是使用到無效的記憶體位置。 引用GeorgeKu大大的話: Access violation的問題,大部分都出在程式中設定的指標指向錯誤的位址,或是讀寫陣列跑過頭了,跑到不該去的地方,他就會出現上面的訊息 http://delphi.ktop.com.tw/topic.php?topic_id=59830 發表人 - cashyy 於 2005/10/21 01:42:55
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-22 02:32:33 IP:211.76.xxx.xxx 未訂閱
F7、F8是單步除錯用的,差別在於F7會進到函數裡去做,而F8則不會, 通常F7或F8會配合中斷點一起使用, 中斷點的設定方式是在程式執行時Code Edit上左邊有一堆小藍點的地方按一下左鍵(不一定要執行期間才能按,在設計時也可以,位置一樣), 此時該行會被標為紅色,當程式跑到紅的這行時就會停住,配合F7、F8及Watch window進行除錯 ==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-23 20:31:19 IP:163.28.xxx.xxx 未訂閱
不好意思~~我今天才看到回文@@ 謝謝2位的答覆,我稍後會把我的程式碼po上來~~不過寫的很亂就是了@@ 另外一點是我不會看案F7以後跳出來的那ㄧ個視窗的東西.... 希望會的朋友能夠指點我ㄧ下...感激不盡^^
 
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Graphics::TBitmap *bmp1 = new Graphics::TBitmap();
Graphics::TBitmap *bmp2 = new Graphics::TBitmap();
Graphics::TBitmap *bmp3 = new Graphics::TBitmap();
Graphics::TBitmap *bmp4 = new Graphics::TBitmap();
Graphics::TBitmap *bmp5 = new Graphics::TBitmap();
Graphics::TBitmap *bmp6 = new Graphics::TBitmap();
Graphics::TBitmap *bmp7 = new Graphics::TBitmap();
Byte *ptr1=NULL,*ptr2=NULL,*ptr3=NULL,*ptr4=NULL,*ptr5=NULL,*ptr6=NULL,*ptr7=NULL;
int x,y,n=0,loop,max;
int Control_NA=40;
bmp1=Image5->Picture->Bitmap;
bmp3=Image4->Picture->Bitmap;
bmp1->Width = bmp3->Width;
bmp1->Height = bmp3->Height;
bmp2->Width = bmp3->Width;
bmp2->Height = bmp3->Height;
bmp1->PixelFormat=pf24bit;
bmp2->PixelFormat=pf24bit;
bmp3->PixelFormat=pf24bit;
bmp4->Assign(bmp1);
bmp5->Assign(bmp1);
bmp6->Assign(bmp1);
bmp7->Assign(bmp1);
for(int i=0;iHeight;i  )
{
  ptr1 = (Byte *)bmp1->ScanLine[i];
  for(int j=0;jWidth*3;j  )
  {
    ptr1[j]=0;
  }
}    float label=0;
float newlabel;
for(loop=0;loop<3;loop  )
{
 for(int i=0;iHeight;i  )
 {
  ptr2 = (Byte *)bmp2->ScanLine[i];
  ptr3 = (Byte *)bmp3->ScanLine[i];
  for(int j=0;jWidth;j  )
   {
    //ptr2[j]=0;
    if(ptr3[3*j]==(loop 1))
     {
     label=label 1;
     ptr2[3*j]=label;
     ptr2[3*j 1]=label;
     ptr2[3*j 2]=label;
     }
     else
     {
     ptr2[3*j]=0;
     ptr2[3*j 1]=0;
     ptr2[3*j 2]=0;
     }
   }
 }
max=(int)label;
ShowMessage(AnsiString("We get max =")  max );
int flag;
while(flag==0)
{
 flag=1;
for(int i=0;iHeight-1;i  )
{
  ptr2 = (Byte *)bmp2->ScanLine[i];
  for(int j=0;jWidth-1;j  )
 {
    newlabel=ptr2[3*j];
    if(ptr2[3*j]>0)
  {
     for(y=i-1;y<=i 1;y  )
    {
     ptr2 = (Byte *)bmp2->ScanLine[y];
     for(x=j-1;x<=j 1;x  )
     {
      if(ptr2[3*x]0)
       {
        newlabel=ptr2[3*x];
        newlabel=ptr2[3*x 1];
        newlabel=ptr2[3*x 2];
        flag=0;
       }
      }
     }
    }
   ptr2[3*x]=newlabel;
   ptr2[3*x 1]=newlabel;
   ptr2[3*x 2]=newlabel;
  }
 }
}
}
int area_max=0;
int lab1=0,i,j;
float *area_histogram;
area_histogram=(float*)malloc((bmp1->Height)*(bmp1->Width)*sizeof(float*));
for(n=1;n<=max;n  )
 area_histogram[n]=0.0;
 for(i=0;iHeight;i  )
 {
  ptr2= (Byte *)bmp2->ScanLine[i];
  for(j=0;jWidth;j  )
  {
   if(ptr2[3*j]>0)
   {
    n=ptr2[3*j];
    n=ptr2[3*j 1];
    n=ptr2[3*j 2];
    area_histogram[n]=area_histogram[n] 1;
    }
   }
  }
  for(n=1;n<=max;n  )
  {
   if(area_histogram[n]>area_max)
   area_max=area_histogram[n];
   }
   for(n=1;n<=max;n  )
   if(area_histogram[n]>=area_max/Control_NA)
   {
    lab1=n;
    for(i=0;iHeight;i  )
    {
     ptr1= (Byte *)bmp1->ScanLine[i];
     ptr2= (Byte *)bmp2->ScanLine[i];
     for(j=0;jWidth;j  )
    {
     if(ptr2[3*j]==lab1)
     ptr1[3*j]=(loop 1)*50;
     ptr1[3*j 1]=(loop 1)*50;
     ptr1[3*j 2]=(loop 1)*50;
    }
   }
   for(i=0;iHeight-1;i  )
   {
     ptr4= (Byte *)bmp4->ScanLine[i];
     ptr5= (Byte *)bmp5->ScanLine[i 1];         for(j=0;jWidth;j  )
    {
     ptr4[3*j]=ptr5[3*j];
    }
   }
  for(i=0;iHeight;i  )
   {
     ptr6= (Byte *)bmp6->ScanLine[bmp1->Height-1];
     ptr7= (Byte *)bmp7->ScanLine[bmp1->Height-2];
     for(j=0;jWidth;j  )
    {
      ptr6[3*j]=ptr7[3*j];
    }
   } 
    for(i=0;iHeight;i  )
   {
     ptr4= (Byte *)bmp4->ScanLine[i];
     ptr7= (Byte *)bmp7->ScanLine[i];
     for(j=0;jWidth;j  )
    {
     ptr4[3*j]=ptr4[3*j 3*1];
     ptr7[3*Width-3*1]=ptr7[3*Width-3*2];
    }
   }        Image5->AutoSize=true;
    Image5->Picture->Assign(bmp1);
}         }
}    
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-24 12:39:13 IP:140.127.xxx.xxx 未訂閱
您好! Run了妳的程式,並沒有出現錯誤,猜想是其它程式碼的問題! 可否放上出錯那行的程式碼圖片!或者可以在藍色的地方,按下滑鼠左鍵,即可設定中斷點!然後按F8來單步執行! 中斷點圖片如下:
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-25 22:35:26 IP:163.28.xxx.xxx 未訂閱
您好: 你所謂出錯的那一行是你的圖中紅色那一行嗎? 如果不是的話...他跑完的結果似乎是在跟我說我圖2標藍色那個地方有誤 為什麼它跟別的程式一起寫,寫在不同> < 我有把這一段的程式拿出來另外跑過...確實不會出現錯誤... 不過他跑出來的圖形依舊不是我想要的> < 請這位高手幫我看一下程式的內容... 我不懂為什麼測試的結果只有> < 然後阿~~~ > 發表人 -
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-26 15:36:53 IP:140.127.xxx.xxx 未訂閱
引言: 您好: 你所謂出錯的那一行是你的圖中紅色那一行嗎? 如果不是的話...他跑完的結果似乎是在跟我說我圖2標藍色那個地方有誤 為什麼它跟別的程式一起寫,寫在不同> < 我有把這一段的程式拿出來另外跑過...確實不會出現錯誤... 不過他跑出來的圖形依舊不是我想要的> < 請這位高手幫我看一下程式的內容... 我不懂為什麼測試的結果只有> < 然後阿~~~ > 發表人 - >< face="Verdana, Arial, Helvetica"> 您好! 我圖中紅色是設定中斷點的圖,並非錯誤的圖! 錯誤的圖應該類似下圖: 如果方便,您可以把專案放到"會員求助程式檔案上傳區",小弟把您看一下! 為什麼它跟別的程式一起寫,寫在不同button他就會顯示錯誤=>可能這一段程式與其他程式有衝突! 建議您debug,按F8就可以了,不需按F7!按F8,可以一步步來看每個變數的值是否為您要的!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-27 16:52:07 IP:163.28.xxx.xxx 未訂閱
按F8之後的動作應該是? 我按了以後他只是會在project1.cpp跳行(如一開始問題圖二,且它只跳到圖二的那ㄧ行就執行程式了)~~接著就執行程式了 沒有像這位高手說的按>< 還有專案上傳~~我要傳資料夾裡面的那ㄧ個資料阿? 是 > 感激不盡^^
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-28 14:47:44 IP:211.23.xxx.xxx 未訂閱
引言: 按F8之後的動作應該是? 我按了以後他只是會在project1.cpp跳行(如一開始問題圖二,且它只跳到圖二的那ㄧ行就執行程式了)~~接著就執行程式了 沒有像這位高手說的按>< 還有專案上傳~~我要傳資料夾裡面的那ㄧ個資料阿? 是 > 感激不盡^^ < face="Verdana, Arial, Helvetica"> 您好! 中斷要設在您覺得有問題的程式段中,當您按了F8之後,程式會跳到您中斷的那一行,那麼您就可以用滑鼠去看每個變數的值! 例如: 中斷設在a = 10;這一行!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a;
  a = 10;
}
那您按下Button時,程式就會停在a = 10;這一行,然後按一下F8,之後就可以把滑鼠移到a,就可以看到a變數的值了! 如圖: 還有專案上傳~~我要傳資料夾裡面的那ㄧ個資料阿?=>把整個專案資料夾壓縮之後就可以放上來了!如果您的資料夾有不可公開或公司機密文件可以先移出來,然後再上傳!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-01 17:18:08 IP:163.28.xxx.xxx 未訂閱
我不知道怎麼把整個壓縮檔的資料夾放上來> < 不好意思.... cashyy大大~~可能要麻煩你在跟我說ㄧ下 發表人 -
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-11-02 03:12:27 IP:59.104.xxx.xxx 未訂閱
您好! 您的檔案應該有:project1.bpr、project1.cpp、project1.res、unit1.cpp、unit1.dfm、unit1.h吧!把這幾個檔案放在"資料夾"裡面,然後用winzip或winrar壓縮整個資料夾! 步驟一:新增資料夾(在桌面按右鍵) 如圖: 步驟二:將檔案複製到資料夾 如圖: 步驟三:將資料夾壓縮 如圖: 然後上傳到會員求助區: 選擇發表新主題 然後會看到如下圖(圖中綠色是個人隱私不便公開): < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=25276954&CC=565306"> 這樣比較清楚吧!有問題再上來討論!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-11-02 15:09:44 IP:163.28.xxx.xxx 未訂閱
感謝cashyy^^~~ 我已經把我的程式全部都放在上傳區了 網址是: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=80777 希望cashyy大大有控幫我看看哪裡出了問題 小女子感激不盡
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-11-02 15:41:51 IP:140.127.xxx.xxx 未訂閱
您好! 請問您是按下哪個button才會出錯! 是否可以請您寫出執行步驟(例如:按下Picture1後,選擇一張圖片,然後就出現錯誤....等等),這樣debug比較快!    看了一下您的程式,猜想跟下面程式有關:
Graphics::TBitmap *TheBitmap, *TempBitmap,*TempBitmap_A;
TheBitmap = new Graphics::TBitmap();//好像少了這一行
TempBitmap = new Graphics::TBitmap();
TempBitmap_A; new Graphics::TBitmap();    然後下面delete時,是否有把不用的delete!
例如:您的程式有delete TempBitmap;但沒有delete TempBitmap_A;會不會因為這原因而出現錯誤呢
>>    發表人 - 
        
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-11-02 18:58:57 IP:163.28.xxx.xxx 未訂閱
我是按下Button6時程式會出現我最一開始問的那些錯誤訊息 按button1~button5圖形執行都是正確的^^ button6除了出現錯誤訊息外,如果我把它獨立寫出來它不會出現錯誤訊息, 可是跑出來的圖形就有問題> < 還請cashyy如果有控的話順便幫我看一下我的程式碼哪裡出錯了 感謝您^^
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-11-03 01:10:55 IP:59.104.xxx.xxx 未訂閱
您好! 您程式一執行就按Button6嗎?我按了,不過沒出現錯誤畫面耶?? 我這星期,考期中考!所以可能要等到星期六了!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-11-03 16:26:20 IP:163.28.xxx.xxx 未訂閱
非常感謝您的幫忙,等你忙完其中考以後再請您繼續幫我解答吧^^    執行程式完以後,要先按Button1,2,3開三張不ㄧ樣的圖,接著再按Button5去做合成的動作,接著再按Button6去做處理^^ 我是按到Button6那邊時就會產生錯誤訊息的出現~~< > 祝你期中考順利喔< >
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-11-03 17:24:44 IP:211.75.xxx.xxx 未訂閱
您好! 剛debug一下!發現您的button6的值有問題! 例如: ptr1~ptr7的值都是"",還有程式跑到下圖時,就會出現您說的那個錯誤!! 您可以把中斷設定在Image5->AutoSize=true;然後按F8就會出現了
Image5->AutoSize=true;
Image5->Picture->Assign(bmp1);
請問您button6的程式是參考站上文章嗎?還是自己寫的?
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-11-03 20:22:55 IP:163.28.xxx.xxx 未訂閱
設中斷點是不是只要點那ㄧ行就好? 我不知道是不是我灌BCB這一個軟體的時候沒有冠完全,我連Help都不能用> < bmp1怎麼會有錯?好奇怪...怎麼覺得自己問題越來越多.. 對不起,我是新手,如果我問了很愚笨的問題起您原諒 > <),可是卻不知道怎麼去改程式,如果您有更好的方式請您跟我說明^^ 我的 >
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-11-04 02:43:53 IP:59.104.xxx.xxx 未訂閱
您好! 這網站本來就是要用來與一些志同道合的人一同討論的丫! 中斷設定那一行,程式就會停在那一行!例如:button1裡面有十行程式!,如果我想看程式在第六行的變數值,那我只要把中斷設定在第六行就行了! debug可以一步一步執行!因此就知道程式在那一步出現錯誤了!建議先自己debug一下!節省您的寶貴時間!
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#20 引用回覆 回覆 發表時間:2005-11-04 23:09:19 IP:220.229.xxx.xxx 未訂閱
您好! 程式已不會出錯了!請留下mail或msn我寄給您!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#21 引用回覆 回覆 發表時間:2005-11-05 01:43:27 IP:220.137.xxx.xxx 未訂閱
感謝感謝在感謝~~ cashyy的大恩大德...我不會忘記的^^ 我的mail: akino0910@yahoo.com.tw
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#22 引用回覆 回覆 發表時間:2005-11-05 01:54:08 IP:59.104.xxx.xxx 未訂閱
您好! 寄給您了!您先試試看吧!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#23 引用回覆 回覆 發表時間:2005-11-05 02:28:46 IP:163.28.xxx.xxx 未訂閱
報告cashyy大大^^ 我剛剛有去測試您幫我改好的程式~~ 不知道您有沒有發現,最後跑出來的圖他的B,G,R三個灰階值會不相同? 正常來說image4輸入圖是相同的...怎麼會變這樣? 這樣的問題我好像有提出來過...奇怪,我應該改進了才對阿...等等來看看 還有想請cashyy大大如果還有空可否幫我看ㄧ下程式內容 它好像沒有跑flag那ㄧ個迴圈裡面的連通程式> < 我知道我沒有給初始值的關係,可是我給了以後他卻開始跑無窮回圈.... 不過它能放在一起跑已經幫我很大的忙了^^ 謝謝cashyy大大~~    我有再另一個題目討論上面的問題 如果您還有空麻煩您去看看摟
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#24 引用回覆 回覆 發表時間:2005-11-05 02:56:02 IP:59.104.xxx.xxx 未訂閱
您好喔! 我發現您的程式流程好像有問題喔!尤其在那些指標上!
akino0910
一般會員


發表:34
回覆:52
積分:16
註冊:2005-09-30

發送簡訊給我
#25 引用回覆 回覆 發表時間:2005-11-05 22:14:24 IP:220.139.xxx.xxx 未訂閱
您是說那些地方? flag裡面嗎? 我程式底子不好> <....所以還希望您多多幫忙^^"    我有在flag外面加寫2為的動態陣列去指定ptr2...可是他卻跑出跟之前我問您的問題一樣的警告標誌@@ 我有去debug過...不知道是我還不太熟,不太會看....覺得它測出來的值怎麼會跟圖差很多,迴圈裡面我去看是不是只能看他跑依次迴圈的值? 又要再次麻煩您了...不好意思
系統時間:2024-03-29 6:06:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!