-2

乱数を生成し、テキスト ファイルの各行の数字をチェックして、乱数が既に生成されているかどうかを確認するコードを作成しようとしています。テキスト ファイルで生成された数値をチェックするコード以外はすべてあります。何か案は?

これが私がこれまでに持っているコードです:

    Dim Rlo As New IO.StreamReader("C:\Users\Somebody\Documents\Visual Studio 2012\Projects\RobloxRecruitV1\RobloxRecruitV1\bin\Debug\" & TheFileName.Text & ".txt")

    Dim firstLine As String
    'read first line
    firstLine = Rlo.ReadLine()
    'read secondline
    TheText.Text = Rlo.ReadLine()

    rndnumber = New Random
    number = rndnumber.Next(firstLine, TheText.Text)
    TextBox1.Text = number.ToString
4

1 に答える 1

1

正確なコードをお伝えすることはできません (VB6 で何かをするのは久しぶりです...)

しかし....

ストリーム リーダーを使用するのは間違ったアプローチだと言えます。

ストリーム リーダーは、まさにその名前が示すとおりです。データの絶え間ないストリーム。開始され、最後に到達すると停止します。

ストリーム内をある程度シークできることは事実ですが、この場合、それは実際に必要なことではありません。

必要なのは、ファイルのすべての行をメモリ内配列またはある種のハッシュ テーブルにロードすることです。そうすれば、タスクは単純に、特定のインデックスが存在するかどうかを確認することになります。

ディスク上のファイルをそのまま使用する以外に選択肢がない場合 (たとえば、サイズ制限のため)、必要なアプローチは次のとおりです。

1) ファイルを開く 2) 先頭に位置を設定する 3) 連続行を読み取るループに入る 4) 探しているカウントに対応する行を取得したら、ファイルを閉じて終了する 5) 行がなくなるまでループバックする左 6) ファイルを閉じる

開いて閉じてから、毎回リセットすることが重要です。これは、ファイルのどこから開始するかを毎回正確に知るためです。理論的には、ファイルを開いたままにして位置をリセットすることができますが、私の考えでは危険な場合があります特に、他のプロセスがそれに書き込んでいる場合。

ファイルがそれほど大きくない場合は、メモリ内のアプローチを選択し、ファイルをロードし、メモリ内の行配列で操作を実行してから、終了する前に保存します。

于 2013-05-26T14:38:10.537 に答える