Основы офисного программирования и язык VBA


Ввод-вывод для файлов произвольного доступа и бинарных файлов - часть 5


Вот результаты работы этой процедуры:

Число записей файла-- 8 Код Товара: 1 Цена: 18 Код Товара: 2 Цена: 168 Код Товара: 3 Цена: 84 Код Товара: 0 Цена: 0 Код Товара: 0 Цена: 0 Код Товара: 6 Цена: 246 Код Товара: 7 Цена: 483 Код Товара: 8 Цена: 224

Мы уже пояснили, почему в файле оказалось 8 записей и почему часть из них имеет нулевые значения.

Следующая процедура работы с этим файлом демонстрирует возможность работы с ним, когда доступ к записям осуществляется в произвольном порядке, что, впрочем, демонстрировалось и при создании этого файла:

Public Sub WorkWithFile() Dim N As Integer, i As Integer, Code As Integer Dim MyRec As Товар Randomize 'Открыть файл Товаров для обработки Open Path & "Товары.9" For Random Access Read As #1 Len = Len(MyRec)

N = Int(Rnd * 9 + 1) 'Число обрабатываемых записей Debug.Print "Число обрабатываемых записей -- ", N For i = 1 To N Code = Int(Rnd * 9 + 1) 'Установить позицию Seek 1, Code 'Получить запись с заданным кодом Get #1,, MyRec If MyRec.КодТовара = 0 Then Debug.Print "В файле нет записи с кодом:", Code Else: Call PrintRec(MyRec) End If Next i Close #1 End Sub

Из новых деталей отметим следующее. Здесь оператор Seek работает по существу, хотя, конечно, и без него можно было бы обойтись, используя возможности оператора Get. Однако, более важно, обратить внимание на то, что при попытке читать запись с ключом, который не задавался при создании файла (по существу, читать несуществующую запись) не возникает ошибки. Причину этого мы уже объяснили. Поэтому приходится организовывать собственную проверку, как это и сделано в нашей программе. В заключение приведем результаты одного из экспериментов с этой процедурой:

Число обрабатываемых записей -- 2 Код Товара: 8 Цена: 224 В файле нет записи с кодом: 5




Начало  Назад  Вперед



Книжный магазин