В этой главе, когда мы рассматривали работу с файлами, уже использовались потоки. Объект TFiiestream является потомком главного объекта TStream и позволяет получить доступ к диску. Точно так же можно получить доступ к:
- памяти через объект TMemory Str earn;
- сети через объект TWinSocketStream;
- СОМ-интерфейсу через TOiestream;
- строкам, находящимся в динамической памяти Tstringstream.
Это неполный список объектов потоков, но даже все эти объекты мы рассматривать не будем. Это отнимет очень много времени и места, а смысл работы идентичен. Рассмотрим только базовый объект TStream, а вы потом посмотрите на то, как производилась работа с TFiiestream, и увидите, что работа объектов идентична и таким же образом можно работать с любым другим типом потока. Итак, давайте разберемся со свойствами и методами потока. Свойства:
- Position— указывает на текущую позицию курсора в потоке. Начиная с этой позиции будет происходить чтение данных;
- size — размер данных в потоке.
Методы:
- copyFrom — метод предназначен для копирования из другого потока. У него два параметра — указатель на поток, из которого надо копировать, и число, показывающее размер данных, подлежащих копированию;
- Read — прочитать данные из потока, начиная с текущей позиции курсора. У этого метода два параметра — буфер, в который будет происходить чтение, и число, показывающее размер данных для копирования;
- seek— переместиться в новую позицию в потоке. У этого метода два параметра, первый — число, указывающее на позицию, в которую надо перейти. Если вам нужно передвинуться на 5 байт, то просто укажите цифру 5. Второй параметр — откуда надо двигаться.
Тут возможны три варианта:
- soFromBeginning — двигаться на указанное количество байт от начала файла;
- soFromCurrent — двигаться на указанное количество байт от текущей позиции в файле к концу файла;
- soFromEnd— двигаться от конца файла к началу на указанное количество байт;
- setsize— установить размер потока. Здесь только один параметр — .число, указывающее новый размер потока. Допустим, что вам надо уменьшить размер файла. В этом случае с помощью метода setsize потока TFileStream вы можете уменьшить или даже увеличить размер файла;
- write — записать данные в текущую позицию потока. У этого метода два параметра:
- переменная, содержимое которой нужно записать;
- число байт для записи.
Это основные методы, которые вам могут понадобиться при работе с потоками. На практике мы еще встретимся с подобными объектами, и вы еще раз увидите, как с ними работать.
В русском переводе слова stream и thread почему-то переводятся переводчиками одинаково — поток. Но в программировании это разные термины. Stream— это поток каких-либо данных, a thread обеспечивает многопоточность приложений (параллельное выполнение или вычисление). У слова thread есть еще одно значение — нить, т. е. ниточка в пучке процессов, выполняемых в ОС. Чтобы вас не путать, можно использовать один термин — поток, но в дальнейшем постараемся понять разницу между двумя этими терминами.