Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Объявление файловой переменойСодержание книги
Поиск на нашем сайте
Type <имя типа>=File; Var <идентификатор>:<имя типа>; //ссылка на файловый тип или Var <идентификатор>: File; //без ссылки на файловый тип Открытие и закрытие файла производится аналогично типизированному файлу. Но в процедурах Reset и Rewrite (п.1.8.2.1) вторым параметром типа можно указать длину записей в байтах (128). Вместо процедур Read и Write используются процедуры: BlockRead(F;var Buf;N:Integer[;var R:Integer]) ‑ читает N записей из файла F в переменную B. Истинное количество считанных записей в R. BlockWrite(F;var Buf;N:Integer[;var R:Integer]) ‑ выводит N записей из переменной B в файл F. Истинное количество выведенных записей в R. Seek(F;N:Longint) ‑ устанавливает текущую позицию на байт под номером N (отсчет с нуля). Пример копирования файла (имена файлов в командной строке): Var FromF, ToF: File; NumRead, NumWritten: Word; Buf: Array[1..2048] of Char; Begin AssignFile(FromF,ParamStr(1));Reset(FromF,1); //открытие файлов Assign(ToF, ParamStr(2)); Rewrite(ToF,1); //длина записи=1 байт repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); //ввод блока BlockWrite(ToF, Buf, NumRead, NumWritten); //вывод блока until(NumRead=0)Or(NumWritten<>NumRead); //условие выхода из цикла CloseFile(FromF);CloseFile(ToF); End.//закрытие файлов и конец процедуры Объектный подход к файлам Базовый объект TStream (поток) позволяет абстрагироваться от понятия «файл» и его носителя. Файл представляет собой непрерывный поток символов без всякой заранее определенной структуры. Рассмотрим работу объекта TFileStream одного из потомков объекта TStream, предназначенного для работы с файлами на жестком диске. Для работы с этим объектом используются следующие методы. Create(S;M:Word) ‑ создание файла под именем S в режиме M: fmCreate (создание нового файла), fmOpenRead (для чтения), fmOpenWrite (для записи), fmOpenReadWrite (для чтения и записи). Free ‑ закрытие файла. Read(Var B;N:LongInt):LongInt ‑ чтение в переменную B очередных N байтов, начиная с текущей позиции. Возвращается число прочитанных байтов. Write(B;N:LongInt):LongInt ‑ запись из переменной B в файл N байтов, начиная с текущей позиции. Возвращается число выведенных байтов. Seek(N:LongInt;O:Word):LongInt ‑ установка текущей позиции в файле путем смещения на N байтов (отсчет с нуля) относительно O: soFromBeginning (от начала файла), soFromCurrent (от текущей позиции файла), soFromEnd (от конца файла и N<=0). SetSize(N:LongInt) ‑ установка нового размера файла, равного N байтам. CopyFrom(S:TStream;N:LongInt):LongInt ‑ копирование первых N байтов файла ‑ объекта S в текущий файл ‑ объект. Возвращается число фактически скопированных байтов. В распоряжении имеются два свойства объекта: Size (размер файла), Position (текущая позиция файла от его начала). Пример формирования и чтения файла «d:\prim.dat»: Procedure TForm1.Button1Click(Sender: TObject); //обработка кнопки Var S:TFileStream; B:Array [1..3] Of Char; //переменные Begin Try S:=TFileStream.Create('d:\prim.dat',fmCreate); //открытие файла S.Write('0123456789',10); //вывод в файл текста «0123456789» S.Free; {закрытие файла} S:=TFileStream.Create('d:\prim.dat',fmOpenRead); S.Seek(5,soFromBeginning); //установка текущей позиции на пятый байт S.Read(B,3); Label1.Caption:= Copy(Z,1,3); //вывод из файла цифр 5,6,7 Finally S.Free; {закрытие файла в любом случае} End; End; Файлы Windows В функциях обработки файлов Windows могут использоваться атрибуты файлов и режимы доступа. Атрибуты файлов задаются именованными константами: faReadOnly (только чтение), faHidden (скрытый), faSysFile (системный), faVolumID (имя диска), faDirectory (каталог), faArchive (архив), faAnyFile (любой). Режимы доступа при открытии файла задаются константами: fmOpenRead (только чтение), fmOpenWrite (запись), fmOpenReadWrite (чтение и запись), fmShareCompat (совместимый с FCB), fmShareExclusive (монопольное использование), fmShareDenyWrite (запрет записи для других приложений), fmShareDenyRead (запрет чтения для других приложений), fmShareDenyNone (многопользовательский разделяемый режим). В системе Windows каждый файл вместо файловой переменной имеет уникальный цифровой дескриптор, называемый обычно Hanle (он обозначен в описаниях процедур и функций буквой H), значение которого формируется функциями открытия файла FileCreate или FileOpen: FileCreate(S) ‑ создание файла под именем S, возвращение его дескриптора. FileOpen(S;M:Integer) ‑ открытие уже существующего файла S в режиме M (комбинация fmXXXX и fmShareXXXX, соединенных операциями Or), и возвращение его дескриптора. Запрещается одновременное использование для одного файла функции и процедур файлов Паскаля и Windows. Приведем список других основных процедур и функций. FileClose(H) ‑ закрытие файла с дескриптором H (см. FileCreat, FileOpen). FileGetDate(H):Integer ‑ возвращает в формате DOS дату и время создания открытого файла с дескриптором H. FileRead(H;Var B;N:Integer):Integer ‑ читает N байтов из открытого файла c дескриптором H в переменную B и возвращает число cчитанных байтов. Обычно переменной B является одномерный массив элементов типа Сhar. FileSeek(H,N,O:Integer):Integer ‑ устанавливает в открытом файле c дескриптором H позицию со смещением N от начала (O=0) текущего положения (O=1) или от конца (O=2) файла соответственно. Возвращает новую позицию или -1 в случае ошибки. FileSetDate(H,A:Integer):Integer ‑ устанавливает в формате DOS дату и время создания (A) открытого файла с дескриптором H и возвращает 0 при успешном выполнении, иначе - код ошибки Windows. Дату можно получить из значения типа TDateTime функцией DateTimeToFileDate. FileWrite(H;B;N:Integer):Integer ‑ записывает N байтов в открытый файл c дескриптором H из переменной B и возвращает число выведенных байтов. Пример:
|
||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 298; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.51.35 (0.007 с.) |