請幫忙看看這支程式的問題在哪 |
尚未結案
|
pork
一般會員 發表:15 回覆:13 積分:5 註冊:2003-10-25 發送簡訊給我 |
大家好
這支程式的
主要作用是要把一張圖的灰階像素值取出後
取前四碼再將後四碼補0後還原回去
可是試驗時
如果是只有一個PIXEL的圖時就沒問題
可是如果跑2*2的圖就會在這一行出現問題
Edit2->Text=AnsiString::StringOfChar('0',8-Edit2->Text.Length())+Edit2->Text;
訊息是
Access violation at address 32657D07 in module‘CC3260MT.DLL’.Write of address 00000000 可否請大家幫忙看看問題在那兒
謝謝 pork 上 void __fastcall TForm1::GetClick(TObject *Sender)
{
Graphics::TBitmap *Bmp1=new Graphics::TBitmap();
Graphics::TBitmap *Bmp2=new Graphics::TBitmap(); Bmp1->Assign(Image1->Picture->Bitmap); int n,temp,a[8],answer; for(int i=0;i
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
SubString(index,length)
中的 index 應該是 1 為底的,也就是,如果
AnsiString as="12345";
as.SubString(2,2) 結果是 "23"
所以,如果要取前 4 碼,應該是
SubString(1,4)
另外,AnsiString 使用 [] 同樣是 1 為底,不過很容易 Exception,需要很小心使用,例如:
AnsiString as="12345";
as[1]='1'
as[2]='2'
as[3]='3'
as[4]='4'
as[5]='5'
而如果您使用 as[0], 或 as[6] 則會發生 exception。 您此部分的程式碼:
answer=Edit5->Text[8]*1+Edit5->Text[7]*2+Edit5->Text[6]*4+Edit5->Text[5]*8
+Edit5->Text[4]*16+Edit5->Text[3]*32+Edit5->Text[2]*64+Edit5->Text[1]*128-12240;//算出pixel值
應該只是把文字轉數字吧... 使用
------
http://www.ViewMove.com |
pork
一般會員 發表:15 回覆:13 積分:5 註冊:2003-10-25 發送簡訊給我 |
dllee兄您好
感謝您的回覆
只是我是初學者
經過修改之後
問題還是存在
每次都是在下列這行出錯
Edit2->Text=AnsiString::StringOfChar('0',8-Edit2->Text.Length()) Edit2->Text;
訊息是
Access violation at address 32657D07 in module‘CC3260MT.DLL’.Write of address 00000000
真是搞不清楚問題所在
另外經過中斷點的測試
我的temp值很大
我想應該是在255以內(pixel_value[i][j]的值都在255以內)
但是卻是高達2568748....一大串的數字
會不會是這個原因
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
pork: 可是如果跑2*2的圖就會在這一行出現問題 Edit2->Text=AnsiString::StringOfChar('0',8-Edit2->Text.Length()) Edit2->Text; 訊息是 Access violation at address 32657D07 in module‘CC3260MT.DLL’.Write of address 00000000 可否檢查Edit2->Text.Length()是否大於八? int r=Edit2->Text.Length(); if (r < 0 ) r=0; Edit2->Text=AnsiString::StringOfChar('0',8-r) Edit2->Text; 另外: for (int p=n-1 ; p>=0 ; p--) { Edit2->Text = Edit2->Text a[p] ; //a[p]是整數型態 } 執行難到不出問題?請改為: Edit2->Text = Edit2->Text IntToStr(a[p]); 請參考!Andy Chang 發表人 - andychang1690 於 2004/10/18 00:20:16
------
Andy Chang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |