Использование потоков с произвольными данными

Хотя потоки спроектированы в основном для работы с объектами, Вы можете использовать их для хранения не только полей объектов, но и любых других данных. При этом не следует обращаться к методам 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 байт, а на экран будут выведены две строки с одинаковыми числами.