OSDN Git Service

#36548 FIx not to cause NullReference Exception when DTXMania was used as DTXV mode
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 14 Aug 2016 15:35:46 +0000 (15:35 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 14 Aug 2016 15:35:46 +0000 (15:35 +0000)
#xxxxx Add try-catch foropening System/resources.csv

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@1032 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs
DTXManiaプロジェクト/コード/全体/CResources.cs

index 37bf777..60011f7 100644 (file)
@@ -478,7 +478,8 @@ namespace DTXMania
 \r
                                // PANELの設定は、base.On活性化()の後に(actPanelの活性化の後)行うこと。\r
                                // さもないと、actPanelが活性化されていないため、パネル文字列の設定が機能しなくなる。\r
-                               string strLabel = CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.Instance.stage選曲.n確定された曲の難易度 ];\r
+                               string strLabel = (CDTXMania.Instance.stage選曲.r確定された曲 == null)?\r
+                                       null : CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.Instance.stage選曲.n確定された曲の難易度 ];\r
                                string strPanel = CDTXMania.Instance.DTX.TITLE;\r
                                //string strSETDEFlabel = CDTXMania.Instance.stage選曲.r確定された曲.strタイトル;\r
                                if ( !string.IsNullOrWhiteSpace( strLabel ) && !strPanel.Contains(strLabel)\r
index a645823..4584764 100644 (file)
@@ -34,7 +34,7 @@ namespace DTXMania
                                if ( strLanguageCode == "" || strLanguageCode == null )\r
                                {\r
                                        string s = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;\r
-                                       if ( s == "" || !csvHeader.Contains( s+".title" ) )\r
+                                       if ( s == "" || csvHeader == null || !csvHeader.Contains( s+".title" ) )\r
                                        {\r
                                                strLanguageCode = "default";\r
                                        }\r
@@ -52,7 +52,7 @@ namespace DTXMania
                                if ( value == "" || value == null )\r
                                {\r
                                        string s = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;\r
-                                       if ( s == "" || !csvHeader.Contains( s + ".title" ) )\r
+                                       if ( s == "" || csvHeader == null || !csvHeader.Contains( s + ".title" ) )\r
                                        {\r
                                                strLanguageCode = "default";\r
                                        }\r
@@ -63,7 +63,7 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       if ( !csvHeader.Contains( value + ".title" ) )\r
+                                       if ( csvHeader == null || !csvHeader.Contains( value + ".title" ) )\r
                                        {\r
                                                strLanguageCode = "default";\r
                                        }\r
@@ -211,12 +211,20 @@ namespace DTXMania
         public void LoadResources(string language = "")\r
         {\r
                        // 参考: http://dobon.net/vb/dotnet/file/readcsvfile.html\r
+                       Microsoft.VisualBasic.FileIO.TextFieldParser tfp;\r
+                       try\r
+                       {\r
+                               tfp = new Microsoft.VisualBasic.FileIO.TextFieldParser(\r
+                                               csvFileName,\r
+                                               System.Text.Encoding.Unicode\r
+                               );\r
+                       }\r
+                       catch ( System.IO.FileNotFoundException e )\r
+                       {\r
+                               Trace.TraceError( "言語情報ファイル System/resources.csv が見つかりませんでした。" + e.Message );\r
+                               return;\r
+                       }\r
 \r
-                       Microsoft.VisualBasic.FileIO.TextFieldParser tfp =\r
-                               new Microsoft.VisualBasic.FileIO.TextFieldParser(\r
-                                       csvFileName,\r
-                                       System.Text.Encoding.Unicode\r
-                       );\r
                        //フィールドが文字で区切られているとする\r
                        //デフォルトでDelimitedなので、必要なし\r
                        tfp.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;\r