一個class運行錯誤,about borlanmm.dll (已爬文) |
答題得分者是:taishyang
|
chrislove87
一般會員 發表:11 回覆:14 積分:5 註冊:2007-05-09 發送簡訊給我 |
昨天剛寫了一個class,當下跑都沒問題..
今天忘記改了些什麼 就出現了address的borlandmm.dll錯誤 爬文說,include memmgr及include sharemen都沒辦法 只能來此請教板上先進了>< 程式碼如下 [code cpp] #pragma hdrstop #include "ShareMem.hpp" #include "Unit2.h" #include #define max(a,b) ((a) > (b) ? (a) : (b)) #define min(a,b) ((a) < (b) ? (a) : (b)) //--------------------------------------------------------------------------- #pragma package(smart_init) class THMMD { private: public: float **hmmd; int w; int h; void Delete() { for(int i=0;i } THMMD(int x,int y) { w = x; h = y; hmmd = new float *[h]; for(int i=0;i for(int j=0;j hmmd[i][j]=0.0; } } } void rgb2hmmd(Graphics::TBitmap *temp) //主程式使用了這個函式 { float R,G,B; Byte *ptr; for(int i=0;i ptr = (Byte *)temp->ScanLine[i]; for(int j=0;j B = ptr[j*3]; G = ptr[j*3 1]; R = ptr[j*3 2]; //float ss=0,hs=0,hue=0; float hue=0; float maxq=max(max(R,G),B); float minq=min(min(R,G),B); float diff=maxq-minq; //彩度diff float sum=(maxq minq)/2;//明亮度sum if((R==255)&&(G==0)&&(B==255)) { hmmd[i][j]=999; continue; } if(maxq-minq==0) hue=0; else { if((maxq==R)&&(G>B)) hue=60*((G-B)/(maxq-minq)); else if((maxq==R)&&(G else if(G==maxq) hue=60*(2.0 (B-R)/(maxq-minq)); else hue=60*(4.0 (R-G)/(maxq-minq)); } int sub=0,hs[4]={1,4,4,4},ss[4]={8,4,1,1}; if((diff > 0)&&(diff <7)) sub=0; if((diff > 6)&&(diff <21)) sub=1; if((diff > 20)&&(diff <61)) sub=1; if((diff > 60)&&(diff <111)) sub=2; if((diff > 110)&&(diff <256)) sub=3; int tmp=0; if (sub!=0) { for(int i=0;i { tmp=tmp (hs[i]*ss[i]); } } else tmp=0; int a=(hue/(360/hs[sub])); int b=((32-tmp)/hs[sub]); int c=(sum/(256/ss[sub])); hmmd[i][j]= tmp a*b c; } } delete ptr; //然後break在這邊 } } //刪除了delete ptr那行 結果break在這邊 [/code] 編輯記錄
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
1. for i = xxx 內迴圈不適宜再使用 i 作為變數
2. delete ptr,那 new 在哪? ===================引 用 chrislove87 文 章=================== 昨天剛寫了一個class,當下跑都沒問題.. 今天忘記改了些什麼 就出現了address的borlandmm.dll錯誤 爬文說,include memmgr及include sharemen都沒辦法 只能來此請教板上先進了>< 程式碼如下 [code cpp] #pragma hdrstop #include "ShareMem.hpp" #include "Unit2.h" #include #define max(a,b) ((a) > (b) ? (a) : (b)) #define min(a,b) ((a) < (b) ? (a) : (b)) //--------------------------------------------------------------------------- #pragma package(smart_init) class THMMD { private: public: float **hmmd; int w; int h; void Delete() { for(int i=0;i[/code] |
chrislove87
一般會員 發表:11 回覆:14 積分:5 註冊:2007-05-09 發送簡訊給我 |
您好:
關於1.的問題,的確是我疏忽了,我將i改為其他變數。 關於第二點,我在迴圈前宣告了Byte *ptr,確實沒有new,是應該寫成Byte *ptr=new Byte 這樣嗎? 我試過寫成這樣 結果他出現一樣的錯誤,break在class最後的" };" 這行,沒有在函式裡break 還是想不出問題點ˊˋ懇請版上先進們指教 ===================引 用 syntax 文 章=================== 1. for i = xxx 內迴圈不適宜再使用 i 作為變數 2. delete ptr,那 new 在哪? |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
chrislove87
一般會員 發表:11 回覆:14 積分:5 註冊:2007-05-09 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
chrislove87
一般會員 發表:11 回覆:14 積分:5 註冊:2007-05-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |