КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Объектный подход к файлам
Объявление файловой переменой 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;
Дата добавления: 2014-12-08; Просмотров: 384; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |