• ベストアンサー

途中にEOFがあるファイルの読込

VB6でファイルを全行読み込んで任意の処理を行いたいのですが、そのファイルには 途中に文字コード 1a (つまりEOF)が入っている場合があります。 普通に Line Input で処理すると、その部分でファイル終了と判断し 読込を終えてしまいますが、その後のデータも読み込みたいのです。 どのようにすれば良いのでしょうか?

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

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

Private Sub コマンド0_Click()   Dim strTexts As String   Dim strText As String      strTexts = "1111" & Chr(13) & Chr(10) & Chr(26) & "2222"   FileWrite "C:\Temp\Text.txt", strTexts   Open "C:\Temp\Text.txt" For Input As #1   Do While Not EOF(1)     Line Input #1, strText     Debug.Print strText   Loop   Close #1   Debug.Print FileRead("C:\Temp\Text.txt")   ’ 1行目をリード   Debug.Print FileRead("C:\Temp\Text.txt")   ’ 次行をリード   Debug.Print FileRead("C:\Temp\Text.txt", -1) ’ ファイルを閉じる End Sub [イミディエイト] 1111 1111 ・2222 確かに、 LINE INPUT# では読めませんね! が、FileRead関数では読めました。 が、Chr(26)の除去コードが必要なようです。 Microsoft Scriprting Runtime を参照させる必要があります。 Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String On Error GoTo Err_FileRead   Static isOpen As Boolean   Static fso  As FileSystemObject   Static fil  As File   Static txs  As TextStream      If Not isOpen Then     isOpen = True     Set fso = New FileSystemObject     Set fil = fso.GetFile(FileName)     Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)   End If   FileRead = txs.ReadLine Exit_FileRead:   If Len(FileRead) = 0 Or isStop Then     isOpen = False     Set txs = Nothing     Set fil = Nothing     Set fso = Nothing   End If   Exit Function Err_FileRead:   Resume Exit_FileRead End Function

kenken_pa
質問者

お礼

こんな読み方もあるんですね。初めて知りました。ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A