Index: BasicCompiler_Common/Class.cpp
===================================================================
--- BasicCompiler_Common/Class.cpp	(revision 67)
+++ BasicCompiler_Common/Class.cpp	(revision 68)
@@ -372,9 +372,9 @@
 	//※オーバーライドされた関数を先にサーチする必要があるため、バックサーチを行う
 	for( int i=(int)methods.size()-1; i>=0; i-- ){
-		char *temp;
-		temp=methods[i]->psi->name;
+		SUBINFO *psi = methods[i]->psi;
+		char *temp = psi->name;
 		if(temp[0]==1&&temp[1]==ESC_OPERATOR){
 			if((BYTE)temp[2]==idOperatorCalc){
-				subs.push_back( methods[i]->psi );
+				subs.push_back( psi );
 			}
 		}
Index: BasicCompiler_Common/NumOpe_GetType.cpp
===================================================================
--- BasicCompiler_Common/NumOpe_GetType.cpp	(revision 67)
+++ BasicCompiler_Common/NumOpe_GetType.cpp	(revision 68)
@@ -376,6 +376,5 @@
 					if(pBaseType){
 						if(pBaseType->type==DEF_OBJECT){
-							if(IsStringSubsituation(pBaseType->u.pobj_Class)
-								|| IsStringObjectType(*pBaseType)){
+							if(IsStringObjectType(*pBaseType)){
 								//要求タイプがオブジェクトであり、Stringの受け入れが可能な場合
 								extern CClass *pobj_StringClass;
@@ -513,5 +512,12 @@
 						//////////
 
-						type[sp]=i2;
+						if(i2&FLAG_PTR){
+							//配列ポインタ
+							type[sp]=GetPtrType(i2^FLAG_PTR,index_stack[sp]);
+						}
+						else{
+							type[sp]=i2;
+						}
+
 						bLiteralCalculation=0;
 						sp++;
Index: BasicCompiler_Common/Variable.cpp
===================================================================
--- BasicCompiler_Common/Variable.cpp	(revision 67)
+++ BasicCompiler_Common/Variable.cpp	(revision 68)
@@ -211,5 +211,5 @@
 
 	//文字型
-	else if( lstrcmpi( TypeName, "Char" ) == 0 ) return DEF_CHAR;
+	//else if( lstrcmpi( TypeName, "Char" ) == 0 ) return DEF_CHAR;
 
 	//bool型
@@ -290,5 +290,5 @@
 
 	//文字型
-	else if(type==DEF_CHAR)				lstrcpy(name,"Char");
+	//else if(type==DEF_CHAR)				lstrcpy(name,"Char");
 
 	//bool型
Index: BasicCompiler_Common/preprocessor.cpp
===================================================================
--- BasicCompiler_Common/preprocessor.cpp	(revision 67)
+++ BasicCompiler_Common/preprocessor.cpp	(revision 68)
@@ -84,4 +84,7 @@
 	}
 
+	// TODO: 削除
+	add( "__STRING_IS_NOT_ALWAYS_UNICODE" );
+
 	char temporary[255];
 	sprintf(temporary,"_AB_VER%d",MAJOR_VER);
@@ -166,9 +169,9 @@
 }
 
-void preprocessor_ifdef(char *buffer,BOOL bndef){
+void preprocessor_ifdef(char *buffer,bool isNot){
 	int i,i2,i3;
 	char temporary[VN_SIZE];
 
-	if(bndef) i=lstrlen("#ifndef");
+	if(isNot) i=lstrlen("#ifndef");
 	else i=lstrlen("#ifdef");
 	while(buffer[i]==' '||buffer[i]=='\t') i++;
@@ -185,5 +188,5 @@
 	if(pobj_define->check(temporary)) sw=1;
 
-	if(bndef){
+	if(isNot){
 		//#ifndefのとき（反対にする）
 		if(sw) sw=0;
@@ -357,9 +360,9 @@
 			}
 			else if(_memicmp(buffer+i,"#ifdef",6)==0){
-				preprocessor_ifdef(buffer+i,0);
+				preprocessor_ifdef(buffer+i,false);
 				continue;
 			}
 			else if(_memicmp(buffer+i,"#ifndef",7)==0){
-				preprocessor_ifdef(buffer+i,1);
+				preprocessor_ifdef(buffer+i,true);
 				continue;
 			}
