1

私は Visual Basic (および一般的なコーディング) にかなり慣れていないので、本当に単純な間違いを犯した場合はお知らせください。
現在、vb.net コードでかなり奇妙な問題が発生しています。ファイルストリームはファイルを正しく開いて読み取ることができますが、コードがファイルの先頭から一連の行を読み取ることができる一方で、メモ帳でファイルを手動で開くと、そうではありません。コードは次のとおりです。

    Dim fs, f, s 'filesystemobject, file, stream.
    fs = CreateObject("Scripting.FileSystemObject")
    f = fs.GetFile(CurrDataPath) ' This change made to ensure the correct file is opened
    s = f.OpenAsTextStream(1, 0) ' 1 = ForReading, 0 = as ASCII (which i think is right?)
    Dim param(14) As String
    Dim line As String
    line = s.ReadLine()
    While i <= 14
        i += 1
        MessageBox.Show(line)
        line = s.ReadLine()
    End While

(配列は悪い考えだと読んだことがありますが、配列は便利で、問題を引き起こさなかったので、とにかく使用しています。)
奇妙なことは、このコードを実行すると、(メッセージ ボックス) は、私が見たい情報を表示してくれます - これは決して悪いことではありません。私が欲しい情報は次のようになります。

BEGINPARAM  
parameter1, 0  
parameter2, 7.5  
ENDPARAM

編集: を使用した後Path.GetFullPath(DFile)、同じ名前の異なるディレクトリに 2 つのファイルがあることがわかりましたDFile。メモ帳で開いていたファイルは、保存されるはずのディレクトリに保存されていましたが、コードが読み取っていたファイルは VB プロジェクトのフォルダーに保存されていました。期待されるパスを含む
コードを依存するように変更すると、コードはメモ帳で行ったのとまったく同じようにファイルから読み取られました。 メモ帳でワードラップをオンにしているので、それが問題ではないことはわかっていますが、メモ帳++の入手を検討します。 DFile という名前のファイルは、C++ プログラムで作成されます。ファイルの一部が残りの部分とは異なるフォルダーに書き込まれる理由を調べるために、このファイルを詳しく調べます。CurrDataPath

明らかに、私は何か重要なものを見逃しています。誰かが助けてくれれば、それは素晴らしいことです.
*注: これは vb6 移行プロジェクトであるため、誰かに尋ねられたら、古いコードを提供できます。

4

2 に答える 2

1

VB.Net の最新バージョンを想定すると、最新の書き方は次のようになります。

For Each line As String In File.ReadLines(CurrDataPath).Take(14)
   MessageBox.Show(line)
Next
于 2013-08-16T23:54:36.127 に答える