プロシージャレベルからクラスレベルへ
投稿者 neptune  (社会人)
投稿日時
2009/5/21 07:58:17
簡単な例ですが、こんな感じ??でもいけそう。
ArrayListに構造体を収めている為ArrayListのCountプロパティで要素数は取れます。
例外処理はしてません。
ArrayListに構造体を収めている為ArrayListのCountプロパティで要素数は取れます。
例外処理はしてません。
Public Class Form1
Private Structure Words
Public jan As String
Public eng As String
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const sPath As String = "ファイルのパス"
Dim reader As New System.IO.StreamReader(sPath, System.Text.Encoding.Default)
Dim ary As ArrayList = New ArrayList()
Do
Dim wd As Words
Dim buf1 As String = reader.ReadLine()
wd.jan = buf1
Dim buf2 As String = reader.ReadLine() '二回readlineを使っているのは二行で一組と見なすため。
wd.eng = buf2
ary.Add(wd)
Loop Until reader.EndOfStream
reader.Close()
End Sub
End Class
投稿者 hitochan  (高校生)
投稿日時
2009/5/21 08:50:50
返答ありがとうございます!
arraylistに構造体を入れることなんてやったことありませんでした。
この方法ならCountプロパティで簡単に要素数を取得できるのいいですね!
採用させていただきます。
ありがとうございました。
arraylistに構造体を入れることなんてやったことありませんでした。
この方法ならCountプロパティで簡単に要素数を取得できるのいいですね!
採用させていただきます。
ありがとうございました。
早速ですが、今英単ゲームをつくっています。
その中で、まずはじめに単語データが管理してある「eitan.txt」からIO.Streamreaderクラスを用いて単語数を取得します。インスタンスの名前はreaderです。
---------eitan.txtの中身(まだ実験途中なのでここに書かれている単語は適当です。)-------------------------
食べる
eat
する
do
時計
clock
眠る
sleep
二酸化炭素
carbon dioxide
・
・
・
(以下略)
------------------------------------------------------------------------
単語数の取得は今の僕の技術では、
Do
reader.readline()
reader.readline() '二回readlineを使っているのは二行で一組と見なすため。
number + = 1 'Dim number as integerで宣言した。単語数を表す変数。
loop Until reader.EndOfStream
という具合に取得しています。(フォームのLoadイベントの先頭に記述)
この変数numberを利用して多次元配列tango(number-1,1)をクラスレベルで宣言したいのですが、
どう考えても僕の技術ではプロシージャレベルでの宣言しかできません。
プロシージャレベルの変数をクラスレベルに変更する方法があれば教えていただきたいのですが。
異なる方法で構いません。
多次元配列tango(number-1,1)はたとえば、tango(2,0)ならば2組目の単語の日本語を表し、
tango(2,1)ならば2組目の単語の英語を表します。
Express Edition 2008を使っています。
よろしくお願いします。