テキストファイルの最後の行を表すには?

解決


トニー  2002-11-30 00:26:37  No: 105556  IP: [192.*.*.*]

テキストファイルの中の一行をランダムに表示させたいのですが、そのとき最後の行番号は動的に変化するので、どのように表示させたらよいのかわかりません。
ご存知の方が居られれば教えてください。
よろしくお願いします。

編集 削除
Say  2002-11-30 01:26:25  No: 105557  IP: [192.*.*.*]

テキストがそんなに大きくないなら、ReadAllで一気読みし、
vbCrLfをデリミタにしてSplitし、UBoundとLboundの間で
乱数作って配列要素を選択すればいいでしょう。

テキストが大きいなら、一度空読みして行数を数え、
その範囲で乱数作って、乱数で指定された位置まで空読みして
目的行を取得すればよろしいかと・・・。

編集 削除
トニー  2002-11-30 17:00:32  No: 105558  IP: [192.*.*.*]

Sayさん、ご回答ありがとうございます。

いろいろ調べて、solit関数などの使い方はわかったのですが、UboundとLboundの間で乱数を作るというのがまだよく分かりません。
できれば、もう少し詳しく教えて頂けないでしょうか。

また、行番号を使わなくてもランダムに選べる方法があれば、分かる人誰かお願いします。

編集 削除
Say  2002-11-30 17:44:16  No: 105559  IP: [192.*.*.*]

Option Base = 1 でない限り
Splitで取得した配列のLBoundは0でしょうから、
Int(Rnd() * (UBound(配列名) + 1))で生成できます。

編集 削除
旅人  2002-11-30 20:44:36  No: 105560  IP: [192.*.*.*]

>Option Base = 1 でない限り
>Splitで取得した配列のLBoundは0でしょうから

Option Base = 1 でも LBound の最小値は 0 だったと思うのですが?

編集 削除
旅人  2002-11-30 20:51:01  No: 105561  IP: [192.*.*.*]

>Option Base = 1 でも LBound の最小値は 0 だったと思うのですが?

すみません。私の勘違いです。 ごめんなさい。

編集 削除
トニー  2002-12-01 00:03:59  No: 105562  IP: [192.*.*.*]

うぅ・・・すいませんが、VBは始めたばかりなのでよくわかりませんでした・・・。
要は、プレーヤーが打ち込んだ言葉を保存したテキストファイルから、ランダムにその中の1つを選ぶプログラムを作りたいんです・・。
紛らわしい書き方してすいませんでした。
何か簡単な方法があれば、教えてください。

編集 削除
oku  URL  2002-12-01 02:45:44  No: 105563  IP: [192.*.*.*]

下に簡単なソースを書きます。

Private Sub Command1_Click()
    Dim intFileNo   As Integer
    Dim intIndex    As Integer
    Dim strArray()  As String

    intFileNo = FreeFile
    'ファイルを開く
    Open "C:\TEST.TXT" For Input As #intFileNo
    'ファイルの終わりまでループ
    Do Until EOF(intFileNo)
        '配列を中身を保持したまま再定義する
        ReDim Preserve strArray(intIndex)
        '1行読む&配列に格納
        Line Input #intFileNo, strArray(intIndex)
        intIndex = intIndex + 1
    Loop
    Close #intFileNo

    Randomize
    'UBound(strArray) = 配列の最大値(ファイルの最終行)
    'Int(配列の最大値 * Rnd) = 0 から 配列の最大値までの乱数を発生
    'strArray(0 から 配列の最大値までの乱数を発生) = ランダムに1行を選択
    MsgBox strArray(Int(UBound(strArray) * Rnd))
End Sub

こんな感じで良いですか?

編集 削除
トニー  2002-12-01 12:49:07  No: 105564  IP: [192.*.*.*]

ありがとうございます!
ついにできました!!
うちのはVB.NETなので、それ風に書き直したらできました。
皆さん本当にありがとうございました。

編集 削除