VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2002/08/29(Thu) 17:41
投稿者A221
Eメール
URL
タイトルRe^2: テキストファイルの読み込み

自己レス。ファイルを読みながらソートするのがマージソートだったと
記憶違いをしていました。

#また無知を曝してしまった。

テキストへの読込を作ってみました。
#クラスを使っているのは最近私がクラスにかぶれているからです。(><)

'------------------------フォームに貼る
Option Explicit

Private Sub Form_Load()
Dim test As New Dataloading

test.Loading

MsgBox CStr(test.DataCount) + CStr(test.MostOldData)


End Sub
'------------------------クラスモジュール「Dataloading」を作って貼る
Option Explicit

Private Const filename = "C:\test.csv"
Private Count As Long

Private Type Loaddata
    DDate As Date
    Data(1 To 3) As Long
End Type

Private LoadingData() As Loaddata

Public Sub Loading()
Dim fnum As Long
Dim DefaultDate As Date
Dim tmp As String
fnum = FreeFile

Count = 0
ReDim LoadingData(Count)
Open filename For Input As fnum
    Do Until EOF(fnum)
        With LoadingData(Count)
            Input #fnum, tmp, .Data(1), .Data(2), .Data(3)
            .DDate = CDate(tmp)
            Count = Count + 1
        End With
        ReDim Preserve LoadingData(Count)
    Loop
Close fnum

Call SortData(0, Count)

End Sub

Private Sub SortData(l As Long, r As Long)
Dim i As Long
Dim j As Long
Dim x As Date
Dim Swap As Loaddata

x = LoadingData((l + r) \ 2).DDate
i = l
j = r
  
Do
    Do While LoadingData(i).DDate < x
        i = i + 1
    Loop
    Do While LoadingData(j).DDate > x
        j = j - 1
    Loop
    If i >= j Then Exit Do

    Swap = LoadingData(i)
    LoadingData(i) = LoadingData(j)
    LoadingData(j) = Swap

    i = i + 1
    j = j - 1
Loop
If (l < i - 1) Then SortData l, i - 1
If (r > j + 1) Then SortData j + 1, r

End Sub
Public Property Get DataCount()
    DataCount = Count
End Property
Public Property Get MostOldData()
    MostOldData = LoadingData(1).DDate
End Property


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -