掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
データを保存して表示するには? (ID:108040)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
前回の実行結果を保存させておきたいなら、それらをファイルなどに 保存しておき、次回実行時には、それを読み込ませる必要がありますね。 ファイルへの保存と、ファイルからの復元を行う場合は、 「シリアライズ」という処理を行います。 (ヘルプの『基本的なシリアル化』という項を参照してください) 例えば、プレイヤー名と点数の一覧を保存させるために、 <Serializable()> Public Structure ScoreInfo Public Name As String 'プレイヤー名 Public Score As Integer '点数 Public Sub New(ByVal Name As String) MyClass.Name = Name MyClass.Score = 0 End Sub Public Sub New(ByVal Name As String, ByVal Score As Integer) MyClass.Name = Name MyClass.Score = Score End Sub End Structure という構造体を作成しておくとします。 そして、プレイヤーは複数人になりますので、それらを Public ScoreBoard() As ScoreInfo という配列に保存しておくことにします。 この時、構造体の先頭にある「Serializable」属性を忘れないで下さい。 これが無いと、シリアル化が自動的に行われないため、構造体の内容を、 一括して読み書きする事ができなくなります。 # シリアル化しない場合、各メンバごとに入出力処理を記述していかなくては # いけないので、非常に面倒な事になってしまいます。(^^; さて、実際の保存処理についてです。 まず、ScoreBoard() As ScoreInfo に、各プレイヤーの名前と得点を 格納してあきます。例えば、最初に作成する時は、 ReDim ScoreBoard(2) ScoreBoard(0) = New ScoreInfo("Aさん", 153) ScoreBoard(1) = New ScoreInfo("Bさん", 180) ScoreBoard(2) = New ScoreInfo("Cさん", 221) などとしておき、その点数を書き換えるときは、 ScoreBoard(1).Score = 300 などとします。 そしてこの配列をファイル化するためには、FileStream を使います。 まず、FileStreamを使いやすくするために、コードの先頭で、 Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary という宣言を行っておいて下さい。 実際に保存する際には、 Dim Formatter As New BinaryFormatter() Dim FileStream As FileStream FileStream = New FileStream("C:\Test.dat", FileMode.Create) Formatter.Serialize(FileStream, ScoreBoard) FileStream.Close() のように記述します。これで、"C:\Test.dat" というファイルが 新規に作成され、そこに ScoreBoard の内容が保存されます。 逆に、保存したファイルの内容を読み込むには、 Dim Formatter As New BinaryFormatter() Dim FileStream As FileStream FileStream = New FileStream("C:\Test.dat", FileMode.Open) ScoreBoard = DirectCast(Formatter.Deserialize(FileStream), ScoreInfo()) FileStream.Close() のようになります。これで、"C:\Test.dat" というファイルが 読み込まれ、それを ScoreBoard へと復元させる事ができます。 実際には、「ファイルが存在しない」時などに発生するエラーを 処理するために、Tryステートメントを併用する必要があるでしょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.