• ベストアンサー

ADVのような……

変数にテキストファイルを読み込ませ、 クリック毎にその内容を一行ずつ画面に表示する というものを作りたいのですが、どうしても上手くいきません。 いくつか講座のようなHPも見たのですが、混乱する一方で……。 何卒宜しくお願いします。 使用しているのはMicrosoft Visual Basic 2008です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

単純に、テキストファイルの内容を行ごとに読んでList(Of String)に 格納し、それを順に表示させるだけなら、 Form1にLabel1、Button1を貼り付けて、以下のコードを貼り付けて 動かしてみてください。 Public Class Form1 Dim sr As System.IO.StreamReader Dim txtList As New List(Of String) Dim currentIndex As Integer = 0 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim tmpStr As String = "" sr = New System.IO.StreamReader("?????.txt") 'ここは適宜変更してください Do tmpStr = sr.ReadLine txtList.Add(tmpStr) Loop Until sr.EndOfStream sr.Close() sr.Dispose() End Sub Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown If txtList.Count > 0 Then Label1.Text = txtList(0) currentIndex = 0 End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If currentIndex < txtList.Count - 1 Then currentIndex += 1 Label1.Text = txtList(currentIndex) End If End Sub End Class Buttonを押すたびに、テキストファイル内の次の行が表示されます。 ただ…ADVってアドベンチャーですよね? 本格的なものを考えるなら、こんなやり方じゃ全然ダメですね。 どの程度のを考えてらっしゃるのかわかりませんが、例えば、 管理用のデータとテキスト自体をバイナリで繋げたデータを準備して (データ作成にはツールを別途作った方がいいでしょうね)、 管理データに書かれたバイナリ上のテキスト位置と長さを取得して 随時ランダムアクセスでテキストを取得する等しないと、 大きなデータは扱いづらいし、分岐でランダムに別のテキストに 飛ぶ仕組みを作るのは厳しいと思います。 (どういう順でテキストを表示して、どういう風に分岐するのかは、  別途スクリプトやテキスト管理の仕組みを考えないと  いけないでしょう) 私はそっち系のプログラマじゃないので、推測でしか言えません けどね。

ryosan991
質問者

お礼

回答有難う御座います。 早速試してみたいと思います。 やはり、こんなやり方じゃ難しいですよね……。 教えてもらったものを参考に更に精進していこうと思います。

関連するQ&A