Потоки в Delphi

В этой главе, когда мы рассматривали работу с файлами, уже использовались потоки. Объект 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 есть еще одно значение — нить, т. е. ниточка в пучке процессов, выполняемых в ОС. Чтобы вас не путать, можно использовать один термин — поток, но в дальнейшем постараемся понять разницу между двумя этими терминами.

СОВЕТ. Обращайте внимание на англоязычное название объектов, с которыми мы будем работать, и помните, что stream — это поток данных, a thread — отдельная нить процесса, выполняющего инструкции программы. Процесс (process) — это отдельная программа, которая может состоять из нескольких потоков (thread). В данном случае поток можно воспринимать как процедуру, которая выполняется параллельно основ­ной задаче. Именно поэтому я советую вам следить за названиями, чтобы не путать поток данных и программный поток.

dle

Помоги проекту! Расскажи друзьям об этом сайте: