Свойство

property Memory: Pointer;
определяет область памяти, отведенную для хранения данных потока. Изменение размера отведенной памяти осуществляется методом procedure SetSize(NewSize: Longint);
override;
Для очистки памяти потока используется метод procedure Clear;

Чтение/запись данных в память выполняется привычными методами Read И Write.

Также запись данных в память может осуществляться методами:

□ procedure LoadFromFile (const FileName: string) ; - из файла ; □procedure LoadFromStream (Stream: TStream) ; - из Другого потока. Дополнительно можно использовать методы записи данных в файл или поток:

procedure SaveToFile (const FileName: string);
procedure SaveToStream (Stream: TStream);

Класс TStringStream

Так как строковые константы и переменные широко применяются при разработке приложений, то для удобства работы с ними создан специальный класс TStringStream. Он обеспечивает хранение строки и доступ к ней во время выполнения приложения.

Он обладает стандартным для потоков набором свойств и методов, добавляя к ним еще несколько, упрощающих использование строк.

Свойство только для чтения

property EataString: string; обеспечивает доступ к хранимой строке. Методы

function Read(var Buffer; Count: Longint) : Longint; override; И

function Write (const Buffer;
Count: Longint): Longint;
override;

реализуют обычный для потоков способ чтения и записи строки для произвольной переменной Buffer.

Метод

function ReadString (Count: Longint): string;

обеспечивает чтение count байтов строки потока, начиная с текущей позиции.

Метод

procedure WriteString (const AString: string);

дописывает к строке строку AString, начиная с текущей позиции.

При работе с файлами и потоками используются дополнительные классы исключительных ситуаций.

Класс EFCreateError возникает при ошибке создания файла, a EFOpenError - при открытии файла.

При чтении/записи данных в поток могут возникнуть исключительные ситуации EReadError И EWriteError.

Оповещение об изменениях в файловой системе

Многие программисты задавались вопросом: как получить сигнал от операционной системы о том, что в файловой системе произошли какие-то изменения? Такой вид оповещения позаимствован из ОС UNIX и теперь доступен программистам, работающим с Win32.

Для организации мониторинга файловой системы нужно использовать три функции - FindFirstChangeNotification, FindNextChangeNotification И FindcioseChangeNotification. Первая из них возвращает дескриптор объекта файлового оповещения, который можно передать в функцию ожидания. Объект активизируется тогда, когда в заданной папке произошли те или иные изменения (создание или уничтожение файла или папки, изменение прав доступа и т. д.). Вторая функция - готовит объект к реакции на следующее изменение. Наконец, с помощью третьей функции следует закрыть, ставший ненужным, объект.

Так может выглядеть код метода Execute потока, созданного для мониторинга:

var DirName : string;
procedure TSimpleThread.Execute;
var r: Cardinal;
fn : THandle;
begin
fn := FindFirstChangeNotification(pChar(DirName),True, FI LE_NOT I FY_CHANGE__FI LE_NAME) ;

⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс