はじめましてよろしくお願いします。VB6.0使用。
ファイルシステムオブジェクトを使用してファイルを読み込み、その最後から
2行目の文字列取得したいのですが、一番最後の文字列が表示されてしまいます。
Dim objFileSystem As Object
Dim objFile As Object
Dim strFileName As String
Dim strRecBuff As String
Dim lngLineCounter As Integer
' 読み込むファイル名
strFileName = "data.dat"
' ファイルシステムオブジェクトへの参照
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
' ファイルを開く
Set objFile = objFileSystem.OpenTextFile(strFileName)
' ファイルの最後に達するまでループ
Do Until objFile.AtEndOfStream
' 読み込んだデータを変数に保存
strRecBuff = objFile.ReadLine
' ループ回数をカウントし、読み込んだ行数とする
lngLineCounter = lngLineCounter + 1
Loop
Debug.Print "読み込んだ行数 ="; lngLineCounter
Debug.Print strRecBuff
MsgBox "最後から2行目は何行目" & lngLineCounter - 1
' ファイルを閉じる
objFile.Close
' オブジェクトを解放
Set objFileSystem = Nothing
Set objFile = Nothing
本を読みながら勉強しているのですがよくわかりません。
よろしくお願いします。
まず、自分の書いたソースで
Do Until objFile.AtEndOfStream
' 読み込んだデータを変数に保存
strRecBuff = objFile.ReadLine
' ループ回数をカウントし、読み込んだ行数とする
lngLineCounter = lngLineCounter + 1
Loop
この部分は何をしているのかを説明してもらえますか?
で、このループが終了したときにはstrRecBuffには何が入っていますか?
ゆうさん有難うございます。
Do Until objFile.AtEndOfStream
' 読み込んだデータを変数に保存
strRecBuff = objFile.ReadLine
' ループ回数をカウントし、読み込んだ行数とする
lngLineCounter = lngLineCounter + 1
Loop
これでテキストファイルの中身が何行あるかカウントしています。
strRecBuffには一番最後の行が入っています。
最後から2行目の、或いは特定の文字列を検索したいのですが、あえて上記の
方法でも構いません。
>方法でも構いません。
方法でなくても構いません。
現在の行とは別に、一つ前の行も変数に覚えておくだけでは。
Do Until objFile.AtEndOfStream
'前回の「現在行」を、別の変数に退避
strPreviousBuffer = strCurrentBuffer
'「現在行」を更新
strCurrentBuffer = objFile.ReadLine
Loop
Debug.Print "[最後から2行目]"; strPreviousBuffer
Debug.Print "[一番 最後の行]"; strCurrentBuffer
Dental さん有難うございます。
自分自身不勉強です。
アドバイスを元に3行前まで読み込むソースにしました。
(読み込んだテキストファイルから改行文字を見つけて切り出すという
考えが色々出来そうですが今は自分は力不足でここまでです。)
どうもです。
Do Until objFile.AtEndOfStream
strRecBuff3 = strRecBuff
' 読み込んだデータを変数に保存
strRecBuff = objFile.ReadLine
strRecBuff2 = strRecBuff
strRecBuff = objFile.ReadLine
' ループ回数をカウントし、読み込んだ行数とする
lngLineCounter = lngLineCounter + 1
' Debug.Print strRecBuff
Loop
' Debug.Print "読み込んだ行数 ="; lngLineCounter
Debug.Print strRecBuff
Debug.Print strRecBuff2
Debug.Print strRecBuff3
ツイート | ![]() |