Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi5.doc
Скачиваний:
62
Добавлен:
06.02.2015
Размер:
151.04 Кб
Скачать

Лабораторная работа №5. Работа в DELPHI.

Работа с файлами (на примере текстового)

Delphi предоставляет достаточно широкий спектр методов работы с файлами. Часть из них это процедуры и функции самой среды Delphi, остальная часть это некоторые API функции ОС Windows. Мы кратко рассмотрим только работу с текстовыми файлами используя методы самой среды Delphi.

Создадим файл и откроем его в режиме добавления данных.

Поместите на форму следующие компоненты (рис. 1).

Компонент

Свойство

Значение свойства

Label1

Caption

Имя Файла

Edit1

Text

test.txt

Button1

Caption

Создать

Button2

Caption

Добавить

Рис. 1 Приложение позволяющее создать текстовый файл

Задание 1.1 Требуется при щелчке на Button1 создать текстовый файл с именем указанным в текстовом поле Edit1, а затем добавить данные в уже созданный файл.

В обработчике щелчка кнопки с заголовком “Создать” напишите следующее:

var i,j:integer; f:TextFile; fname:string;

begin

fname:=edit1.Text; // задаем имя файла

AssignFile(f,fname); // связываем файловую переменную f и имя файла fname

rewrite(f); // Открытие файла в режиме создания нового файла

// или замены уже существующего

write(f, 'Студент ',25,' Университет ',16,25);// записываем все в одну строчку

for i:=1 to 4 do write(f, ' Строка ',i);// продолжаем записывать все в одну строчку

for i:=1 to 3 do writeln(f, ' Строка ',i);//записываем в столбик

CloseFile(f);// закрываем файл

if IoResult=0 then messageDlg('Файл удачно создан',mtInformation,[mbOK,mbCancel], 0) else

messageDlg('Произошла ошибка',mtError,[mbOK], 0);

end;

Запустите программу, щелкните на кнопке “Создать”. Зайдите в папку вашего проекта найдите созданный вами файл test.txt и откройте его и изучите расположение данных. Вернитесь в Режим Программирования.

Здесь f является файловой переменной.

Fname – является именем файла, можно написать Fname:=’fail.txt’ и тогда при создании файла он появится в папке вашего проекта, а можно непосредственно указать путь Fname:=’C:\fail.txt’ тогда появится на диске C.

В общем виде инструкции ввода и вывода в текстовый файл выглядят так:

Write(ФайловаяПеременная, СписокВывода)

WriteLn(ФайловаяПеременная, СписокВывода)

Отличие между ними состоит в том, что инструкция Writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ – “новая строка”, т.е. переходит на новую строку.

На всякий случай мы вызываем функцию IoResult (Input-Output Result- результат ввода-вывода), которая возвращает 0, если операция ввода-вывода завершилась успешно, в противном случае – не ноль.

Полезно запомнить удобную функцию MessageDlg(), она отображает на экране некоторое сообщение, при этом возвращает значение нажатой кнопки в виде mrOk или mrCancel. Например, допустима конструкция

if messageDlg('Файл удачно создан',mtInformation,[mbOK,mbCancel], 0) = mrOk then…

Нужно отметить, что процедура Rewrite(f) открывает файл в режиме создания нового файла, удаляя все данные из файла, если такой был с данным именем и добавляя новые данные, убедитесь в этом создав ещё Одну кнопку Button3 с надписью Создать2 (рис. 2).

Рис. 2 Добавляем ещё одну кнопку «Создать2»

В обработчике Button3 напишите

var fname:string; f:TextFile;

begin

fname:=edit1.Text;

AssignFile(f,fname);

rewrite(f);

write(f,'Komputer','Processor Core 2 Duo');

CloseFile(f);

end;

Запустите программу, имя файла должно быть тем же, щелкните на кнопке «Создать2». Зайдите в папку вашего проекта найдите заново созданный вами файл «test.txt», откройте его и увидите, что он полностью переписан. Вернитесь в Режим Программирования.

Задание 1.2 Теперь откроем уже готовый, созданный файл в режиме добавления. Процедура, открывающая файл в режиме добавления называется Append(f)

В обработчике кнопки с заголовком “Добавить” напишите:

var i:byte; fname:string; f:TextFile;

begin

fname:=edit1.Text;

AssignFile(f,fname);

append(f);

writeLn(f,'Dobavili',' USSR');

for i:=1 to 10 do

writeLn(f,' Dobavili ', i);

CloseFile(f);

end;

Запустите программу, щелкните на кнопке Добавить. Зайдите в папку вашего проекта найдите созданный вами файл test.txt и откройте его. Вы обнаружите, что к старым данным вашего файла прибавились новые, добавленные данные. Вернитесь в Режим программирования.

Задание 1.3 Создадим базу данных “Успеваемость” содержащую информацию об успеваемости студентов в виде текстового файла.

Создайте глобальную файловую переменную f. Скиньте компоненты Label и Edit и одну кнопку Button1 следующим образом (рис. 3):

Рис. 3 Окно приложения базы данных «Успеваемость»

В обработчике события FormActivate для формы напишите

AssignFile(f,'uspev.txt');

{$I-}

Append(f);

if IOResult=0 then Button1.Enabled:=True else

begin

Rewrite(f);

if IOResult=0 then Button1.Enabled:=True else

ShowMessage('Error Create File');

end;

Событие FormActivate формы Form1 генерируется, когда активизируется форма приложения, а активизируется оно после создания формы или сразу после выделения формы мышью. Директива {$I-} указывает компилятору не обрабатывать автоматически операции ввода-вывода, мы будем сами их обрабатывать, используя переменную IOResult.

Таким образом, если произошла ошибка при выполнении процедуры Append(f) то программа будет далее работать по алгоритму сообщений об ошибках не поступит.

Поэтому если файл uspev.txt существует и вы попытались его открыть в режиме добавления Append(f) , и никакой ошибки не произошло, то делаем доступной кнопку Button1.Enabled:=True, а если файла не существует, то естественно произойдет ошибка открытия (в таком случае значение IOResult<>0), но мы об этом не узнаем ибо мы отключили автоматическую обработку ошибок {$I-}. Таким образом, в случае несуществования файла мы просто его создаём Rewrite(f).

Теперь всё прописано и осталось добавить в обработчик кнопки следующий текст

if (length(edit1.text)<>0) or (length(edit2.text)<>0) or

(length(edit3.text)<>0) or (length(edit4.text)<>0) // Если длина любого поля не равна нулю,

// то пишем в файл}

then writeln(f,edit1.text,' ',edit2.text,' ',edit3.text,' ',edit4.text) else

showMessage('Заполните все поля');

Функция length() определяет длину строки объекта edit1.text.

Теперь при активизации события закрытия формы запрограммируем закрытие файла.

В обработчике события закрытия формы FormClose просто напишите

CloseFile(f).

Запустите программу, введите данные например Иванов, Иван, Физика, Отлично

затем щелкните на кнопке “Добавить в файл uspev.txt”. Введите еще несколько фамилий с данными. Закройте программу, Вернитесь в Режим программирования.

Зайдите в папку вашего проекта найдите uspev.txt и откройте его, все данные будут там.

Изучите содержимое файла.

Заметьте данные будут в файле uspev.txt только после того как вы закройте приложение так как именно там мы прописали CloseFile(f).

Соседние файлы в папке Лабы IT