Index: trunk/abdev/BasicCompiler32/Compile_Statement.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Statement.cpp	(revision 379)
+++ trunk/abdev/BasicCompiler32/Compile_Statement.cpp	(revision 380)
@@ -600,7 +600,4 @@
 	bool isError = false;
 
-	//レキシカルスコープをレベルアップ
-	compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR );
-
 	//第１パラメータを取得
 	char variable[VN_SIZE];
@@ -615,4 +612,7 @@
 	i=GetOneParameter(Parameter,i,collectionVar);
 
+	//レキシカルスコープをレベルアップ
+	compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR );
+
 	if( !GetVarType( variable, resultType, false ) )
 	{
@@ -626,5 +626,4 @@
 		// 未定義の場合は自動的に定義する
 		sprintf(temporary,"%s%c%c%s", variable, 1, ESC_AS, collectionType.GetActualGenericType(0).GetClass().GetFullName().c_str() );
-		MessageBox(0,temporary,"test",0);
 		OpcodeDim(temporary,DIMFLAG_INITDEBUGVAR);
 	}
@@ -653,6 +652,5 @@
 
 	// Currentプロパティから現在の値を取得
-	// TODO: 型指定が未完成
-	sprintf( temporary, "%s=%s.Current As String", variable, collectionVar );
+	sprintf( temporary, "%s=%s.Current", variable, collectionVar );
 	Compile( temporary );
 
Index: trunk/abdev/BasicCompiler64/Compile_Statement.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 379)
+++ trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 380)
@@ -490,4 +490,7 @@
 	i=GetOneParameter(Parameter,i,collectionVar);
 
+	//レキシカルスコープをレベルアップ
+	compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR );
+
 	if( !GetVarType( variable, resultType, false ) )
 	{
@@ -501,5 +504,4 @@
 		// 未定義の場合は自動的に定義する
 		sprintf(temporary,"%s%c%c%s", variable, 1, ESC_AS, collectionType.GetActualGenericType(0).GetClass().GetFullName().c_str() );
-		MessageBox(0,temporary,"test",0);
 		OpcodeDim(temporary,DIMFLAG_INITDEBUGVAR);
 	}
@@ -525,10 +527,6 @@
 	const PertialSchedule *pTempPertialSchedule = compiler.codeGenerator.op_je( 0, sizeof(long), true );
 
-	//レキシカルスコープをレベルアップ
-	compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR );
-
 	// Currentプロパティから現在の値を取得
-	// TODO: 型指定が未完成
-	sprintf( temporary, "%s=%s.Current As String", variable, collectionVar );
+	sprintf( temporary, "%s=%s.Current", variable, collectionVar );
 	Compile( temporary );
 
Index: trunk/abdev/BasicCompiler_Common/include/ver.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/ver.h	(revision 379)
+++ trunk/abdev/BasicCompiler_Common/include/ver.h	(revision 380)
@@ -6,6 +6,6 @@
 // バージョン付加文字列
 #ifdef _AMD64_
-#define VER_INFO		"(x64) (rev.382)"
+#define VER_INFO		"(x64) (rev.396)"
 #else
-#define VER_INFO		"(rev.382)"
+#define VER_INFO		"(rev.396)"
 #endif
Index: trunk/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 379)
+++ trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 380)
@@ -1227,4 +1227,5 @@
 	}
 
+	std::vector<const CClass *> classes;
 	const CClass *pClass = GetHashArrayElement( name.c_str() );
 	while( pClass )
@@ -1232,7 +1233,22 @@
 		if( pClass->IsEqualSymbol( namespaceScopes, name ) ){
 			//名前空間とクラス名が一致した
-			return pClass;
+			classes.push_back( pClass );
 		}
 		pClass = pClass->GetChainNext();
+	}
+	if( classes.size() > 0 )
+	{
+		// 複数の名前空間の中に同一のクラス名が存在する場合があるので、アクセス可能で尚且つ階層が一番深いものをチョイスする
+		pClass = classes.front();
+
+		BOOST_FOREACH( const CClass *pTempClass, classes )
+		{
+			if( pClass->GetNamespaceScopes().size() < pTempClass->GetNamespaceScopes().size() )
+			{
+				pClass = pTempClass;
+			}
+		}
+
+		return pClass;
 	}
 
Index: trunk/abdev/ProjectEditor/Common.h
===================================================================
--- trunk/abdev/ProjectEditor/Common.h	(revision 379)
+++ trunk/abdev/ProjectEditor/Common.h	(revision 380)
@@ -66,5 +66,5 @@
 #define APPLICATION_NAME "ActiveBasic 5.0"
 #define VERSION_APPLI_NAME APPLICATION_NAME
-#define VERSION_STRING "5.00.00 (rev.379)"
+#define VERSION_STRING "5.00.00 (rev.396)"
 
 #endif
Index: trunk/abdev/ProjectEditor/EndPairCommandComplement.cpp
===================================================================
--- trunk/abdev/ProjectEditor/EndPairCommandComplement.cpp	(revision 379)
+++ trunk/abdev/ProjectEditor/EndPairCommandComplement.cpp	(revision 380)
@@ -71,4 +71,5 @@
 	if(lstrcmpi(temporary,"Enum")==0) return COM_ENUM;
 	if(lstrcmpi(temporary,"For")==0) return COM_FOR;
+	if(lstrcmpi(temporary,"Foreach")==0) return COM_FOR;
 	if(lstrcmpi(temporary,"Function")==0) return COM_FUNCTION;
 	if(lstrcmpi(temporary,"Namespace")==0) return COM_NAMESPACE;
Index: trunk/abdev/ProjectEditor/SubOperation.cpp
===================================================================
--- trunk/abdev/ProjectEditor/SubOperation.cpp	(revision 379)
+++ trunk/abdev/ProjectEditor/SubOperation.cpp	(revision 380)
@@ -512,4 +512,5 @@
 		if(lstrcmpi(str,"Finally")==0) return -1;
 		if(lstrcmpi(str,"For")==0) return COM_FOR;
+		if(lstrcmpi(str,"Foreach")==0) return -1;
 		if(lstrcmpi(str,"Function")==0) return COM_FUNCTION;
 	}
Index: trunk/abdev/ProjectEditor/TextEditor_KeyEvent.cpp
===================================================================
--- trunk/abdev/ProjectEditor/TextEditor_KeyEvent.cpp	(revision 379)
+++ trunk/abdev/ProjectEditor/TextEditor_KeyEvent.cpp	(revision 380)
@@ -70,4 +70,5 @@
 		lstrcmpi(temporary,"Enum")==0||
 		lstrcmpi(temporary,"For")==0||
+		lstrcmpi(temporary,"Foreach")==0||
 		lstrcmpi(temporary,"Function")==0||
 		lstrcmpi(temporary,"Namespace")==0||
