テキストファイルの最後の数行を取得する
                                                        玄関へお回り下さい。
テキストファイルの最後の数行を取得する ゆう(U)さん投稿分  (075)
     

Option Explicit   'SampleNo=075 WindowsXP VB6.0(SP5) 2002.05.16
'======================================================
'テキストファイルの最後の数行を取得する fReadLastText 
'======================================================
' result = fReadLastText(FileName, [BuffLines], [MaxLength])
' 引数 FileName :テキストファイルのパス
'    BuffLines:取出す行数   (デフォルト:1)
'    MaxLength:最大レコード長(Byte)(デフォルト:100)
' 戻値 result :Variant型内部配列(文字列:1次元)
'------------------------------------------------------
'エラー処理はしていません(既存のファイルで読込み可のみ)
'------------------------------------------------------
Private Function fReadLastText(ByRef FileName As String, _
                    Optional ByVal BuffLines _
                    As Long = 1&, _
                    Optional ByVal MaxLength _
                    As Long = 100&) As Variant
  Dim strTemp()   As String
  Dim strReturn()  As String
  Dim intFileNumber As Integer
  Dim strFileName  As String
  Dim i As Long, j As Long, k As Long

  strFileName = FileName
  ReDim strTemp(0& To BuffLines - 1&)
  ReDim strReturn(0& To BuffLines - 1&)
  intFileNumber = FreeFile
  Open strFileName For Input As #intFileNumber
  i = LOF(intFileNumber) - ((BuffLines + 1&) * MaxLength)
  If i > 0& Then
    Seek #intFileNumber, i
  End If
  Do Until EOF(intFileNumber)
    j = j + 1&
    Line Input #intFileNumber, strTemp(j Mod BuffLines)
  Loop
  Close #intFileNumber

  For i = 1& To BuffLines
    strReturn(k) = strTemp((i + j) Mod BuffLines)
    k = k + 1
  Next i

  fReadLastText = strReturn
End Function


Private Sub Command1_Click()
  Dim varTemp As Variant
  Dim i    As Long
  Dim gn   As Long
  Text1.Text = ""
  gn = CLng(Text2.Text)
  varTemp = fReadLastText("Test.txt", gn, 100&)
  For i = LBound(varTemp) To UBound(varTemp)
    Text1.Text = Text1.Text & varTemp(i) & vbCrLf
  Next i
End Sub


Private Sub Text2_GotFocus()
  Text2.SelStart = 0
  Text2.SelLength = Len(Text2.Text)
End Sub




2002/05/16