亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? error.cpp

?? 一個basic語言的解釋器
?? CPP
字號:
////////////////////////////////////////////
//                                        //
//    Error.cpp                           //
//    錯誤處理模塊                        //
//    接受系統錯誤報告并屏幕反饋給用戶    //
//    最后更新時間:2004年4月23日11:33    //
//                                        //
////////////////////////////////////////////



#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>

#include "Window.h"
#include "Error.h"

extern Window winEdit;

void ShowError
	(
	const ErrorType ErrorCode,	// 錯誤類型代碼
	const int LineNo,			// 發生錯誤的行號
	const char Extra[MaxY]		// 附加信息,變量、標識符等
	)
{
	char strTemp[MaxY];
	char Message[MaxY];

	// 置錯誤代碼
	Error = ErrorCode;

	if (NoShown)
	{
		// 不顯示錯誤模式

		return;
	}

	switch (ErrorCode)
	{
	case ErrorOpening:
		// 打開文件錯誤

		strcpy(Message, "Opening file error!");
		break;
	case ErrorSaving:
		// 存儲文件錯誤

		strcpy(Message, "Saving file error!");
		break;
	case ErrorNoFreeMemoryInEdit:
		// 在編輯狀態下無可用內存報告

		strcpy(Message, "No free memory. Reduce your codes.");
		break;
	case ErrorTooLong:
		// 不能再添加新的行

		strcpy(Message, "Cannot add a new line.");
		break;
	case ErrorPrint:
		// 打印錯誤

		strcpy(Message, "Print error.");
		break;
	case ErrorNoFreeMemoryInRun:
		// 在運行狀態下無可用內存報告

		strcpy(Message, "No free memory. Reduce your variables.");
		break;



	case ErrorUnwantedPart:
		// 語句后面有多余部分

		strcpy(Message, "Unwanted tail after line");
		break;
	case ErrorVar:
		// 非法的變量名

		strcpy(Message, "Invalid variable name");
		break;

	case ErrorMissingAS:
		// 缺少關鍵字AS

		strcpy(Message, "Missing AS after variable");
		break;
	case ErrorMissingVarType:
		// 缺少變量類型

		strcpy(Message, "Missing variable type");
		break;
	case ErrorMissingArraySize:
		// 缺少數組大小

		strcpy(Message, "Missing array range size");
		break;



	case ErrorExpression:
		// 表達式錯誤

		strcpy(Message, "Error in expression");
		break;
	case ErrorMissingExpression:
		// 缺少表達式

		strcpy(Message, "Missing expression");
		break;

	case ErrorPrintSeparate:
		// 非法的分隔符

		strcpy(Message, "Invalid separate symbol");
		break;
	case ErrorQuotation:
		// 字符串后缺少雙引號

		strcpy(Message, "Missing '\"' after string");
		break;



	case ErrorMustInteger:
		// 循環變量必須為整數

		sprintf(Message, "Must use integer variable '%s'", Extra);
		break;
	case ErrorUnmatchForVar:
		// NEXT后的循環變量不匹配

		sprintf(Message, "Unmatch loop variable '%s' after 'NEXT'", Extra);
		break;
	case ErrorMissingForVarGiveValue:
		// FOR語句中缺少賦值語句

		strcpy(Message, "Missing giving value to variable");
		break;
	case ErrorMissingTO:
		// FOR語句中缺少TO

		strcpy(Message, "Missing 'TO'");
		break;
	case ErrorMissingSTEP:
		// FOR語句中缺少STEP

		strcpy(Message, "Missing 'STEP'");
		break;
	case ErrorMissingNEXT:
		// 缺少NEXT

		strcpy(Message, "Missing 'NEXT' in program.");
		break;
	case ErrorUnwantedNEXT:
		// 多余的NEXT語句

		strcpy(Message, "Unwanted 'NEXT'");
		break;
	case ErrorUnwantedCONTINUE:
		// 多余的CONTINUE語句

		strcpy(Message, "Unwanted 'CONTINUE'");
		break;
	case ErrorUnwantedBREAK:
		// 多余BREAK語句

		strcpy(Message, "Unwanted 'BREAK'");
		break;
	case ErrorMoreFor:
		// 太多的FOR語句

		strcpy(Message, "Too many loops in program");
		break;
	case ErrorMoreNestFor:
		// 太多的循環嵌套哦

		strcpy(Message, "Too many nested loops in program");
		break;



	case ErrorMissingTHEN:
		// 缺少THEN

		strcpy(Message, "Missing 'THEN' or having unwanted tail");
		break;
	case ErrorMissingENDIF:
		// 缺少ENDIF

		strcpy(Message, "Missing 'END IF' in program.");
		break;
	case ErrorBool:
		// 布爾表達式錯誤

		strcpy(Message, "Boolean expression error");
		break;
	case ErrorUnwantedELSE:
		// 多余的ELSE

		strcpy(Message, "Unwanted 'ELSE'");
		break;
	case ErrorUnwantedENDIF:
		// 多余的ENDIF

		strcpy(Message, "Unwanted 'END IF'");
		break;
	case ErrorMoreIf:
		// 太多的IF語句

		strcpy(Message, "Too many 'IF' in program.");
		break;
	case ErrorMoreNestIf:
		// 太多的IF嵌套

		strcpy(Message, "Too many nested 'IF' in program.");
		break;



	case ErrorSubName:
		// 錯誤的過程名

		strcpy(Message, "Sub name error");
		break;
	case ErrorMissingSubName:
		// 缺少過程名

		strcpy(Message, "Missing sub name");
		break;
	case ErrorMissingENDSUB:
		// 缺少ENDSUB

		strcpy(Message, "Missing 'END SUB' in program.");
		break;
	case ErrorUnwantedENDSUB:
		// 多余的END SUB

		strcpy(Message, "Unwanted 'END SUB'");
		break;
	case ErrorUnwantedRETURN:
		// 多余的RETURN語句

		strcpy(Message, "Unwanted 'RETURN'");
		break;
	case ErrorMoreSub:
		// 太多的過程

		strcpy(Message, "Too many sub in program");
		break;
	case ErrorNoSuchSub:
		// 無法找到此過程

		sprintf(Message, "Can not find such sub '%s'", Extra);
		break;
	case ErrorSubPosition:
		// 過程內不得再定義過程

		strcpy(Message, "Sub position error");
		break;



	case ErrorMissingRange:
		// 數組變量中缺少下標

		strcpy(Message, "Missing range in array variable");
		break;
	case ErrorUnwantedComma:
		// 多余的逗號

		strcpy(Message, "Unwanted comma here");
		break;
	case ErrorRangeOverflow:
		// 數組下標溢出

		strcpy(Message, "Array variable range overflow");
		break;



	case ErrorLocatePara:
		// LOCATE參數個數錯誤

		strcpy(Message, "The bumber of locate parameter error");
		break;
	case ErrorCoordinate:
		// LOCATE語句中坐標錯誤

		strcpy(Message, "Coordinate in locate is wrong");
		break;



	case ErrorUndefined:
		// 變量未定義

		sprintf(Message, "Undefined variable '%s'", Extra);
		break;



	case ErrorDim:
		// 數組維數不匹配

		sprintf(Message, "Array dimension not match on '%s'", Extra);
		break;
	case ErrorMissingBracketInArray:
		// 數組使用時缺少右括號

		sprintf(Message, "Missing ')' at array variable %s", Extra);
		break;
	case ErrorMissingSubscript:
		// 數組缺少下標

		sprintf(Message, "Missing range subscript");
		break;



	case ErrorMissingVar:
		// 缺少變量

		strcpy(Message, "Missing variable name");
		break;



	case ErrorCannotDelArray:
		// 不能刪除數組變量的某個元素

		strcpy(Message, "Can not delete array element");
		break;



	case ErrorDelayTime:
		// 延遲時間錯誤

		strcpy(Message, "Time of delay error");
		break;



	case ErrorRND:
		// RND參數錯誤

		strcpy(Message, "RND parameter error");
		break;



	case ErrorZeroDivision:
		// 零做除數

		strcpy(Message, "Divided by zero");
		break;



	case ErrorSyntax:
		// 語法錯誤

		strcpy(Message, "Syntax error");
		break;



	case ErrorMissingParameter:
		// 在函數后面缺少參數

		strcpy(Message, "Missing parameter after function");
		break;



	case ErrorInput:
		// 輸入錯誤

		strcpy(Message, "Input not match");
		break;



	case ErrorSerious:
		strcpy(Message, Extra);
		exit(0);

	default:
		printf("No error message, add it. %d", Error);
		int Key;
		Receive(Key);
		break;
	}

	// 警報
	Sound();

	// 得到最終顯示信息
	char Mess[MaxY] = "";
	if (LineNo > -1)
	{
		sprintf(Mess, "%s at line %d", Message, LineNo + 1);
	}
	else
	{
		sprintf(Mess, " %s ", Message);
	}

	if (LineNo > -1)
	{
		// 有附帶行號信息

		puttext(1, 1, 80, 25, TextMirror);

		// 設置錯誤行為當前行
		TextX = LineNo;
		TextY = LengthOf(TextX);

		if (LineNo < x0 || LineNo >= x0 + winEdit.High())
		{
			// 超處當前屏

			x0 = LineNo;
			PrintText(winEdit.Top() + 1);
		}

		// 計算光標位置
		NowX = LineNo - x0 + winEdit.Top() + 1;
		NowY = winEdit.Left() + TextY + 1;

		ShowPosition();

		// 滾動垂直滾動條
		winEdit.ScrollVertical(TextX);
	}

	// 顯示錯誤窗口
	int Len = strlen(Mess);
	Window Error(6, (76 - Len) / 2 + 2, 10, (76 - Len) / 2 + Len + 5, true, false);
	char ErrorTitle[15] = "";
	sprintf(ErrorTitle, "Error %d#", ErrorCode);
	Error.SetTitle(ErrorTitle);
	Error.SetColor(WHITE, LIGHTGRAY, RED, LIGHTGRAY);
	Error.Add(Mess);
	Error.Show();
	Error.Wait();
	Error.Hide();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品77777竹菊影视小说| 丁香五精品蜜臀久久久久99网站| 日韩精品中文字幕一区| 久久综合丝袜日本网| 悠悠色在线精品| 国产精品亚洲第一区在线暖暖韩国| 色偷偷久久人人79超碰人人澡| 91精品国产综合久久香蕉的特点 | 91久久线看在观草草青青 | 欧美在线小视频| 久久免费看少妇高潮| 亚洲永久免费视频| 99精品一区二区| 久久精品视频免费| 美女在线视频一区| 欧美午夜一区二区| 亚洲欧美精品午睡沙发| 国产在线日韩欧美| 日韩一区二区在线观看视频播放| 亚洲日本乱码在线观看| 国产成人精品影视| 精品国产1区二区| 日本视频中文字幕一区二区三区| 99re6这里只有精品视频在线观看| 国产欧美视频在线观看| 韩国三级在线一区| 久久人人爽爽爽人久久久| 老司机免费视频一区二区| 一本久久精品一区二区| 成人免费高清在线观看| 卡一卡二国产精品| 国产精品毛片大码女人| av日韩在线网站| 丝袜诱惑亚洲看片| 日韩精品一区二区三区视频在线观看 | 日本va欧美va瓶| 欧美唯美清纯偷拍| 亚洲欧洲综合另类在线| 色呦呦日韩精品| 不卡视频在线看| 国产999精品久久久久久绿帽| 悠悠色在线精品| 国产馆精品极品| 日韩三区在线观看| 日产国产高清一区二区三区| 成人午夜视频免费看| 欧美日韩五月天| 国产精品一区二区久久不卡 | 欧美成人精品3d动漫h| 国产一区二区三区四| 成人开心网精品视频| 日韩精品一区二区三区老鸭窝| 欧美精品久久久久久久多人混战| 国产亚洲综合av| 国产精一品亚洲二区在线视频| 91网站在线观看视频| 亚洲人xxxx| 欧美日韩国产精品自在自线| 麻豆91免费观看| 国产精品久久久久国产精品日日| a在线欧美一区| 亚洲一区二区欧美激情| 91精品免费观看| 国产福利一区二区三区视频在线| 亚洲视频一区在线| 日韩一区二区不卡| 成人免费毛片片v| 婷婷国产在线综合| 久久女同精品一区二区| 一本色道亚洲精品aⅴ| 日本欧美一区二区三区乱码| 久久精品亚洲乱码伦伦中文| 欧美在线你懂得| 国产成人超碰人人澡人人澡| 亚洲自拍偷拍网站| 国产亚洲一区字幕| 欧美日韩久久一区二区| 成人国产在线观看| 美女视频第一区二区三区免费观看网站| 中国色在线观看另类| 欧美乱妇一区二区三区不卡视频| 成人a免费在线看| 紧缚奴在线一区二区三区| 亚洲精品高清在线| 日本一区二区三区视频视频| 制服丝袜亚洲精品中文字幕| 91免费看片在线观看| 国产精品一品视频| 日产国产欧美视频一区精品| 亚洲最大色网站| 国产精品―色哟哟| 精品捆绑美女sm三区| 5566中文字幕一区二区电影| 91视频91自| yourporn久久国产精品| 国产在线精品免费| 免费成人在线网站| 亚洲va韩国va欧美va| 一区二区三区精密机械公司| 国产精品短视频| 欧美国产丝袜视频| 国产视频不卡一区| 久久久www免费人成精品| 欧美tk丨vk视频| 亚洲综合久久久| 欧美精品在线观看一区二区| 93久久精品日日躁夜夜躁欧美| 日韩美女视频一区二区| 欧美人狂配大交3d怪物一区| 国产美女av一区二区三区| 亚洲视频资源在线| 国产亚洲精品福利| 欧美精三区欧美精三区| 国产一区二区三区免费观看| 亚洲免费资源在线播放| 亚洲精品五月天| 亚洲一区中文日韩| 精品日韩在线观看| 日韩一区二区高清| 欧美电影免费提供在线观看| 91精品欧美综合在线观看最新| 欧美美女喷水视频| 69堂成人精品免费视频| 日韩欧美一区二区不卡| 欧美mv和日韩mv国产网站| 日韩午夜激情免费电影| 精品三级在线观看| 国产婷婷精品av在线| 中文字幕高清一区| 日韩伦理电影网| 亚洲第一av色| 久久精品免费看| 国产成人免费视| 91老司机福利 在线| 欧美网站大全在线观看| 欧美人伦禁忌dvd放荡欲情| 日韩精品一区二区在线| 久久久久国色av免费看影院| 国产精品久久久久久久久动漫| 亚洲视频香蕉人妖| 午夜婷婷国产麻豆精品| 裸体歌舞表演一区二区| 国产成a人亚洲| 日本道精品一区二区三区| 欧美v日韩v国产v| 日韩毛片高清在线播放| 日本在线播放一区二区三区| 国产老肥熟一区二区三区| 99精品视频一区| 欧美日韩精品一区二区在线播放| 欧美成人精品高清在线播放| 中文字幕国产精品一区二区| 日韩精品乱码av一区二区| 国产成人午夜99999| 欧美中文字幕久久| 精品国产免费一区二区三区香蕉| 中文字幕av一区二区三区| 三级在线观看一区二区| 成人高清视频在线观看| 欧美一区2区视频在线观看| 中文字幕在线一区免费| 奇米色一区二区三区四区| 成人毛片在线观看| 欧美大胆一级视频| 亚洲影视在线观看| 国产不卡视频在线观看| 日韩视频免费直播| 亚洲精品乱码久久久久久黑人| 激情欧美一区二区三区在线观看| 色美美综合视频| 久久久久久久久免费| 日韩和欧美一区二区| 色综合咪咪久久| 国产丝袜欧美中文另类| 卡一卡二国产精品| 欧美日韩国产大片| 亚洲欧美日韩在线不卡| 国产成人av一区| 欧美videos中文字幕| 日韩精品电影在线| 欧美在线|欧美| 久久99精品国产.久久久久| 欧美怡红院视频| 亚洲女厕所小便bbb| 国产超碰在线一区| 国产人伦精品一区二区| 狠狠色综合播放一区二区| 91精品国产综合久久福利软件| 亚洲精品国产a久久久久久| 91丨porny丨最新| 国产精品毛片无遮挡高清| 国产一区二区美女| 精品国产一区二区三区不卡| 日本在线不卡一区| 日韩亚洲欧美一区二区三区| 日韩va亚洲va欧美va久久| 91麻豆精品国产91久久久久| 天堂精品中文字幕在线| 欧美一区二区免费观在线| 日本在线观看不卡视频|