Программирование на языке Object Pascal

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

быть прочитаны или записаны за одно обращение к диску;

- возвращает при выходе из процедуры количество фактически обработанных записей.

Buff: array [1..1024] of byte;: (f,buff,2,x);[x=1]

 

За одно обращение к процедуре BlokRead / BlokWrite может быть передано n*(длинна записи) байт. Передача идет начиная с первого файла к переменной Buff. Программист должен заботиться о том, что бы длинна внутреннего представления переменной Buff была достаточной для размещения всех n*(длинна записи) байт. Если длинна буфера будет недостаточной или место на диске закончится то выведется: ОШИБКА!

Потоки.

Stream - поток данных.

Thread - отдельно выполняющаяся программа (отдельный процесс); программный поток.

TSream - объект потока данных. Является базовым для потоков данных разного типа. В нем реализованы все необходимые свойства и методы, используемые для чтения и записи данных на различные типы носителей (память, диск, сеть …). Благодаря ему, доступ к различным типам носителей становится унифицированным (единым, одинаковым …). У объектов TSream существует несколько потомков одного уровня позволяющих работать с различными носителями информации.

Потомки TSream:

TFileStream - применяется для получения доступа к файлам.

TMemoryStream - применяется для получения доступа к памяти.

TStringStream - применяется для получения доступа к строкам, хранящимся в динамической памяти.

TWinSocketStream - применяется для получения доступа к данным из сети.

TOleStream - применяется для получения доступа к COM-интерфейсу (component object model).

Для всех этих объектов действуют основные методы и свойства родительского объекта TSream.

Основные свойства объекта TSream:

Position - указывает на текущую позицию курсора в потоке (начиная с нее будет происходить чтение файла).

Size - размер данных в потоке.

Методы объекта TSream:

CopyFrom - метод предназначен для копирования из другого потока:

1.указатель на поток, из которого надо копировать;

2.размер данных (байт) подлежащих копированию.

Read - позволяет прочитать данные из потока, начиная с текущей позиции курсора:

1.буфер, в который будет происходить чтение;

2.количество читаемых байтов.

Write - позволяет записывать данные в буфер (по параметрам аналогичен read);

Seek - позволяет переместиться в новую позицию в потоке:

1.число, указывающее на сколько байт нужно передвинуться;

2.от куда надо двигаться (не обязательные параметр). Может принимать 3-и значения:

soFromBegining - от начала;

soFromCurrent - с текущей позиции (по умолчанию);

soFromEnd - с конца.

SetSize - устанавливает размер потока (один параметр - число указывающее новый размер потока (байт)).

Пример Работа с объектом TFileStream - чтение информации:

 

…: TFileStream;: array [1..1024] of byte;OpenDialog1.Exwcute then :=TFileStream.Create (OpenDialog1.FoleName, fmOpenRead);.Read(buf,1024);.Free;;

end;

 

fmOpenRead - режим работы с файлом.

Режимы работы с файлом для объектов TFileStream:

fmCreate - создает новый файл (если файл уже существует, то он открывает его в режиме записи);

fmOpenRead - открывает файл только для чтения;

fmOpenWrite - открывает файл только для записи (вся предыдущая информация стирается);

fmOpenReadWrite - добавляет информация в файл не удаляя предыдущую;

fmShareExclusive - при работе с файлами в таком режиме не одно приложение, кроме вашего не сможет его открыть;

fmDenyWrite - при работе с файлами в таком режиме другие приложения не могут писать в файл, но могут его читать;

fmDenyRead - при работе с файлами в таком режиме другие приложения могут только писать, но не открывать приложения..Строки.

Строки используются для обработки текста:

 

Var

Имя: string;

Этот тип похож на одномерный массив символов, но в отличие от него количество элементов в строке может меняться в ходе выполнения программы.

Максимальное количество символов в строке 255.

Пример:

: string; [0-255]: string [10]; [0-10]

 

В OPascal строка выглядит как цепочка символов, к каждому символу можно обратиться как к элементу одномерного массива указав его индекс:

 

s: это_строка;

s1:=s6; [т]

 

Строка хранится в памяти компьютера следующим образом - самый первый элемент строки имеет индекс 0 и содержит значение текущей длинны строки:

( это_строка )-для человека

A (ASCII код символов)- для компьютера

Над длинной строки можно производить необходимые действия оперируя с нулевым байтом строки.

Над строками допустимы следующие операции:

). Сравнение (результат - истина, если строки идентичны).

2). Сложение.

:= ab;:= 12:=s1+s2;[ab12]

При записи строки допустимо использовать ASCII коды символов:

 

S:= abs;

S:= #65#66#67;

S:= a#66 c

 

Если, при сцепление строк, длинна строки более 255 символов, то лишние символы отсекаются.

Правила сравнения строк:

выдают истина или ложь.

 

s1:= abcde; [65 66 67 68 69]:= abcae;[65 66 67 65 69]>S2:= abc;[65 66 67]:= abcde;[65 66 67 68 69]>S1

 

Процедуры и функции для работы со строками:

Concat (s1, s2 … sn): string; - сцепление строк в списке параметра, возвращает результат функция string;

Copy (st, index, count): string; - возвращает из st count символов:

:= конкатспация;:= copy (s1, 4, 3); [кат]

Delete (st, index, count): string; - удаляет из строки st с позиции index count символов:

:= процедура;:= delete (s1, 1, 5); [дура]

nsert (s1, st, index); - возвращает в строку s1 строку st начиная с позиции index:

 

s:= дверь;:= е;:=insert (s, s2, 2); [деверь]

(s): byte - возвраща