Суббота, 12.07.2025, 11:54
Системы автоматизированного проектирования в радиоэлектронике
В начало | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Порядок действия при работе с файлами:
1. Файл должен быть открыт. Это означает, что ОС разрешает внесение изменений в данный файл, а также следит за корректностью обращения к файлу других пользователей. Файл обычно открывается в определенном режиме: для чтения , для записи и т.д.. Для ускорения работы указывается также внутренняя структура файла.
2. Работа с файлами (считывание, запись, поиск и т.д.)
3. Закрытие файла. Он становится доступным для других пользователей без ограничений. Его закрытие гарантирует, что внесенные в него изменения не пропадут (промежуточные результаты из буферов ОС сохраняться в файле).

Типы файлов  
В Delphi стандартный тип File, на основе которого можно создавать новые файловые типы.
var F:file- переменная F нетипизированная (структура файла не известна).
Чаще всего в программе используются файлы, состоящие из последовательности файловых записей.

var имя переменной: File of тип;

В качестве типа тип, для которого точно известен фиксированный размер в байтах.

 type TMyFile=record
 name:string[20];
 number:integer;
 end;
 var F:File of TMyFile;

Открытие файла
 Перед открытием файла нужно указать, где он находится. Для этого файловая переменная связывается с файловой переменной:
  AssignFile(F,’test.dat’);
  AssignFile(F,’c:\projects\test.dat’);

 Процедуры открытия файлов позволяют:
• открывать файл в режиме чтения(Reset);
• открывать файл в режиме записи(Rewrite),
var F:File ;
_ _ _ _ _
Rewrite(F,1);
По этой процедуре (Riwrite) старое содержание файла уничтожается (файл создается заново).

Для записи файл в файл с известной структурой применяется процедура Write:
var F:File of TMyFile;
A,NS,MyData:TMyFile;
_ _ _ _ _ _
Write(F,NS,MyData);
Значения переменных будут последовательно записаны в конец файла.

Считывание из файла – процедурой Read:
var F:File of TMyFile;
A,NS,MyData:TMyFile;
_ _ _ _ _ _
Reset(F);
Read(F,MyData,A);
Начиная с текущей позиции (начала) файла будут считаны блоки данных и записаны в переменной MyData и A. Текущая позиция в файле F после чтения сдвинутся на два элемента.

Закрытие файла
 CloseFile(F);
Для доступа к определенной позиции в файле можно использовать процедуру Seek(var F;N:Longint);
 F-файловая переменная
 N-номер записи в файле;
_ _ _ _
Reset(F); Файл открывается процедурой Reset, т.к. 
Seek(F,3); Reset уничтожает всю информацию в файле
Write(F,FF);
Close File(F); 
Модифицируется четвертая запись.
Для текстовых файлов (тип Text) с нефиксированной длиной строк используется процедура, явно осуществляющая ввод/вывод с новой строки: Readln, Writeln.
Для обнаружения конца файла используется функция Eof (если текущая позиция окажется в конце файла).
 AssignFile(F,’c:\A.txt’);
 Reset(F);
 i:=ø;
 while not Eof(F) do
  begin
  Readln(F,S);
  Inc(i);
  End;
 closeFile(F); //пересчет строк в текстовом файле

Для обработки имен файлов служат подпрограммы из стандартного модуля FileCtrl:
 function ChangeFile(const FileName, Extension:string):string;-изменяет расширение имени файла FileName на новое, заданное параметром Extension.
function ExtractFileDiv(const FileName:string):string; -выделяет имя каталога и риска в формате, пригодного для непосредственного использования в функциях CreateDiv, GetCurrenntDiv и т.д.
function ExtractFileExt(const FileName:string):string; –выделяет расширение имени файла.
function ExtractFileFileName( ) – выделяет имя файла, , отделяя его от пути поиска.
function ExtractSharPathName( ) – преобразует путь поиска в формат коротких имен (до 8 символов):
 C:\Program Files\A.txt→c:\Progra~1\A.txt
function IncludeTrailingBackslash(const S:string):string; –добавление в конец строки символ \, если он там отсутствует.
function MatchesMask(const FileName, Mask:string):Booleon; –возвращает true, если файл FileName соответствует заданной маске имеем Mask, содержащей подстановочные символы.

Поиск файлов
Поиск осуществляется в три этапа:
1) Находится первый файл, удовлетворяющий заданной маске с помощью функции:
  function FindFirst(const Path:string; Attr:integer;
var F:TSearchRec):integer;
Параметр Path содержит путь доступа для папки, в которой проводится поиск. Путь должен завершаться маской и имен файлов: *.*, *.см?. c:\tmp\*.htm
Атрибуты.
Результаты поиска сохраняются в переменной F, имеющей тип TSearchRec.
 Type TSearchRec=record
 Time:integer;
Size: integer;
Attr:integer;
Name:TFileName;
ExcludeAttr: integer;
FindHandle:THandle;
End;
Time – время создания файла в формате DOS.
Size – размер файла в байтах;
2) Вызывается функция, продолжающая поиск:
function FindNext(var F:TSearchRec):integer
 Переменная F типа TSearchRec передается этой функции в качестве парамтра.
3) Завершение поиска:
procedure FindClose(var F: TSearchRec);
 (освобождается память, выделенная для проведения процесса поиска).
 При создании программ для Winows корректнее применять ее стандартные функции. В Windows каждый файл имеет уникальный цифровой индификатор, по английски называемый Handle. Для работы с файлами не требуется создавать файловые переменные. При это принципы работы с файлами, открытыми с помощью Reset и Rewrite, не должны смешиваться с помощью функции Windows.
  function File Create(const FileName:string):integer; – создет файл с путем (FileName); – 1 – если создать файл не удалось.
  Function FileOpen(const FileName:string; Mode:LongWord):integer;
– открывает файл в режиме Mode;
• fmOpenRead – только на чтение ;
• fmOpenWrite – только на запись ;
• fmReadWrite – режим изменения ;
Чтение и запись данных осуществляется блоками заданного размера:
 function F;leread(Handle:integer; var Buffer,Count:integer):integer;
 Count – число считываемых байтовж
 Buffer – переменная для записи этих байтов(как правило массив из элементов типа Char или Byte);
Аналогична функция function FileClose(Handle:integer);
Запись в файл текстовой строки:
 var FileHandle:integer;
 S:integer;
 Begin
 S:=’текстовая строка’;
 FileHandle:=FileCreate(‘c:\tmp\S.txt’);
 FileWrite(FileHandle, S, Size of(S));
 FileClose(FileHandle);
 End;
Size of(S) – для определения размера строки
Для поиска в Windows можно использовать функцию 
 function File Search(const Name, DirList:string):string;
 Name – имя искомого файла;
 DirList – список папок для поиска(через;) функция возвращает имя файла с полным путём поиска или пустую строку.
 S:=FileSearch(‘MyDoc.doc’, ‘c:\Мои документы; D:\Info\Text’);
 If S<>’ ’ then ShowMessage(S);
Текущая позиция в файле устанавливается с помощью функции функции
 function FileSeek(Handle,Offset,Origin:integer):integer;
 Offset задает сдвиг в байтах относительно позиции, определяемой параметром Origin:
 0 – от начала файла;
 1 – от текущей позиции;
 2 – от конца файла.


Поиск
Друзья сайта
Copyright MyCorp © 2025
Конструктор сайтовuCoz