Index: /BasicCompiler32/Compile_Var.cpp
===================================================================
--- /BasicCompiler32/Compile_Var.cpp	(revision 68)
+++ /BasicCompiler32/Compile_Var.cpp	(revision 69)
@@ -857,5 +857,5 @@
 		*(_int64 *)(initGlobalBuf+offset)=i64data;
 	else if(type==DEF_LONG||type==DEF_DWORD||IsPtrType(type)){
-		if(type==DEF_PTR_CHAR&&lpCalcIndex==LITERAL_STRING){
+		if(type==typeOfPtrChar&&lpCalcIndex==LITERAL_STRING){
 			//文字列定数のとき
 
@@ -1047,5 +1047,5 @@
 	}
 	else if(type==DEF_LONG||type==DEF_DWORD||IsPtrType(type)){
-		if(type==DEF_PTR_CHAR&&lpCalcIndex==LITERAL_STRING){
+		if(type==typeOfPtrChar&&lpCalcIndex==LITERAL_STRING){
 			//文字列定数のとき
 
Index: /BasicCompiler32/NumOpe.cpp
===================================================================
--- /BasicCompiler32/NumOpe.cpp	(revision 68)
+++ /BasicCompiler32/NumOpe.cpp	(revision 69)
@@ -205,5 +205,4 @@
 							type[sp]=DEF_OBJECT;
 							index_stack[sp]=(LONG_PTR)pobj_StringClass;
-							bUseHeap[sp]=1;
 							bLiteralCalculation=0;
 
@@ -214,5 +213,5 @@
 
 
-					type[sp]=DEF_PTR_CHAR;
+					type[sp]=typeOfPtrChar;
 					index_stack[sp]=LITERAL_STRING;
 					bLiteralCalculation=0;
Index: /BasicCompiler32/VarList.cpp
===================================================================
--- /BasicCompiler32/VarList.cpp	(revision 68)
+++ /BasicCompiler32/VarList.cpp	(revision 69)
@@ -47,5 +47,5 @@
 	}
 	else{
-		if(type==DEF_PTR_CHAR||type==MAKE_PTR_TYPE(DEF_BYTE,1)){
+		if(type==MAKE_PTR_TYPE(DEF_SBYTE,1)||type==MAKE_PTR_TYPE(DEF_BYTE,1)){
 			if(ReadProcessMemory(hDebugProcess,(void *)offset,&dwData,sizeof(DWORD),&dwAccessByte)){
 				for(i2=0;;i2++){
Index: /BasicCompiler64/Compile_Var.cpp
===================================================================
--- /BasicCompiler64/Compile_Var.cpp	(revision 68)
+++ /BasicCompiler64/Compile_Var.cpp	(revision 69)
@@ -899,5 +899,5 @@
 			*(float *)(initGlobalBuf+offset)=(float)dbl;
 	else if(type==DEF_INT64||type==DEF_QWORD||IsPtrType(type)){
-		if(type==DEF_PTR_CHAR&&lpCalcIndex==LITERAL_STRING){
+		if(type==typeOfPtrChar&&lpCalcIndex==LITERAL_STRING){
 			//文字列定数のとき
 
@@ -1048,5 +1048,5 @@
 	}
 	else if(type==DEF_INT64||type==DEF_QWORD||IsPtrType(type)){
-		if(type==DEF_PTR_CHAR&&lpCalcIndex==LITERAL_STRING){
+		if(type==typeOfPtrChar&&lpCalcIndex==LITERAL_STRING){
 			//文字列定数のとき
 
Index: /BasicCompiler64/NumOpe.cpp
===================================================================
--- /BasicCompiler64/NumOpe.cpp	(revision 68)
+++ /BasicCompiler64/NumOpe.cpp	(revision 69)
@@ -14,6 +14,6 @@
 	//////////////////////////////////////////////////////
 
-		char *parameter = (char *)malloc( lstrlen( lpszText ) + 3 );
-		lstrcpy( parameter, lpszText );
+		char *parameter = (char *)malloc( lstrlen( lpszText ) + 32 );
+		sprintf( parameter, "\"%s\"%c%c*Char", lpszText, 1, ESC_AS );
 		SetStringQuotes( parameter );
 
@@ -222,5 +222,4 @@
 							type[sp]=DEF_OBJECT;
 							index_stack[sp]=(LONG_PTR)pobj_StringClass;
-							bUseHeap[sp]=1;
 							bLiteralCalculation=0;
 
@@ -233,5 +232,5 @@
 					}
 
-					type[sp]=DEF_PTR_CHAR;
+					type[sp]=typeOfPtrChar;
 					bLiteralCalculation=0;
 
Index: /BasicCompiler64/varlist.cpp
===================================================================
--- /BasicCompiler64/varlist.cpp	(revision 68)
+++ /BasicCompiler64/varlist.cpp	(revision 69)
@@ -49,5 +49,5 @@
 	}
 	else{
-		if(type==DEF_PTR_CHAR||type==MAKE_PTR_TYPE(DEF_BYTE,1)){
+		if(type==MAKE_PTR_TYPE(DEF_SBYTE,1)||type==MAKE_PTR_TYPE(DEF_BYTE,1)){
 			if(ReadProcessMemory(hDebugProcess,(void *)offset,&pData,sizeof(void *),&stAccBytes)){
 				for(i2=0;;i2++){
Index: /BasicCompiler_Common/BasicCompiler.cpp
===================================================================
--- /BasicCompiler_Common/BasicCompiler.cpp	(revision 68)
+++ /BasicCompiler_Common/BasicCompiler.cpp	(revision 69)
@@ -692,5 +692,8 @@
 
 		//Unicode
-		else if( lstrcmp( temp2, "unicode" ) ==0 ) isUnicode = true;
+		else if( lstrcmp( temp2, "unicode" ) ==0 ){
+			isUnicode = true;
+			typeOfPtrChar = MAKE_PTR_TYPE(DEF_WORD,1);
+		}
 
 		//埋め込み型コンパイラビュー
Index: /BasicCompiler_Common/BasicCompiler.h
===================================================================
--- /BasicCompiler_Common/BasicCompiler.h	(revision 68)
+++ /BasicCompiler_Common/BasicCompiler.h	(revision 69)
@@ -83,4 +83,5 @@
 BOOL bDll;
 bool isUnicode = false;
+int typeOfPtrChar = MAKE_PTR_TYPE(DEF_SBYTE,1);
 
 char *basbuf;
Index: /BasicCompiler_Common/BasicFixed.h
===================================================================
--- /BasicCompiler_Common/BasicFixed.h	(revision 68)
+++ /BasicCompiler_Common/BasicFixed.h	(revision 69)
@@ -63,5 +63,4 @@
 #define PTR_LEVEL_DOWN(t)	t = MAKE_PTR_TYPE(NATURAL_TYPE(t),PTR_LEVEL(t)-1)
 
-#define DEF_PTR_CHAR	MAKE_PTR_TYPE(DEF_CHAR,1)
 #define DEF_PTR_OBJECT	MAKE_PTR_TYPE(DEF_OBJECT,1)
 #define DEF_PTR_STRUCT	MAKE_PTR_TYPE(DEF_STRUCT,1)
Index: /BasicCompiler_Common/NumOpe_GetType.cpp
===================================================================
--- /BasicCompiler_Common/NumOpe_GetType.cpp	(revision 68)
+++ /BasicCompiler_Common/NumOpe_GetType.cpp	(revision 69)
@@ -389,5 +389,5 @@
 					}
 
-					type[sp]=DEF_PTR_CHAR;
+					type[sp]=typeOfPtrChar;
 					bLiteralCalculation=0;
 				}
Index: /BasicCompiler_Common/Subroutine.cpp
===================================================================
--- /BasicCompiler_Common/Subroutine.cpp	(revision 68)
+++ /BasicCompiler_Common/Subroutine.cpp	(revision 69)
@@ -460,5 +460,5 @@
 	_int64 i64data;
 	type = StaticCalculation( true, temporary, 0, &i64data, &lpIndex );
-	if( type != DEF_PTR_CHAR ){
+	if( type != typeOfPtrChar ){
 		SetError(1,NULL,NowLine);
 		return;
@@ -483,5 +483,5 @@
 	if( temporary[0] ){
 		type = StaticCalculation( true, temporary, 0, &i64data, &lpIndex );
-		if( type != DEF_PTR_CHAR ){
+		if( type != typeOfPtrChar ){
 			SetError(1,NULL,NowLine);
 			return;
Index: /BasicCompiler_Common/calculation.cpp
===================================================================
--- /BasicCompiler_Common/calculation.cpp	(revision 68)
+++ /BasicCompiler_Common/calculation.cpp	(revision 69)
@@ -524,5 +524,5 @@
 						StrPtr[pnum][i2]=0;
 
-						type[pnum]=DEF_PTR_CHAR;
+						type[pnum]=typeOfPtrChar;
 						before_index[pnum]=LITERAL_STRING;
 					}
@@ -538,5 +538,5 @@
 						StrPtr[pnum][i2]=0;
 
-						type[pnum]=DEF_PTR_CHAR;
+						type[pnum]=typeOfPtrChar;
 						before_index[pnum]=LITERAL_STRING;
 					}
Index: /BasicCompiler_Common/common.h
===================================================================
--- /BasicCompiler_Common/common.h	(revision 68)
+++ /BasicCompiler_Common/common.h	(revision 69)
@@ -89,4 +89,5 @@
 extern int cp;
 extern bool isUnicode;
+extern int typeOfPtrChar;
 
 
Index: /BasicCompiler_Common/preprocessor.cpp
===================================================================
--- /BasicCompiler_Common/preprocessor.cpp	(revision 68)
+++ /BasicCompiler_Common/preprocessor.cpp	(revision 69)
@@ -26,7 +26,16 @@
 		free( ppFilePath );
 	}
-	bool IsIncluded( const char *FilePath ){
-		for( int i = 0; i < count; i++ ){
-			if( lstrcmpi( ppFilePath[i], FilePath ) == 0 ){
+	bool IsIncluded( const char *includeFilePath ){
+		// '/' → '\\'
+		char tempPath[MAX_PATH];
+		lstrcpy( tempPath, includeFilePath );
+		for( int i=0; tempPath[i]; i++ ){
+			if( tempPath[i] == '/' ){
+				tempPath[i] = '\\';
+			}
+		}
+
+		for( int i=0; i<count; i++ ){
+			if( lstrcmpi( ppFilePath[i], tempPath ) == 0 ){
 				return true;
 			}
@@ -34,12 +43,21 @@
 		return false;
 	}
-	void Add( const char *FilePath ){
+	void Add( const char *includeFilePath ){
+		// '/' → '\\'
+		char tempPath[MAX_PATH];
+		lstrcpy( tempPath, includeFilePath );
+		for( int i=0; tempPath[i]; i++ ){
+			if( tempPath[i] == '/' ){
+				tempPath[i] = '\\';
+			}
+		}
+
 		//既に読み込まれているとき
-		if( IsIncluded( FilePath ) ) return;
+		if( IsIncluded( tempPath ) ) return;
 
 		//追加
 		ppFilePath = (char **)realloc(ppFilePath, ( count + 1 ) * sizeof(char *) );
-		ppFilePath[count] = (char *)malloc( lstrlen(FilePath) + 1 );
-		lstrcpy( ppFilePath[count], FilePath );
+		ppFilePath[count] = (char *)malloc( lstrlen(tempPath) + 1 );
+		lstrcpy( ppFilePath[count], tempPath );
 		count++;
 	}
@@ -84,7 +102,4 @@
 	}
 
-	// TODO: 削除
-	add( "__STRING_IS_NOT_ALWAYS_UNICODE" );
-
 	char temporary[255];
 	sprintf(temporary,"_AB_VER%d",MAJOR_VER);
Index: /ProjectEditor/SubOperation.cpp
===================================================================
--- /ProjectEditor/SubOperation.cpp	(revision 68)
+++ /ProjectEditor/SubOperation.cpp	(revision 69)
@@ -419,12 +419,12 @@
 	else if(str[0]=='b'||str[0]=='B'){
 		if(lstrcmpi(str,"Beep")==0) return COM_BEEP;
-		if(lstrcmpi(str,"Boolean")==0) return -1;
+		if(lstrcmp(str,"Boolean")==0) return -1;
 		if(lstrcmpi(str,"ByRef")==0) return -1;
 		if(lstrcmpi(str,"ByVal")==0) return -1;
-		if(lstrcmpi(str,"Byte")==0) return -1;
+		if(lstrcmp(str,"Byte")==0) return -1;
 	}
 	else if(str[0]=='c'||str[0]=='C'){
 		if(lstrcmpi(str,"Case")==0) return -1;
-		if(lstrcmpi(str,"Char")==0) return -1;
+		if(lstrcmp(str,"Char")==0) return -1;
 		if(lstrcmpi(str,"ChDir")==0) return COM_CHDIR;
 		if(lstrcmpi(str,"Circle")==0) return COM_CIRCLE;
@@ -444,6 +444,6 @@
 		if(lstrcmpi(str,"Dim")==0) return COM_DIM;
 		if(lstrcmpi(str,"Do")==0) return COM_DO;
-		if(lstrcmpi(str,"Double")==0) return -1;
-		if(lstrcmpi(str,"DWord")==0) return -1;
+		if(lstrcmp(str,"Double")==0) return -1;
+		if(lstrcmp(str,"DWord")==0) return -1;
 	}
 	else if(str[0]=='e'||str[0]=='E'){
@@ -480,6 +480,6 @@
 		if(lstrcmpi(str,"Inherits")==0) return COM_INHERITS;
 		if(lstrcmpi(str,"Input")==0) return COM_INPUT;
-		if(lstrcmpi(str,"Int64")==0) return -1;
-		if(lstrcmpi(str,"Integer")==0) return -1;
+		if(lstrcmp(str,"Int64")==0) return -1;
+		if(lstrcmp(str,"Integer")==0) return -1;
 		if(lstrcmpi(str,"Interface")==0) return COM_INTERFACE;
 	}
@@ -491,5 +491,5 @@
 		if(lstrcmpi(str,"Line")==0) return COM_LINE;
 		if(lstrcmpi(str,"Locate")==0) return COM_LOCATE;
-		if(lstrcmpi(str,"Long")==0) return -1;
+		if(lstrcmp(str,"Long")==0) return -1;
 		if(lstrcmpi(str,"Loop")==0) return COM_LOOP;
 	}
@@ -501,4 +501,5 @@
 		if(lstrcmpi(str,"Next")==0) return COM_NEXT;
 		if(lstrcmpi(str,"New")==0) return -1;
+		if(lstrcmpi(str,"Nothing")==0) return -1;
 	}
 	else if(str[0]=='o'||str[0]=='O'){
@@ -517,5 +518,5 @@
 	}
 	else if(str[0]=='q'||str[0]=='Q'){
-		if(lstrcmpi(str,"QWord")==0) return -1;
+		if(lstrcmp(str,"QWord")==0) return -1;
 	}
 	else if(str[0]=='r'||str[0]=='R'){
@@ -525,8 +526,8 @@
 	}
 	else if(str[0]=='s'||str[0]=='S'){
-		if(lstrcmpi(str,"SByte")==0) return -1;
+		if(lstrcmp(str,"SByte")==0) return -1;
 		if(lstrcmpi(str,"Select")==0) return COM_SELECT;
 		if(lstrcmpi(str,"SelectCase")==0) return COM_SELECT;
-		if(lstrcmpi(str,"Single")==0) return -1;
+		if(lstrcmp(str,"Single")==0) return -1;
 		if(lstrcmpi(str,"Sleep")==0) return COM_SLEEP;
 		if(lstrcmpi(str,"Static")==0) return -1;
@@ -551,5 +552,5 @@
 		if(lstrcmpi(str,"Window")==0) return COM_WINDOW;
 		if(lstrcmpi(str,"With")==0) return COM_WITH;
-		if(lstrcmpi(str,"Word")==0) return -1;
+		if(lstrcmp(str,"Word")==0) return -1;
 		if(lstrcmpi(str,"Write")==0) return COM_WRITE;
 	}
