Changeset 465 in dev for trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp
- Timestamp:
- Mar 24, 2008, 8:05:20 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp
r459 r465 5 5 6 6 #include "../BasicCompiler_Common/common.h" 7 8 BOOL GetErrorMsg(int num,const char *KeyWord,char *msg,int pos){9 extern HANDLE hHeap;10 int i2;11 char temporary[64];12 13 char tempKeyWord[1024];14 if(KeyWord){15 lstrcpy(tempKeyWord,KeyWord);16 for(i2=0;;i2++){17 if(tempKeyWord[i2]=='\0') break;18 if(tempKeyWord[i2]==1){19 GetDefaultNameFromES(tempKeyWord[i2+1],temporary);20 SlideString(tempKeyWord+i2+2,lstrlen(temporary)-2);21 memcpy(tempKeyWord+i2,temporary,lstrlen(temporary));22 }23 }24 }25 else{26 lstrcpy(tempKeyWord,"");27 }28 29 if(num==-1||num==-2) lstrcpy(msg,tempKeyWord); //部分エラー30 31 if(num==3){32 temporary[0]=tempKeyWord[0];33 for(i2=1;;i2++){34 if((!IsVariableChar(tempKeyWord[i2]))||i2>=255){35 temporary[i2]=0;36 break;37 }38 temporary[i2]=tempKeyWord[i2];39 }40 41 extern char **SynonymErrorWords;42 extern int SynonymErrorNum;43 for(i2=0;i2<SynonymErrorNum;i2++){44 if(lstrcmp(SynonymErrorWords[i2],temporary)==0) return 0;45 }46 47 #if defined(JPN)48 //日本語49 sprintf(msg,"\"%s\" 無効な識別子です",temporary);50 #else51 //英語52 sprintf(msg,"\"%s\" Invalid identifier.",temporary);53 #endif54 55 //重複エラー情報を追加56 SynonymErrorWords=(char **)HeapReAlloc(hHeap,0,SynonymErrorWords,(SynonymErrorNum+1)*sizeof(char *));57 SynonymErrorWords[SynonymErrorNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);58 lstrcpy(SynonymErrorWords[SynonymErrorNum],temporary);59 SynonymErrorNum++;60 }61 if(num==30){62 #if defined(JPN)63 //日本語64 if(temporary[0]) sprintf(msg,"\"%s\" の使い方が不正です",tempKeyWord);65 else lstrcpy(msg,"文法が間違っています");66 #else67 //英語68 if(temporary[0]) sprintf(msg,"How to use the \"%s\" is wrong.",tempKeyWord);69 else lstrcpy(msg,"Syntax Error.");70 #endif71 }72 73 74 /////////////////////75 // ワーニングエラー76 /////////////////////77 #if defined(JPN)78 ////////////////////79 //日本語80 ////////////////////81 if(num==-101) sprintf(msg,"[警告] %sに強制変換されています。データが失われる可能性があります。",tempKeyWord);82 if(num==-102) sprintf(msg,"[警告] %sに強制変換されています。",tempKeyWord);83 if(num==-103) sprintf(msg,"[警告] \"%s\" 型が指定されていません。Double型として扱います。",tempKeyWord);84 if(num==-104) sprintf(msg,"[警告] \"%s\" 戻り値の型が指定されていません。Double型として扱います。",tempKeyWord);85 if(num==-105) sprintf(msg,"[警告] 一時オブジェクトの解放を行えません。キャスト用オブジェクトを用意してください。",tempKeyWord);86 if(num==-106) sprintf(msg,"[警告] DLLファイル \"%s\" が見つかりません。",tempKeyWord);87 if(num==-107) sprintf(msg,"[警告] DLL関数 \"%s\" を参照できません。",tempKeyWord);88 if(num==-108) lstrcpy(msg,"[警告] Catch節、Finally節を持たない意味のないTryスコープです。");89 if(num==-120) sprintf(msg,"[警告] VarPtr関数の引数にオブジェクト インスタンスが指定されました。オブジェクトの先頭アドレスを取得したいときはObjPtr関数に切り替えをお願いします。m(__)m(この警告はVarPtr→ObjPtrへの切り替えが完了したら消します(切り替えは \"適材箇所に限り\" ですので、ご注意ください!))",tempKeyWord);90 #else91 #endif92 93 94 ///////////////95 // 一般エラー96 ///////////////97 98 #if defined(JPN)99 ////////////////////100 //日本語101 ////////////////////102 if(num==1) lstrcpy(msg,"文法が間違っています。");103 if(num==2) sprintf(msg,"左のオペランドが、左辺値になっていません。");104 //num==3は予約されています105 if(num==4) sprintf(msg,"%sの相互関係が一致しません。",tempKeyWord);106 if(num==5) sprintf(msg,"ダブルクォートの数が一致しません。");107 if(num==6) sprintf(msg,"\"%s\" ジャンプ先が不正です。",tempKeyWord);108 if(num==7) lstrcpy(msg,"DLL名が長すぎます(拡張子を含め、16文字以下にして下さい)。");109 if(num==8) lstrcpy(msg,"コンパイラが認識できない文字コードが含まれています。");110 if(num==9) sprintf(msg,"型が違います。");111 if(num==10) sprintf(msg,"\"%s\" のパラメータ指定が間違っています。",tempKeyWord);112 if(num==11) sprintf(msg,"\"%s\" 型が違います。",tempKeyWord);113 if(num==12) sprintf(msg,"%s の使い方が不正です。",tempKeyWord);114 if(num==13) sprintf(msg,"\"%s\" を参照できません。",tempKeyWord);115 if(num==14) sprintf(msg,"\"%s\" 配列指定が不正です。",tempKeyWord);116 if(num==15) sprintf(msg,"\"%s\" はすでに定義されています。",tempKeyWord);117 if(num==16) sprintf(msg,"\"%s\" 配列、またはポインタ以外の変数に添え字が指定されています。",tempKeyWord);118 if(num==17) sprintf(msg,"リソース データが不正です。");119 if(num==18) sprintf(msg,"\"%s\"はポインタ変数型です。文字列演算を指定することはできません。",tempKeyWord);120 if(num==19) sprintf(msg,"\"%s\"は値参照型です。ByVal指定することはできません。",tempKeyWord);121 if(num==20) lstrcpy(msg,"全角スペースが含まれています(全角スペースはコンパイラが認識できないので、半角スペースまたはタブ文字にしてください)。");122 if(num==21) sprintf(msg,"If制御のブロック指定が不正です。");123 if(num==22) sprintf(msg,"%s に対する End %s が見つかりません。",tempKeyWord,tempKeyWord);124 if(num==23) sprintf(msg,"リソース ファイル \"%s\" の読み込みに失敗。",tempKeyWord);125 if(num==24) lstrcpy(msg,"Export指定の関数のパラメータには実体オブジェクトを利用することはできません(BytePtr型などを利用して下さい)。");126 if(num==25) sprintf(msg,"DLL関数にオブジェクトを引き渡すことはできません(%s)。",tempKeyWord);127 if(num==26) sprintf(msg,"\"%s\" 戻り値の型が指定されていません。",tempKeyWord);128 if(num==27) sprintf(msg,"\"%s\" は定義されていません。",tempKeyWord);129 if(num==28) sprintf(msg,"構造体パラメータは参照渡しにしてください(%s)。",tempKeyWord);130 if(num==29) sprintf(msg,"配列ポインタを要素と同時に引渡すときは、ポインタ参照(ByRef)にしてください。");131 //num==30は予約されています132 if(num==31) sprintf(msg,"\"%s\" は構造体です(メンバの参照はピリオド \".\" で区切ってください)。",tempKeyWord);133 if(num==32) sprintf(msg,"\"%s\" は構造体ポインタです(メンバの参照は \"->\" で区切ってください)。",tempKeyWord);134 if(num==33) sprintf(msg,"定数式にリテラル値、または定数以外のものが含まれています。");135 if(num==34) sprintf(msg,"定数はモジュールレベルで宣言して下さい。");136 if(num==38) sprintf(msg,"\"%s\" 戻り値が存在しないプロシージャです。",tempKeyWord);137 if(num==39) sprintf(msg,"\"%s\" はオブジェクトポインタではありません(\"->\" 参照はできません)。",tempKeyWord);138 if(num==40) lstrcpy(msg,"DLL関数の戻り値としてオブジェクトを受け取ることはできません。");139 if(num==41) lstrcpy(msg,"初期データが不正です。");140 if(num==42) lstrcpy(msg,"閉じカッコ \")\" の後に不正な文字が含まれています。");141 if(num==43) lstrcpy(msg,"ダブルクォートの後に不正な文字が含まれています。");142 if(num==45) sprintf(msg,"実数に対して \"%s\" 演算子は利用できません。",tempKeyWord);143 if(num==46) lstrcpy(msg,"配列の添え字に整数以外の値が与えられています。");144 if(num==47) lstrcpy(msg,"As演算子の右辺値に型名以外の識別子が指定されています。");145 if(num==48) sprintf(msg,"%s演算子に対して型名が指定されています。",tempKeyWord);146 if(num==49) lstrcpy(msg,"添え字に整数以外の型が指定されています。");147 if(num==50) sprintf(msg,"%sに変換できません。",tempKeyWord);148 if(num==51) lstrcpy(msg,"オブジェクト、構造体のアラインメント値は 1, 2, 4, 8, 16 のいずれかでなければなりません。");149 if(num==52) sprintf(msg,"\"%s\" オーバーロードを解決できません。",tempKeyWord);150 if(num==53) sprintf(msg,"\"%s\" 出力ファイルの書き込みに失敗しました。実行されている可能性があります。",tempKeyWord);151 if(num==54) sprintf(msg,"対応する%sが存在しません。",tempKeyWord);152 if(num==55) sprintf(msg,"\"%s\" は対応するForステートメントで利用されるカウンタ変数ではありません。",tempKeyWord);153 if(num==56) lstrcpy(msg,"ゼロ割りが行われました。");154 if(num==57) lstrcpy(msg,"8進数のリテラル表記が不正です。");155 if(num==58) lstrcpy(msg,"16進数のリテラル表記が不正です。");156 if(num==59) sprintf(msg,"マニフェスト ファイル \"%s\" の読み込みに失敗。",tempKeyWord);157 if(num==60) lstrcpy(msg,"Staticステートメントはグローバル領域では使用できません。");158 if(num==61) sprintf(msg,"\"%s\" は定数です。書き込みアクセスはできません。",tempKeyWord);159 if(num==62) sprintf(msg,"グローバル領域でのReturnは禁止されています。",tempKeyWord);160 if(num==63) lstrcpy(msg,"名前空間が正しく閉じられていません。");161 if(num==64) sprintf(msg,"\"%s\" 無効な名前空間です。",tempKeyWord);162 if(num==65) sprintf(msg,"ローカル領域で%sは使用できません。",tempKeyWord);163 if(num==66) sprintf(msg,"%s 要求されている関数ポインタのパラメータまたは戻り値が一致しません。", tempKeyWord );164 if(num==67) sprintf(msg,"%s 要求されているデリゲートのパラメータまたは戻り値が一致しません。", tempKeyWord );165 if(num==68) sprintf(msg,"\"%s\" 不正な関数名です。", tempKeyWord);166 if(num==69) sprintf(msg,"\"%s\" 不正なメソッド名です。", tempKeyWord);167 if(num==70) lstrcpy(msg,"一つのTryに対して複数のFinallyを記述できません。");168 if(num==71) lstrcpy(msg,"Finallyの後ろにCatchを記述することはできません。");169 if(num==72) lstrcpy(msg,"Catchのパラメータの型が指定されていません。");170 if(num==73) lstrcpy(msg,"\"%s\" Catchのパラメータの型はクラス型でなければなりません。");171 if(num==74) sprintf(msg,"\"%s\" 型として認識できません。",tempKeyWord);172 173 174 //オブジェクト関連175 if(num==102) sprintf(msg,"\"%s\" オブジェクトは定義されていません。",tempKeyWord);176 if(num==103) sprintf(msg,"\"%s\" メンバは定義されていません。",tempKeyWord);177 if(num==104) sprintf(msg,"\"%s\" 参照方法が違います。",tempKeyWord);178 if(num==105) sprintf(msg,"\"%s\" 自身のクラスを継承することはできません。",tempKeyWord);179 if(num==106) sprintf(msg,"\"%s\" 存在しないクラスです。",tempKeyWord);180 if(num==107) sprintf(msg,"Privateメンバ \"%s\" にアクセスすることはできません。",tempKeyWord);181 if(num==108) sprintf(msg,"Protectedメンバ \"%s\" にアクセスすることはできません。",tempKeyWord);182 if(num==109) sprintf(msg,"Privateメンバ関数 \"%s\" を呼び出すことはできません。",tempKeyWord);183 if(num==110) sprintf(msg,"Protectedメンバ関数 \"%s\" を呼び出すことはできません。",tempKeyWord);184 if(num==111) lstrcpy(msg,"InheritsはClass定義内の先頭に記述する必要があります。");185 if(num==112) sprintf(msg,"\"%s\" はクラス型ではないため、初期パラメータを指定することはできません。",tempKeyWord);186 if(num==113) sprintf(msg,"\"%s\" コンストラクタへ渡すパラメータが不正です。",tempKeyWord);187 if(num==114) lstrcpy(msg,"デストラクタはパラメータを持てません。");188 if(num==115) lstrcpy(msg,"コンストラクタ及びデストラクタは戻り値を持てません。");189 //if(num==116) lstrcpy(msg,"コンストラクタ及びデストラクタはパブリックアクセスにしなければなりません。");190 if(num==117) lstrcpy(msg,"デストラクタの名前が \"~クラス名\" になっていません。");191 if(num==118) lstrcpy(msg,"参照する基底クラスが存在しません。");192 if(num==119) sprintf(msg,"\"%s\" メンバは基底クラスで定義されていません。",tempKeyWord);193 if(num==120) lstrcpy(msg,"デストラクトするオブジェクトの型が不明です。");194 if(num==121) lstrcpy(msg,"New演算子にはクラス以外の型を指定できません。");195 if(num==122) lstrcpy(msg,"Delete演算子にポインタ以外の型が指定されています。");196 if(num==123) lstrcpy(msg,"ループ継承が行われました。");197 if(num==124) lstrcpy(msg,"循環参照が行われました。");198 if(num==125) sprintf(msg,"\"%s\" は抽象クラスです。インスタンス化することはできません。",tempKeyWord);199 if(num==126) lstrcpy(msg,"オペレータのオーバーロードをクラスの外で行うことはできません。");200 if(num==127) lstrcpy(msg,"Override修飾子の指定が無い状況でオーバーライドを行うことはできません。");201 if(num==128) lstrcpy(msg,"オーバーライドを行うときはアクセシビリティを同一にしなければなりません。");202 if(num==129) sprintf(msg,"静的メンバ \"%s\" は定義されていません。",tempKeyWord);203 if(num==130) sprintf(msg,"\"%s\" はオブジェクト定数です。書き込みアクセスはできません。",tempKeyWord);204 if(num==131) lstrcpy(msg,"Const定義されたメソッド内でクラスメンバへの書き込みアクセスはできません。");205 if(num==132) lstrcpy(msg,"明示的なコンストラクタ呼び出しと初期値の指定を同時に行うことはできません。");206 if(num==133) lstrcpy(msg,"Thisに代入はできません。");207 if(num==134) lstrcpy( msg,"ObjPtr関数にはオブジェクト インスタンス以外を指定できません。" );208 if(num==135) lstrcpy( msg, "クラス以外の型を継承元として指定することはできません。" );209 if(num==136) sprintf( msg, "\"%s\" 非仮想関数に対してオーバーライドしようとしました。", tempKeyWord );210 if(num==137) lstrcpy(msg,"ImplementsはClass定義内の先頭に記述する必要があります。");211 if(num==138) sprintf(msg,"%s はインターフェイスではありません。Implementsできるのはインターフェイスに限ります。",tempKeyWord);212 if(num==139) sprintf(msg,"%s はインターフェイスではありません。",tempKeyWord);213 if(num==140) lstrcpy(msg,"Align修飾子を構造体以外の型に指定することはできません。");214 if(num==141) lstrcpy(msg,"Blittable修飾子をクラス以外の型に指定することはできません。");215 if(num==142) lstrcpy(msg,"不正なThis参照です。");216 217 //Enum関連218 if(num==150) sprintf(msg,"\"%s\" 値が定義されていません。",tempKeyWord);219 if(num==151) sprintf(msg,"\"%s\" 列挙リストに登録されていません。",tempKeyWord);220 221 //リンカ222 if(num==200) sprintf(msg,"\"%s\" 未解決です (リンク エラー)。",tempKeyWord);223 if(num==201) sprintf(msg,"\"%s\" の読み込みに失敗。",tempKeyWord);224 225 //原因不明226 if(num==300) lstrcpy(msg,"内部エラー");227 228 // ベースライブラリ不整合229 if( num == 400 ) sprintf( msg, "\"%s\" が存在しません。標準ライブラリの内容が古い可能性があります。", tempKeyWord );230 231 #else232 ////////////////////233 //英語234 ////////////////////235 if(num==1) lstrcpy(msg,"Syntax Error.");236 if(num==2) sprintf(msg,"Left operand must be l-value.");237 //num==3は予約されています238 if(num==4) sprintf(msg,"Correlation of %s is wrong.",tempKeyWord);239 if(num==5) sprintf(msg,"Correlation of double quotes is wrong.");240 if(num==6) sprintf(msg,"\"%s\" Label not found.",tempKeyWord);241 if(num==7) lstrcpy(msg,"The DLL name is too long. Must be 16 characters or less.");242 if(num==8) lstrcpy(msg,"The inaccurate characters are contained.");243 if(num==9) sprintf(msg,"Type is wrong.");244 if(num==10) sprintf(msg,"\"%s\" Rule of parameter is wrong.",tempKeyWord);245 if(num==11) sprintf(msg,"\"%s\" Type is wrong.",tempKeyWord);246 if(num==12) sprintf(msg,"\"%s\" Not a valid use.",tempKeyWord);247 if(num==13) sprintf(msg,"Cannot refer to \"%s\".",tempKeyWord);248 if(num==14) sprintf(msg,"\"%s\" Array argument(s) out of bound.",tempKeyWord);249 if(num==15) sprintf(msg,"\"%s\" is already defined.",tempKeyWord);250 if(num==16) sprintf(msg,"\"%s\" Argument(s) following variable which is not pointer or array.",tempKeyWord);251 if(num==17) sprintf(msg,"Invalid resource data.");252 if(num==18) sprintf(msg,"\"%s\" Invalid operation on a pointer variable.",tempKeyWord);253 if(num==19) sprintf(msg,"\"%s\" is already to be passed by value. You cannot use \"ByVal\".",tempKeyWord);254 if(num==21) sprintf(msg,"Wrong structure of \"If\" block.");255 if(num==22) sprintf(msg,"No matching \"End %s\" found for \"%s\".",tempKeyWord,tempKeyWord);256 if(num==23) sprintf(msg,"Cannot read the resource file \"%s\".",tempKeyWord);257 if(num==24) lstrcpy(msg,"Must not use String type as an argument for exported function. (Use BytePtr type instead.)");258 if(num==27) sprintf(msg,"\"%s\" Undefined procedure.",tempKeyWord);259 if(num==28) sprintf(msg,"\"%s\" Structure must not be passed by value. (Use \"ByRef\".)",tempKeyWord);260 if(num==29) sprintf(msg,"Array must not be passed by value. (Use \"ByRef\".)");261 //num==30は予約されています262 if(num==31) sprintf(msg,"\"%s\" is a struct. (Use period \".\" to refer to the members.)",tempKeyWord);263 if(num==32) sprintf(msg,"\"%s\" is a pointer of struct. (Use arrow \"->\" to refer to the members.)",tempKeyWord);264 if(num==33) sprintf(msg,"Constant formula has a thing that is not literal value or constant value.");265 if(num==34) sprintf(msg,"Constant formula must be defined in the module level.");266 if(num==38) sprintf(msg,"\"%s\" is a procedure without a return value.",tempKeyWord);267 if(num==39) sprintf(msg,"\"%s\" is not object pointer. \"->\" is invalid.",tempKeyWord);268 if(num==40) lstrcpy(msg,"Cannot set a object to return value.");269 if(num==41) lstrcpy(msg,"Init data is wrong.");270 if(num==42) lstrcpy(msg,"The inaccurate characters are contained after the closing parenthesis \")\".");271 if(num==43) lstrcpy(msg,"The inaccurate characters are contained after the double quote.");272 273 //オブジェクト関連274 if(num==102) sprintf(msg,"\"%s\" The object is not defined.",tempKeyWord);275 if(num==103) sprintf(msg,"\"%s\" The member is not defined.",tempKeyWord);276 if(num==104) sprintf(msg,"\"%s\" The reference character is different.",tempKeyWord);277 if(num==105) sprintf(msg,"\"%s\" An own class is not inheritable.",tempKeyWord);278 if(num==106) sprintf(msg,"\"%s\" It class is not defined.",tempKeyWord);279 if(num==107) sprintf(msg,"\"%s\" Cannot access the private member.",tempKeyWord);280 if(num==108) sprintf(msg,"\"%s\" Cannot access the protected member.",tempKeyWord);281 if(num==109) sprintf(msg,"\"%s\" Cannot call the private member.",tempKeyWord);282 if(num==110) sprintf(msg,"\"%s\" Cannot call the protected member.",tempKeyWord);283 if(num==111) lstrcpy(msg,"The Inherits phrase must be described to the 1st line of class module");284 if(num==112) sprintf(msg,"\"%s\" is not class object. Therefor you cannot set the parameter for constructor.",tempKeyWord);285 if(num==113) sprintf(msg,"\"%s\" The parameter for constructor is wrong.",tempKeyWord);286 if(num==114) lstrcpy(msg,"Destructor cannot have a parameter.");287 if(num==115) lstrcpy(msg,"Constructor and Destructor cannot have a return value.");288 if(num==116) lstrcpy(msg,"Constructor and Destructor must be public access.");289 if(num==117) lstrcpy(msg,"Destructors name must be \"~ClassName\".");290 if(num==118) lstrcpy(msg,"Super class is not found.");291 if(num==119) sprintf(msg,"\"%s\" The member is not defined in the super class.",tempKeyWord);292 293 //Enum関連294 if(num==150) sprintf(msg,"\"%s\" The value is not set",tempKeyWord);295 if(num==151) sprintf(msg,"\"%s\" is not found from enum lists.",tempKeyWord);296 297 //リンカ298 if(num==200) sprintf(msg,"\"%s\" Unknown error.",tempKeyWord);299 #endif300 301 return 1;302 }303 void SetError(int ErrorNum,const string &keyWord,int pos){304 SetError( ErrorNum, keyWord.c_str(), pos );305 }306 void SetError(int num,const char *KeyWord,int pos){307 extern HANDLE hHeap;308 extern HWND hMainDlg;309 extern ERRORINFO *pErrorInfo;310 extern int ErrorNum;311 char temporary[1024],temp2[1024],temp3[32];312 BOOL bFirst;313 int i2;314 315 extern BOOL bDebugRun;316 if(bDebugRun) return;317 318 if(num!=-2){319 //一般エラーまたは警告320 i2=0; //ここにブレークポイントをおく321 322 if(num>-100){323 //エラーのみ324 325 i2=0;326 327 if( num == 300 )328 {329 // 内部エラー330 i2=0;331 }332 }333 334 }335 336 if(!GetErrorMsg(num,KeyWord,temporary,pos)) return;337 338 if(ErrorNum==0){339 SetDlgItemText(hMainDlg,IDC_ERRORLIST,"");340 EnableWindow(GetDlgItem(hMainDlg,IDC_ERRORLIST),1);341 bFirst=1;342 }343 else bFirst=0;344 345 346 ////////////////////347 // エラー情報を追加348 pErrorInfo=(ERRORINFO *)HeapReAlloc(hHeap,0,pErrorInfo,(ErrorNum+1)*sizeof(ERRORINFO));349 350 if(pos==-1){351 pErrorInfo[ErrorNum].FileName=0;352 lstrcpy(temp2,temporary);353 }354 else{355 std::string dummyStr;356 compiler.GetObjectModule().GetCurrentSource().GetLineInfo( pos, pErrorInfo[ErrorNum].line, dummyStr );357 358 pErrorInfo[ErrorNum].FileName=(char *)HeapAlloc(hHeap,0,lstrlen(dummyStr.c_str())+1);359 lstrcpy(pErrorInfo[ErrorNum].FileName,dummyStr.c_str());360 361 _splitpath(pErrorInfo[ErrorNum].FileName,0,0,temp2,temp3);362 lstrcat(temp2,temp3);363 364 if(pErrorInfo[ErrorNum].line==-1)365 sprintf(temp2+lstrlen(temp2),"(no area) %s",temporary);366 else367 sprintf(temp2+lstrlen(temp2),"(%d) - %s",pErrorInfo[ErrorNum].line+1,temporary);368 }369 370 i2=GetWindowTextLength(GetDlgItem(hMainDlg,IDC_ERRORLIST));371 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_SETSEL,i2,i2);372 if(bFirst==0){373 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_REPLACESEL,0,(LPARAM)"\r\n");374 i2+=2;375 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_SETSEL,i2,i2);376 }377 SendDlgItemMessage(hMainDlg,IDC_ERRORLIST,EM_REPLACESEL,0,(LPARAM)temp2);378 379 std::string msg = temp2;380 if(num==-2){381 //コンパイルメッセージ382 //※何もしない383 extern int CompileMsgNum;384 CompileMsgNum++;385 }386 else{387 msg = (num>-100) ? "error - " : "warning - ";388 msg += temp2;389 if(num>-100){390 //警告ではなく、エラーの場合はエラーチェックフラグを立てる391 extern BOOL bError;392 bError=1;393 }394 else{395 extern int WarningNum;396 WarningNum++;397 }398 399 // ログに出力400 trace( msg );401 }402 403 std::cout << msg << endl;404 405 406 ErrorNum++;407 }408 void SetError(){409 SetError(300,NULL,cp);410 }411 void CompileMessage(const char *buffer){412 SetError(-2,buffer,-1);413 }414 7 415 8 #define STRING_SYSTEM_DECLAREHANDLE "*_System_DeclareHandle_" … … 444 37 445 38 extern int cp; 446 if(iWarning==1) SetError(-101,temporary,cp);447 else if(iWarning==2) SetError(-102,temporary,cp);448 else if(iWarning==3) SetError(50,temporary,cp);39 if(iWarning==1) compiler.errorMessenger.Output(-101,temporary,cp); 40 else if(iWarning==2) compiler.errorMessenger.Output(-102,temporary,cp); 41 else if(iWarning==3) compiler.errorMessenger.Output(50,temporary,cp); 449 42 } 450 43
Note:
See TracChangeset
for help on using the changeset viewer.