Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Работа с файлам в Дельфи

Тип Реферат
Предмет Информатика и программирование
Просмотров
1699
Размер файла
17 б
Поделиться

Ознакомительный фрагмент работы:

Работа с файлам в Дельфи

Эта статья ориентирована на новичков, которые желают научиться работать с файлами в дельфи. В статье рассматриваются стандартные I/O операции с файлами, типичные ошибки и методы их предотвращения.

Intro

В дельфи файл представляется как именованная структура данных, т.е. последовательность однотипных данных. Грубо говоря это огромный массив, число элементов которого практически ни чем не ограничено. Для облегчения работы с файлами в дельфи, каждый отдельный файл представляет файловая переменная. Раз уж это переменная, то она должна быть обьявлена как переменная. Однако обо всем по порядку.

Step by step

Step 1 - Обьявление файловой переменной

Файловая переменная в общем виде обьявляется в разделе var примерно так:

F: file of Type;

Например:

F: File of integer;

Следует заметить, что текстовые файлы обьявляются немного по другому:

F : TextFile;

Да и вообще текстовые файлы "особенные". Некоторые функции работают только с текстовыми файлами. Также можно обьявить не только файл целых чисел(integer), текстовый файл или файл какого либо другого типа, но и файл собственного типа или записи, поместив обьявление типа или записи выше обьявления файловой переменной. Например:

type

TDay = (MON, TUE, WED, THU, FRI, SAT, SUN);

var

F : File of TDay;

или:

type

TDay = record

Num : Integer;

Name : String[200];

end;

var

F : File of TDay;

Следует обратить внимание, что длина строковых полей в записи должна быть четко определена (Name : String[200])

Step 2 - Назначение и открытие файла

После обьявления файловой переменной нужно связать её с физическим файлом на диске. Сделать это можно с помощью процедуры AssignFile:

AssignFile(var F : File; FileName : String);

Например:

var F : TextFile;

...

begin

AssignFile(F, "text.txt");

...

После выполнения процедуры файловая переменная F будет связана с файлом text.txt, находящимся в папке с программой. И все действия, производимые с переменной будут действовать именно на этот файл. Однако переменную можно освободить для дальнейшего использования с другим файлом процедурой CloseFile, но об этом ниже. Теперь необходимо открыть файл, причем одним из нескольких способов, в зависимости от ваших потребностей. Создать новый или перезаписать существующий можно с помощью процедуры Rewrite(F). Открыть для записи в конец файла можно с помощью процедуры Append(F). А открытие файла для чтения осуществляет процедура Reset.

Step 3 - Стандартные I/O опреации с файлами

I/O - это операции ввода/вывода (input/output). Здесь мы рассмотрим запись данных в файл и чтение этих данных. Сначала запись. Записать в файл можно переменную или константу того типа, которого был обьявлен файл. Например если файл был обьявлен вот так F : File of Integer, то в него можно будет записать данные только типа Integer. При попытке записать данные другого типа компилятор выдаст сообщение об ошибке. Запись в файл осуществляется процедурами Write([var F : File]; P1; [...,Pn]) и WriteLn([var F : File]; P1; [...,Pn]). Вторая отличается от первой тем, что она после записи параметра перемащает каретку на новую строку, т.е. следующий параметр запишется на новой строке. Вот пример использования процедур:

var F : TextFile;

Str : String;

...

Str := "Some Text";

WriteLn(F, Str);

Write(F, "это будет на новой стоке ");

write(F, "а это на этой же строке");

...

Чтение данных происходит благодоря процедурам Read([var F : File]; V1; [...,Vn]) и ReadLn([var F : File]; V1; [...,Vn]). Отличиаются они тем, что после прочтения параметра процедурой ReadLn каретка перемещается на новую строку, даже если ещё были данные. Вот пример:

var F : TextFile;

Str : String;

Str2 : String;

Str3 : String;

...

Read(F, Str);

ReadLn(F, Str2);//str2 будет содержать данные, идущие после str

Read(F, Str3);//str3 будет содержать данные, находящиеся на новой строке после str2

...

Думаю не все так сложно.

Step 4 - Закрытие файла

Файловую переменную после использования нужно обьязательно освободить, иначе программа не закроется и будет выдавать ошибку. Также освобождение файловой переменной будет полезно тогда, когда вам нужно работать с несколькими файлами последовательно, и после работы с первым файлом можно освободить переменную и связать её с новым файлом. Освобождение файловой перменной делает процедура CloseFile(F : File). Примера я думаю не надо, т.к. никаких особенностей у нее нет.

Пример

Я думаю новичку будет все же сложно будет без примеров разобраться в работе с файлами. Поэтому давайте расмотрим простейший пример программы, которая по нажатию одной кнопки будет запрашивать имя файла у пользователя и записывать содержимое TMemo. А по нажатию другой кнопки программа опять же будет запрашивать имя файла, читать от туда записанные данные и помещать их в TMemo. Знаю, что запись и чтение в TMemo можно организовать с помощью специальных методов. Но это всего лишь пример к статье. Вобщем кидайте на форму одну TMemo и две кнопки. Обработчик первой кнопки приведите к такому виду:

procedure TForm1.Button1Click(Sender: TObject);

var

F : TextFile;

FileName : String;

i : Integer;

begin

FileName := InputBox("Имя файла", "Введите имя файла", "default.txt");

AssignFile(F, FileName);

Rewrite(F);

for i := 0 to Memo1.Lines.Count do

WriteLn(F, Memo1.Lines[i]);

CloseFile(F);

end;

Это кнопка будет сохранять текстовый файл. Итак, в разделе var я обьявил три локальные переменные: F типа TextFile это и есть файловая переменная для текстовых файлов; FileName типа String будет служить для хранения имени файла; И i типа Integer - для циклов. В первой строчке я запрашиваю у пользователя имя файла. Во второй я связываю файловую переменную с физическим файлом на диске. Строчка Rewrite(F) создает новый файл или перезаписывает существующий. ЧТо бы данные не заменялись а добавлялись в конец файла эту строчку нужно заменить на Append(F). Далее идет цикл с 0 до количества всех строк Memo1. В цикле содержимое все строк Memo1 по порядку записывается в файл. Обратите внимание, что я использую WriteLn для записи новой строчки. Если бы я использовал Write, то все строчки Memo1 в файле превратились в одну.

Обработчик второй кнопки должен выглядеть примерно так:

procedure TForm1.Button2Click(Sender: TObject);

var

F : TextFile;

FileName, tmp : String;

begin

FileName := InputBox("Имя файла", "Введите имя файла", "default.txt");

AssignFile(F, FileName);

Reset(F);

while not EOF(f) do

begin

ReadLn(F, tmp);

Memo1.Lines.Add(tmp);

end;

CloseFile(F);

end;

Назначение локальных переменных в этой процедуре аналогичны предудыщим. Первая и вторая строчка аналогичны строчками из обработчика первой кнопки. Reset(F) - это я открываю файл для чтения процедурой Reset. Далее запускается цикл по всему файлу (while not EOF(F) do). Функция EOF(F : File) возвращает true когда достигнут конец файла. В цикле читается одна строчка из файла в переменную tmp и добавляется в Memo1. Вот и все, думаю довольно просто. Однако программу легко обмануть и вызвать исключение. Например при чтении файла пользователь может задать имя несуществующего файла. Тогда возникнет ошибка. Далее мы поговорим о способах защиты программы от исключений

Способ 1 - Простейший

Конечно простейший, но достаточно эффективный способ защиты можно организовать с помощью вложенных блоков try - except и try - finally. Вы знаете, что если при выполнении инструкции в теле блока try - except происходит исключение, то выполнение дальнейших инструкций останавливается и выполняется то, что находится между except - end. Но если возникло исключение, а далее находится CloseFile(F), то эта процедура не выполняется и программа не сможет корректно работать и завершиться. Решение этой проблемы - использование вложенных try - except и try - finally. Вот пример

