Ignore:
Timestamp:
Mar 24, 2008, 8:05:20 PM (17 years ago)
Author:
dai_9181
Message:

Messenger/ErrorMessengerクラスを導入。SetError関数によるエラー生成を廃止した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler_Common/error.cpp

    r459 r465  
    55
    66#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 #else
    51         //英語
    52         sprintf(msg,"\"%s\" Invalid identifier.",temporary);
    53 #endif
    54 
    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 #else
    67         //英語
    68         if(temporary[0]) sprintf(msg,"How to use the \"%s\" is wrong.",tempKeyWord);
    69         else lstrcpy(msg,"Syntax Error.");
    70 #endif
    71     }
    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 #else
    91 #endif
    92 
    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 #else
    232     ////////////////////
    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 #endif
    300 
    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         else
    367             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 }
    4147
    4158#define STRING_SYSTEM_DECLAREHANDLE "*_System_DeclareHandle_"
     
    44437
    44538    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);
    44942}
    45043
Note: See TracChangeset for help on using the changeset viewer.