Работа с массивами данных из файла - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д