Использование потоков с произвольными данными
Хотя потоки спроектированы в основном для работы с объектами, Вы можете использовать их для хранения не только полей объектов, но и любых других данных. При этом не следует обращаться к методам Put и Get, так как они предполагают доступ к объектам. Вместо этого Вы должны обратиться к низкоуровневым процедурам Write и Read.
Следующая простая программа использует поток для сохранения десяти случайных целых чисел:
Uses Objects; var
S: TBufStream; {Экземпляр потока}
k, j : Integer;
begin
WriteLn('Запись в поток:');
S.lnit('Test.dat', stCreate, 512); {Создаем поток}
for k := 1 to 10 do
begin
j := Random(l00); {Получаем случайное целое}
Write(j:8); {Выводим на экран}
S.Write(j,2) {Помещаем в поток}
end;
Done; {Удаляем поток}
S.lnit('Test.dat', stOpenRead, 512);
WriteLn;
WriteLn('Чтение из потока:');
for k := 1 to 10 do
begin
S.Read(j,2); {Получаем целое из потока}
Write (j:8) {Выводим на экран}
end;
S.Done;
WriteLn
end.
Для простоты в программу не включены средства контроля ошибок. В ходе прогона программы в текущем каталоге диска будет создан файл TEST.DАТ размером в 20 байт, а на экран будут выведены две строки с одинаковыми числами.