投稿時間: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
|