Файл произвольного доступа: пустая запись в конце? - VB
Формулировка задачи:
Пытаюсь освоить чтение и запись в файл произвольного доступа (random).
Получается, что после чтения последней записи считывается еще пустая запись?!
Сделал тестовую процедурку, там то же самое:
F7 создает файл с одной записью, размер файла соответствует ей (36 байт), но при чтении F8 возвращается еще пустая запись и seek= 3 после ее чтения.
Кто подскажет в чем прикол?
.
Не потому ли в примерах предлагают использовать для чтения цикл по количеству записей, рассчитанному по размеру файла:
Пробовал. Однако в программе после добавления в файл в т о р о й записи, его размер становится 108 байт, а не
72, т.е. снова добавляется пустая строка??
Листинг программы
- Private Type GameRslts
- sName As String * 30
- nOpnClicks As Integer
- ScndsCl As Single
- End Type
- Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
- Dim Rcrd As GameRslts, FlNm As String, i As Integer 'debug
- FlNm = aPath & "myFileName" 'debug. aPath is global-module function of app.path+-"\"
- Select Case KeyCode
- Case Is = vbKeyF1
- 'show help here
- Case Is = vbKeyF7 'debug write
- With Rcrd
- .sName = "Test": .nOpnClicks = "99": .ScndsCl = "19648"
- End With
- Open FlNm For Random As #1 Len = Len(Rcrd)
- Put #1, , Rcrd
- Close 1
- Case Is = vbKeyF8 ' debug read
- Open FlNm For Random As #1 Len = Len(Rcrd)
- Do While Not EOF(1)
- Get #1, , Rcrd
- With Rcrd
- MsgBox .sName & " " & CStr(.nOpnClicks) & " " & CStr(.ScndsCl), , CStr(Seek(1))
- End With
- If EOF(1) Then Exit Sub ' даже так пробовал :)
- Loop 'Until EOF(1)
- End Select
- End Sub
Листинг программы
- For i = 1 To Int(LOF(1) / Len(GmRes))
- 'While Not EOF(1) 'и так пробовал
- Get #1, i, GmRecords 'Dim GmRes As GameRslts, GmRecords As GameRslts прописаны
- '......обработка считанного.....
- Next i : Close 1
Решение задачи: «Файл произвольного доступа: пустая запись в конце?»
textual
Листинг программы
- For i = 1 To Int(LOF(1) / Len(GmRes))
- Get #1, i, GmRecords
- '......
- Next i
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д