| タイトル | : 配列データの逆シリアル化で例外発生 |  
| 記事No | : 5746 |  
| 投稿日 | : 2007/06/29(Fri) 11:54 |  
| 投稿者 | : ダンボ  |  
 > My.Settingはプロジェクト独立? - ダンボ 07/06/25-12:09 No.5703 ) の続きです。
  「iniファイルはXMLに移行」することにし、Serializerクラスを利用しました。 (よねKENさんおっしゃるとおり簡単ですね。データ構造クラスを定義して読み書きですか) サンプルは下記から入手しました(DOBONさんありがとうございます)。 http://dobon.net/vb/dotnet/file/xmlserializer.html
  で、配列データがない場合はうまく行くのですが、配列Folders()を追加すると、書き込みOK・読み込み例外 が起きてしまいます。どこが悪いか分からないので、皆さんご指摘お願いします。
      Public Class CommonData         Public VER As String 'App Version         Public Sort As Short 'Sort type         Public PopUp As Short 'Popup speed         Public EForm As Short 'Explorer Form         Public DForm As String 'Date Form         Public OForm As String 'Order Form         Public Folders() As String 'Registered Folders         Sub New()       'Constructor             VER = "2.0"             Sort = 1             PopUp = 1             EForm = 1             DForm = "YYYYMMDD"             OForm = "000"             Folders = Nothing         End Sub     End Class     Public IniData As CommonData
      Public Function ReadIni() As CommonData         Dim Inifile As String ' 初期設定ファイルパス         Inifile = My.Application.Info.DirectoryPath & "\DEF.xml"         If PathFileExists(Inifile) = 0 Then             IniData = New CommonData         Else             Dim Serializer As _                 New System.Xml.Serialization.XmlSerializer(GetType(CommonData))             Dim FS As New System.IO.FileStream(Inifile, System.IO.FileMode.Open)             IniData = CType(Serializer.Deserialize(FS), CommonData)             FS.Close()         End If
     Public Function WriteIni() As Boolean         Dim Inifile As String ' 設定ファイルパス         Inifile = My.Application.Info.DirectoryPath & "\Def.xml"         Try             Dim Serializer As New System.Xml.Serialization.XmlSerializer(GetType(CommonData))             Dim FS As New System.IO.FileStream(Inifile, System.IO.FileMode.Create)             Serializer.Serialize(FS, IniData)             FS.Close()         Catch ex As Exception             MsgBox("AA")         End Try
  書き込まれたDef.xmlの内容。(ReadIniで読ませると例外発生します) <?xml version="1.0"?> <CommonData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">   <VER>1.0.18216</VER>   <Sort>0</Sort>   <PopUp>1</PopUp>   <EForm>0</EForm>   <DForm>YYYYMMDD</DForm>   <OForm>000</OForm>   <Folders>     <string>0=Folder0</string>     <string>1=Folder1</string>     <string>2=Folder2</string>     <string>3=Folder3</string>   </Folders> </CommonData> 
 
 |