Работа с массивами данных из файла - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Хотел бы выяснить возможность написания программы для считывания большого объема данных из файла (без зависания!),а так же редактирования его. Сам массив нужно разделить на блоки с определенным количеством значений, а затем эти блоки поменять в порядке местами, то есть первый станет последним, второй - предпоследним и.т.д. Главное, чтобы порядок в самом блоке оставался не изменным. Я написал для начала код для чтения, и наткнулся на проблему с зависанием всего и вся =) Жду комментариев, заранее благодарствую!

Решение задачи: «Работа с массивами данных из файла»

textual
Листинг программы
'объявляем тип записи, в нашем случае это массив из 11 переменных типа Double
Private Type recDoubleValue
DblVar(10) As Double
End Type
 
'объявляем переменную типа recDoubleValue, которая содержит 11 переменных типа Double
Dim rec As recDoubleValue
 
Private Sub Form_Load()
Command1.Caption = "Записать данные"
Command2.Caption = "Прочитать данные"
Command3.Caption = "Поменять местами"
End Sub
 
'жмём пкрвую кнопку, чтоб создать файл и записать в него 100 записей типа recDoubleValue
Private Sub Command1_Click()
Dim f As Integer
Dim i As Integer, j As Integer
f = FreeFile
Randomize
Open "C:\myRandomFile" For Random Access Write As #f Len = Len(rec)
For i = 1 To 100
    For j = 0 To 10
        rec.DblVar(j) = i + Rnd
    Next j
Put #f, i, rec
Combo1.AddItem i
Next i
Close #f
Combo1.ListIndex = 0
End Sub
 
'вторая кнопка служит для просмотра записей файла, в Combo1 выбираем номер записи, _ 
жмём кнопку просмотра ив List1 отображается запись, число до запятой равно номеру записи
Private Sub Command2_Click()
Dim i As Integer
Dim f As Integer
f = FreeFile
If (Val(Combo1.Text) > 0) And (Val(Combo1.Text) <= 100) Then
List1.Clear
Open "C:\myRandomFile" For Random Access Read As #f Len = Len(rec)
    Get #f, Combo1.Text, rec
Close f
For i = 0 To 10
    List1.AddItem rec.DblVar(i)
Next i
End If
End Sub
 
'меняем местами блоки в файле
Private Sub Command3_Click()
Dim i As Integer
Dim f As Integer
Dim rec1 As recDoubleValue, rec2 As recDoubleValue
f = FreeFile
Open "C:\myRandomFile" For Random As #f Len = Len(rec)
For i = 1 To 50
    Get #f, i, rec1
    Get #f, 101 - i, rec2
    Put #f, i, rec2
    Put #f, 101 - i, rec1
Next i
Close f
Call Command2_Click
End Sub

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы