記事の個別表示(修正可)
タイトル  文字の切り出し
本文  
 ファイルを1行読みだすと、早速何かの処理が必要になる。それが、個別データの分離だ。ファイルが作成されたのと全く同じ考えで、読み込むならば、区切りのデリミッタは同じで良いのであまり苦労はしない。所が、今回のログファイルの様に、使い方をこちらで勝手に決める場合は、データの切り出しに工夫が必要になる。

 今回紹介するルーチンは、デリミッタをその都度指定するので、そんな時に便利だと思う。もっとスマートで効率の良いルーチンを考えてくれると、うれしいですけどね。コメント投稿を期待したい。

 まず、文字位置を指定するポインターを定義する。

  Public iBegin As Integer    '切り出しの文字位置

使い方は、こうだ。
  fileno = FreeFile()
  FileOpen(fileno, filename, OpenMode.Input)
  i = 0
  Do Until EOF(fileno)
    recbuff = LineInput(fileno)
    iBegin = 1
    x1 = fn_get(recbuff, Chr(9))   
    x2 = fn_get(recbuff, " ")
    x3 = .........
  Loop
  FileClose(fileno)

で、そのfn_get() とは、

  Public Function fn_get(ByRef x1 As String, x2 As String) As String ' 文字の切り出し
  'x1は、対象文字、x2は、デリミッタ、iBeginは、文字位置であらかじめセット
    Dim n1 As Short
    If Mid(x1, iBegin, Len(x2)) = x2 Then
      fn_get = ""
      iBegin = iBegin + Len(x2)
    Else
      n1 = InStr(iBegin, x1, x2)
      If n1 = 0 Then
        fn_get = Mid(x1, iBegin, Len(x1) - iBegin)
        iBegin = Len(x1) + 1
      Else
        fn_get = Mid(x1, iBegin, n1 - iBegin)
        iBegin = n1 + Len(x2)
      End If
    End If
  End Function

 余計なお世話だが、変数の格納を
① Dim dt_data as New ArrayList  とするのか、
② Dim dt_data() as String とするのか、

 なかなかこれと言った決めての結論が出せずにいる。取りあえずは、大方は②で実現している。
...51525354555657585960...