VBのWindowsストアアプリ入門

VB Tips And Sample(HOME)VBのWindowsストアアプリ入門

ストアアプリ

windows8でしか動かない、windows8の為のアプリケーション。
ストアアプリは、専用のAPIを使うので、限られた操作しかできないというより、今までのAPIを使いまわせない。その為、セキュリティーは安全に保たれるだろう。 まだ、そこまで行っていないので何ともいえないが、MSの審査があるので、エラーは少ない?

ともかく、管理人が学習がてら、どんなものを作ろうとしているのか紹介。
血圧帳というもので、複数ユーザが、自分の血圧等を登録、グラフ表示、平均表示などするもの。
使用するものは、windows8、VS Express for windows8。
データはXMLで保存。ストアアプリは、SQLServer等にはつながらないそうだ。WEBサーバ経由ならいけそうだけど。SQLiteなら大丈夫らしい。
データの保存場所は、AppData\Local\Packages\BloodPressure3_kwmcxzszfer2y(←これはある程度は決められる一意の値)\LocalState内等になる。
画面は2画面。
ユーザ登録、選択画面と、血圧データ入力表示画面。
メイン画面
メイン画面
入力表示画面
入力表示画面
日付取得用・カレンダー
日付ピッカー
処理分岐のメッセージボックス
メッセージボックス
等。
結局ここまで、1ヶ月半かかったが、まだ意味不明のエラーがあり、悪戦苦闘中だ。
感想と言えば、MSのサンプルはあるけど、分かり難いサンプルだな~。
もっと単純に作ってくれ~。読み手の問題?
エラーの情報が少ないので、一度エラーに遭遇すると解決に時間がかかる。
など。
と言うわけで、リリースを目指しつつ、ぼちぼちまとめて行きたいと考えています。
2013年2月23日

シリアライズ

ページ間のデータを任意のオブジェクトでNaviagteのパラメータで渡すと、中断・シャットダウンの時、エラーに見舞われます。
と言うわけで、任意のオブジェクトを、テキスト化して渡すように変更。
というわけで、ストアアプリでよく使う基本の、データをXMLにシリアライズして、デシリアライズして読み込むサンプル。
型 'System.InvalidOperationException' の初回例外が System.Xml.dll で発生しました。
System.InvalidOperationException: XML ドキュメント (0,0) でエラーが発生しました。 ---> System.Xml.XmlException: ルート要素が見つかりません。
there is an error in xml document (0 0)
等のエラーは、★の箇所をチェックしてみましょう。


Public Class ONJClass
    Public id As Integer
    Public value As String
End Class

   Private Sub Button_Click_3(sender As Object, e As RoutedEventArgs)
        Try


            Dim onj As New ONJClass
            onj.id = 0
            onj.value = "テストテストテストテストテストテストテスト"

            Dim ms As New System.IO.MemoryStream

            'XmlSerializerオブジェクトを作成
            Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(ONJClass))
            'メモリストリームにシリアライズして書き込む
            serializer.Serialize(ms, onj)
            '★これが重要!
            ms.Position = 0
            'メモリストリームから読み込む
            Dim sr As New System.IO.StreamReader(ms)
            Dim txt As String = sr.ReadToEnd.ToString

            'メモリストリームを作成
            Dim ms2 As New System.IO.MemoryStream
            'ライターを作成
            Dim sr2 As New System.IO.StreamWriter(ms2)
            '書き込む
            sr2.Write(txt)
            '★これが重要!
            sr2.Flush()
            '★これが重要!
            ms2.Position = 0

            'メモリストリームからデシリアライズ
            Dim onj2 As ONJClass = CType(serializer.Deserialize(ms2), ONJClass)

            Debug.Print(onj2.value)

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString)
        End Try
    End Sub




VB Tips And Sample(HOME)VBのWindowsストアアプリ入門