Board logo

標題: 如何可以抓到檔案的最後一筆資料? [打印本頁]

作者: linshin1999    時間: 2011-1-5 12:46     標題: 如何可以抓到檔案的最後一筆資料?

我想取得最後一筆資料的 Record Number, 找遍了MSDN 上的有關 BOTTOM 的資訊,但是没找到,現在只好用土法鍊鋼的方法如下所示:

Dim tmp As String
Dim inx As Integer
Dim inf_sr As StreamReader = New StreamReader(inf)
        Do While inf_sr.Peek() >= 0
            inx += 1
            tmp = inf_sr.ReadLine()
        Loop
inf_sr.Close()


我要知道 inx 的值,各位大大有没有人知道更進步的方法?

作者: 暗黑    時間: 2011-1-5 14:29

我也是這樣子玩的,因為它是字串的觀念,不是陣列的觀念,所以它讀檔是循序的...
作者: linshin1999    時間: 2011-1-5 14:42

那就是這樣子了,暗黑大大在 VB 的索引檔如何操作? 以前我是這樣寫的:

OPEN FILENAME FOR RANDOM AS #8 LEN = 15


CLOSE #8

作者: 暗黑    時間: 2011-1-5 15:20

Dim TextStr As New System.IO.StreamReader(FileTxt, System.Text.Encoding.Default)
Dim Ia As Long = 0
   Do While TextStr.Peek > -1
     Dim Data As String = TextStr.ReadLine
     Ia +=1
     SELECT CASE IA
        CASE  1
           Dim 日期 As String = Mid(Data, 1, 8)
           Dim 時間 As String = Mid(Data, 9, 6)
        CASE ELSE
            Dim 日期 As String = Mid(Data, 1, 8)
            Dim 時間 As String = Mid(Data, 9, 6)
     END SELECT
   Loop

我的用法 ...  你參考看看..
作者: linshin1999    時間: 2011-1-5 15:44

暗黑大大,這過程會一筆一筆的讀,如果我的檔案有1000筆,然後要隨機讀取1000筆內的任一筆資料,要如何寫?
作者: 暗黑    時間: 2011-1-5 16:29

任一筆喔..
dim  XoX as long = 99    '任一筆

SELECT CASE IA
        CASE  XoX
           Dim 日期 As String = Mid(Data, 1, 8)
           Dim 時間 As String = Mid(Data, 9, 6)
        CASE ELSE
            Dim 日期 As String = Mid(Data, 1, 8)
            Dim 時間 As String = Mid(Data, 9, 6)
     END SELECT
作者: linshin1999    時間: 2011-1-6 09:10

暗黑兄:這樣是篩選不是直接讀取,可能的方式是,將檔案放進陣中宜直接索引指定,反正現在的記憶體都很大.
作者: 暗黑    時間: 2011-1-6 13:12

那你設定一個 datatable 吧
作者: linshin1999    時間: 2011-1-6 16:24

本帖最後由 linshin1999 於 2011-1-6 16:44 編輯

可是的原始資料是".txt"檔,目前還不知道如轉換成datatable, 所以就直接放進陣列來處理, 暗黑兄如你知道可教我呼,會很感謝你?
作者: 暗黑    時間: 2011-1-6 17:08

本帖最後由 暗黑 於 2011-1-6 17:10 編輯

datatable  是資料表...  說穿了  也是一個陣列
dtattable  的好處是  有很多的指令...  缺點..佔記億体較大  , 且  txt  資料並非是 標準資料庫格式,需轉資料

txt 檔案轉成 datatable 方式如下
以下是友站提供的資料片段
  1. Dim ansFile As FileInfo
  2.             For Each ansFile In New DirectoryInfo(answerPath).GetFiles("*.txt")
  3.                 Dim dr As DataRow = dtAnswer.NewRow
  4.                 dr("no") = ansFile.Name
  5.                 dr("ans") = ReadCount(ansFile.FullName)
  6.                 dtAnswer.Rows.Add(dr)
  7.             Next
  8.              
  9.             '學生成績
  10.             Dim dt As DataTable = New DataTable
  11.             dt.Columns.Add(New DataColumn("no", Type.GetType("System.String")))   '學號         
  12.             dt.Columns.Add(New DataColumn("right", Type.GetType("System.Int32"))) '答對
  13.             dt.Columns.Add(New DataColumn("wrong", Type.GetType("System.Int32"))) '答錯
  14.             dt.Columns.Add(New DataColumn("score", Type.GetType("System.Int32"))) '得分
複製代碼
http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD200612150034214VL.html
作者: linshin1999    時間: 2011-1-6 21:24

謝謝有用,也讓我找到了一個Crystal Report 的論壇.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)