77972

екстовые файлы. Диалоги для работы с файлами, настройка цвета и шрифта

Лекция

Информатика, кибернетика и программирование

Диалоги для работы с файлами настройка цвета и шрифта. Для облегчения работы с файлами в Delphi каждый отдельный файл представляет файловая переменная. Объявления файлов переменной Файловая переменная в общем виде объявляется в разделе vr примерно так...

Русский

2015-02-05

53.5 KB

0 чел.

Текстовые файлы. Диалоги для работы с файлами, настройка цвета и шрифта.

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

Объявления файлов переменной

Файловая переменная в общем виде объявляется в разделе 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 day;

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

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

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

 AssignFile(var F:file; FileName:string);

Например:

 var F:TextFile;

begin

AssignFile(F,”text.txt”);

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

Стандартные операции с файлами

 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);

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

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

Закрытие файла

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

Простейший пример программы, которая по нажатию одной кнопки будет запрашивать имя файла у пользователя и запрашивать имя файла, ситать оттуда записанные данные и помещать их в 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) создает новый файл или перезаписывает существующий. Чтобы данные не заменялись а добавлялись в конец файла эту строчку нужно заменить на Appened(F). далее идет цикл с 0 до количества всех строк Memo1. В цикле содержимое все строк Memo1 по порядку записывается в файл. Обработчик второй кнопки должен выглядеть примерно так:

procedure TForm1.Button2Click(Sender:TObject) ;

var

F:TextFile;

FileName,tmp:string;

begin

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

AssignFile(F,FileName);

Rewrite(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. Вот и все, думаю довольно просто. Однако программу легко обмануть и вызвать исключение. Например при чтения файла пользователь может задать имя несуществующиего файла. Тогда возникнет ошибка. Далее мы поговорим о способах защиты программы от исключений.

Компоненты TSaveDialog и TOpenDialog.

Это компоненты имеют идентичные свойства и поэтому рассматриваются вместе.

Таблица1. Свойства TSaveDialog и TOpenDialog

FileName

Содержит маршрут поиска и выбранный файл при усаешном завершении диалога.

Filter

Используется для фильтрации (отбор) файлов, показываемых в диалоговом окне.

InitialDir

Содержит имя начального каталога.

DefaultExt

С помпщью свойства DefaultExt формируется полное имя файла, если при ручном вводе пользователь не указал расширение. В этом случае к имени файла прибавляется разделительная точка и содержимое этого свойства.

Title

Содержит заголовок диалогового окна

Программа может использовать это свойство FileName для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog), при этом пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтения отсутствие файла может привести к краху программы. Чтобы ибежать этого, можно проверить существование файла глобальный функцией FileExists.

Свойство Filter можно устанавливать с помпщью специального редактора на этапе конструирования формы или программно. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна Испектора объектов. При прогаммном вводе фильтры задаются одной длинной строке, в которой символы “|” служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбоа. Например, оператор

 OpenDialog1.Filter:=’Текстовые файлы|*txt|Файлы Паскаля|*.pas’;

задает две маски для отбора файлов с расширением pas и TXT.

Главным методом компонента TSaveDialog и TOpenDialog является функция Execute, которая показывает окно диалога и возвращает значение True, если диалог успешно завершен, т.е пользовател ввел подходящее имя файла и нажал кнопку Сохранить/Открыть

 


 

А также другие работы, которые могут Вас заинтересовать

79835. КЛАССИФИКАЦИОННЫЕ ПОДХОДЫ К ГРУППИРОВКЕ И ОРГАНИЗАЦИИ ИННОВАЦИЙ 64 KB
  ИН структуры предприятия Целевые качественные или количественные изменения в выборе и использовании материалов сырья информации оборудования информации работников и других ресурсов Целевые изменения в производственных обслуживающих и вспомогательных процессах как по качеству так и по количеству а так же по организации и способу ее обеспечения. То есть изменения отдельных элементов и их взаимных связей в структуре предприятия как системе Целевые качественны или количественные изменения в результатах производственно хозяйственной...
79836. Анализ использования основных производственных фондов и производственных мощностей 218.5 KB
  Цели и задачи анализа использования основных производственных фондов При анализе использования основных производственных фондов решаются следующие задачи: изучение структуры состава и движения основных производственных фондов; их распределение по местам использования и назначения; оценка технического состояния фондов степени их обновления и технического совершенства; изучение эффективности использования основных производственных фондов; определение технического состояния машин и оборудования; оценка уровня использования производственной...
79842. Анализ организационно-технического уровня производства 132.5 KB
  Совершенствование организационно-технического уровня хозяйственной деятельности - это комплексный непрерывный процесс его рационализации, охватывающий научно-технический прогресс и научно-технический уровень