var

F : TextFile;

S : String;

...

begin

try

try

...

Reset(F);

ReadLn(F, S);

...

except

MessageDlg("Ошибка работы с файлом", mtError, [mbOk], 0);

end;

finally

CloseFile(F);

end;

Но этот способ может не сработать, если была попытка открытия несуществующего файла (возникнет искючение при выполнении CloseFile(F)).

Способ 2 - Эффективный

Известно, что программа сама берет на себя обработку исключений. Но она не всегда делает это правильно. Поэтому лучшим решением было бы самому проконтролировать момент открытия файла. Для этого нужно сначала отключить автоматическую обработку исключений директивой {I-}. А включить можно так: {I+}. Потом свериться со значением функции IOResult. При успешном открытии файла она возвращает 0. Вот пример:

{I-}

Reset(F);

{I+}

if IOResult<>0 then

begin

MessageDlg("Файл "+PChar(FileName)+ " несуществует", mtError, [mbOk], 0);

EXIT; //продолжать нельзя

end;

Все это вставьте в процедуру чтения файла (в примере выше) вместо строки Reset(F). Так же можно застраховаться от сбоев вставив эту конструкцию в процедуру сохранения файла вместо строки Rewrite.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156492
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
64 096 оценок star star star star star
среднее 4.9 из 5
РАНХиГС
Срок был очень сжатый, но Анна справилась даже раньше. Спасибо огромное!
star star star star star
СПБГТИ
Спасибо большое Маргарите. Очень отзывчивая девушка, на все замечания реагирует молниеносно)
star star star star star
СПбУТУиЭ
Спасибо огромное! Работу нужно было сдать срочно, максимум на следующий день. Ольга выполн...
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Отношение гос органов власти к физической культуре (Волгоградская...

Статья, Физическая культура

Срок сдачи к 25 дек.

1 минуту назад

Есть файл с готовой курсовой но ее нужно корректировать

Курсовая, Техническое обслуживание и ремонт автомобилей

Срок сдачи к 25 дек.

1 минуту назад

Разработать структуру цифрового продукта.

Контрольная, Менеджмент организации

Срок сдачи к 23 янв.

3 минуты назад

Нужно подправить программу исследования ВКР

Другое, Дизайн психологического исследования

Срок сдачи к 25 дек.

4 минуты назад

«Кластерный анализ: иерархические методы кластеризации и метод к-средних»

Лабораторная, Статистическое моделирование и прогнозирование, статистика

Срок сдачи к 31 дек.

7 минут назад

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

Контрольная, Теория организации и управление изменениями

Срок сдачи к 26 дек.

8 минут назад

тмм

Контрольная, ТММ

Срок сдачи к 28 дек.

8 минут назад

Решить задачу

Решение задач, Материаловедение

Срок сдачи к 26 дек.

9 минут назад

надо сделать только задачи, все 5 штук, титульник сама оформлю

Контрольная, Основы математической обработки информации, математика

Срок сдачи к 30 дек.

10 минут назад

Решить контрольную из 5 задач по элтеху

Контрольная, Электротехника и электроника

Срок сдачи к 26 дек.

11 минут назад

решить 8 задач

Решение задач, Философия

Срок сдачи к 31 дек.

11 минут назад

Лабораторная работа

Онлайн-помощь, Информатика

Срок сдачи к 25 дек.

11 минут назад

зеленая поветска

Контрольная, Экология

Срок сдачи к 26 дек.

11 минут назад

Написать небольшой реферат

Реферат, Биохимия

Срок сдачи к 25 дек.

11 минут назад

Написать курсовую работу

Курсовая, Геология

Срок сдачи к 31 дек.

11 минут назад

Сделать презентацию на ~10-15 слайдов и написать к ней спич

Презентация, Информационная безопасность

Срок сдачи к 25 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно