Навигация
Главная »  Delphi 

Работа с файлами в Delphi


Источник: delphi
delphi
Краткое описание: В этом уроке мы будем работать с файлами в Delphi. Мы подробно рассмотрим, как копировать, удалять, переименовывать файлы. Научимся считывать и записывать информацию в типизированные файлы.

Копирование файлов с помощью Delphi.

Для этого нам потребуется вызов всего одной функции, которая выполняет именно копирование файлов. Это функция CopyFile(). У нее три параметра, два из которых обязательны. Вот полный синтаксис.
CopyFile("путь до начального файла","Путь  куда надо копировать",Перезаписывать или нет)
Пример:  CopyFile("D:sekretBD.txt","C: ame.txt", true);

В первом параметре можно указывать не только полный путь до файла. Если укажем, например, такой путь "sekretBD.txt", то наша программа будет искать этот файл в своем каталоге. Имя и разрешение нужно указывать именно такими, какие они есть у файла, иначе программа просто не найдет файл.
Во втором параметре тоже можно указывать относительный путь и там вы можете указать имя и расширение файла такое, какое захотите. Т.е. с помощью этой функции можно делать и переименовывание тоже.
Третий параметр отвечает за перезапись файла. Если мы укажем true, то файл не будет перезаписан, а если false, то программа перезапишет файл.

Переименование файлов с помощью Delphi

За переименование файлов отвечает функция RenameFile(). У нее 2 параметра. Вот ее полный синтаксис
RenameFile("путь до файла","новое имя");
Честно говоря, синтаксис этой функции меня не особо радует. В нем тоже в обоих параметрах надо указывать полный путь. Т.е. если мы, например, напишем так

RenameFile("C:2.txt","3.txt");

То он скопирует файл в каталог программы. Т.е. получается, что она может выполнять роль копирования тоже. Это немного странно.

Удаление файлов с помощью Delphi

Ну здесь все совсем просто. Функция, с помощью которой можно удалить файл, вызывается так:

DeleteFile("C:myprofile.txt");

Единственное, что она не всегда 100% удаляет файл. Когда файл защищен, она его не сможет удалить.

Работа с типизированными файлами в Delphi

Что такое типизированный файл? Это файл с определенной структурой. Обычно это структурой выступают записи и базовые типы. В общем, важно, чтобы у типа был известен фиксированный размер, поэтому тип string применять нельзя, нужно делать так: String[N].
Вначале нам нужно объявить переменную, где будут храниться данные из файла. Делается это так:

Var f: file of <Тип>
Например, f: file of string[30];

Затем нам нужно соединиться с файлом. Для этого есть команда AssignFile. Для вызова надо прописать два параметра, это переменная, которую мы объявили выше и путь до файла. Например
AssignFile(f,"C:delphi.ini");

Теперь файл нужно открыть. Можно открыть двумя способами: с перезатиранием и без. Метод Rewrite открывает файл, предварительно создав его. Т.е. если файла в указанном нами пути не будет находиться, то он его создаст. Если там уже был такой файл, то он будет удален и заново создастся чистый файл. Метод Reset открывает файл и ставит указатель в самое начало файла. Но этот метод опасен тем, что если файла, указанного в подключении, нет, то программа вылетит с ошибкой. Так что для правильного применения функции Reset надо сказать компилятору об отключении ошибок. Задается это директивой {$I-} т.е. полный синтаксис функции reset будет таким:
{$I-}
Reset(f);
{$I+}

После этого надо проверить, был ли открыт файл или нет. Это можно сделать с помощью функции IOResult. Если она не равна нолю, то все успешно.
Полный синтаксис:
{$I-}
Reset(f);
{$I+}
If IOresult <> 0 then <ваш код>

Также осуществить проверку поможет функция FileExists. В ней нужно указать путь до файла.
Для чтения файла служит функция Read(), в которой указываются два параметра: переменная файла и тип записи, в нашем случае это string[30]. Синтаксис:
Read(f,String[30]);

Для записи в файл служит функция Write(), в которой указываются такие же два параметра: переменная файла и тип записи, в нашем случае это string[30]. Синтаксис:
Write(f,String[30]);

Полностью прочитать весь файл можно с помощью цикла. Для этого надо употребить функцию EOF(). Это функция возвращает единицу тогда, когда файл закончился.
While not eof(f) do
Read(f,String[30]);

Также есть функция seek, с помощью которой мы можем перейти на интересующую нас запись. Например, нам нужно обратиться к 20 записи и мы делаем так:
Seek(f,20);

Еще есть функция truncate, С помощью которой мы можем удалить все записи файла, начиная от позиции указателя. Позицию можно указать с помощью функции seek, кто не понял.
Truncate(f);

После выполнения всех операций с файлом, необходимо его закрыть с помощью функции CloseFile(f);
Вот и все. На этом урок закончен. До встречи на сайте!



 

 Лицензирование Crystal Reports XI (11).
 LangMF 7.0 (download).
 Компания Borland приобретает компанию Segue Software, поставщика решений для проверки качества программного обеспечения.
 Создание почтового клиента в Delphi 7 (исходники).
 Сообщения Windows и их обработка (исходники).


Главная »  Delphi 

© 2018 Team.Furia.Ru.
Частичное копирование материалов разрешено.