Диалоговые панели File Open и File Save 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Диалоговые панели File Open и File Save



 

Диалоговые панели File Open (открыть файл) и File Save (сохранить файл) имеют несколько общих свойств. Диалог File Open используется для открытия файла в приложении. Через диалоговую панель File Save вы получаете от пользователя имя, под которым должен сохраняться файл. Эта панель используется и как диалог Save As.

Компоненты TOpenDialog и TSaveDialog просто возвращают имя файла, введенное пользователем. Написание кода, который выполняет нужные действия над выбранным файлом, осуществляет программист.

Основные свойства компонентов TOpenDialog и TSaveDialog:

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

FileName – содержит имя файла, который выбирает пользователь. Установите значение этого свойства перед вызовом диалоговой панели, если хотите, чтобы при появлении диалога на экране поле ввода уже содержало имя файла. После того как пользователь нажмет ОК для закрытия диалога, это свойство будет содержать полный маршрут и имя выбранного файла.

Filter – содержит список типов файлов, которые пользователь может выбирать. Типы файлов выводятся в комбинированном списке File of type. С помощью этого свойства Вы можете задать типы файлов, которые нужны Вашему приложению. Например, простая программа редактирования текстов могла бы иметь фильтры для типов txt, ini и log.

На этапе проектирования программы можно задать нужные фильтры, используя диалоговую панель редактора фильтров (Filter Editor). Чтобы вызвать редактор фильтров, дважды щелкните в столбце Value инспектора объектов рядом со свойством Filter. Столбец Filter Name содержит текстовое описание типа файла. В столбце Filter указы-вается маска, которая будет использоваться при отборе файлов.

Хотя строку фильтра можно ввести непосредственно в столбец Value Инспектора объектов, удобнее всего использовать редактор фильтров. Одиночный фильтр определяется непосредственно в столбце Value. Описание и фильтр отделяются друг от друга символом "|". На-пример, чтобы задать один фильтр для всех типов файлов, Вы можете ввести следующую строку: All Files (*.*) | *.*

FilterIndex – используется для установки фильтра, который будет выбран при первом отображении диалоговой панели.

InitialDir – определяет каталог, который будет использоваться в качестве начального при отображении диалоговой панели File. Если для свойства InitialDir никакого значения не задано, будет использован текущий каталог (как это принято в Windows).

Title – используется для задания или чтения заголовка диалоговой панели. Если заголовок не определен, то используется стандартное значение по умолчанию: Open для компонента OpenDialog и Save для компонента SaveDialog.

 

Файлы

 

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

Как и любая структура данных (переменная, массив) программы, файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла.

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

Имя:file of ТипЭлементов;

Примеры:

res: file of char; // файл символов

koef: file of real; // файл вещественных чисел

f: file of integer; // файл целых чисел

Файл, компонентами которого являются данные символьного типа, называется символьным, или текстовым. Описание текстового файла в общем виде выглядит так:

Имя: TextFile;

где:

· имя — имя файловой переменной;

· TextFile — обозначение- типа, показывающее, что Имя — это файловая переменная, представляющая текстовый файл.

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

Имя файла задается вызовом процедуры AssignFile, связывающей файловую переменную с конкретным файлом.

Описание процедуры AssignFile выглядит следующим образом:

AssignFile (var f, ИмяФайла: string);

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

Ниже приведены примеры вызова процедуры AssignFiie:

AssignFile(f, 'a:\result.txt');

fname:=('otchet.txt'); AssignFile(f,fname);

 

Вывод в файл

Вывод в текстовый файл осуществляется с помощью операторов write и writeln, которые в общем виде записываются так:

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

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

где:

· ФайловаяПеременная — переменная, идентифицирующая файл, в который выполняется вывод;

· СписокВывода -- разделенные запятыми имена переменных, значения которых надо вывести в файл. Помимо имен переменных в список вывода можно включать строковые константы.

Например, если переменная f является переменной типа TextFile, то инструкция вывода значений переменных x1 и х2 в файл может быть такой:

write(f, 'Корни уравнения', xl, х2);

Записать в файл массив, элементы которого отображаются в поле Memo, можно так:

for i: =0 to Memo1.Lines.Count do // строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

Различие между инструкциями write и writeln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ "новая строка".

 

Открытие файла для записи

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

Возможны следующие режимы открытия файла для записи в него данных:

· перезапись (запись нового файла поверх существующего или создание нового файла);

· добавление в существующий файл.

Для того чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру Rewrite(f), где f — файловая переменная типа TextFile.

Для того чтобы открыть файл в режиме добавления к уже существующим данным, находящимся в этом файле, нужно вызвать процедуру Append (f), где f — файловая переменная типа TextFile

 

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

После окончания работы с файлом его необходимо закрыть:

CloseFile (f);

Если файл не будет закрыт, то записанные в него данные не будут сохранены.

 

Ввод из файла

 

Программа может вводить исходные данные не только с клавиатуры, но и из текстового файла. Для того чтобы воспользоваться этой возможностью, нужно объявить файловую переменную типа TextFile, назначить ей при помощи инструкции AssignFile имя файла, из которого будут считываться данные, открыть файл для чтения (ввода) и прочитать (ввести) данные. Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются следующим образом:

read(ФайловаяПеременная, СписокПеременных);

readin(ФайловаяПеременная, СписокПеременных);

где:

· ФайловаяПеременная — переменная типа TextFile;

· СписокПеременных — имена переменных, разделенные запятыми.

 

 

Открытие файла для чтения

Открытие файла для ввода (чтения) выполняется вызовом процедуры Reset, имеющей один параметр — файловую переменную. Перед вызовом процедуры Reset с помощью функции AssignFile файловая переменная должна быть связана с конкретным файлом.

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

AssignFile(f, 'c:\data.txt');

Reset(f);

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

 

Чтение чисел

Следует понимать, что в текстовом файле находятся не числа, а их изображения. Действие, выполняемое инструкциями read или readln, фактически состоит из двух: сначала из файла читаются символы до появления разделителя (пробела или конца строки), затем прочитанные символы, являющиеся изображением числа, преобразуются в число, и полученное значение присваивается переменной, имя которой указано в качестве параметра инструкции read или readln.

Например, если текстовый файл а: \data. txt содержит следующие строки:

23 15

45 28

56 71

то в результате выполнения инструкций:

AssignFile(f, 'a:\data.txt');

Reset(f); // открыть для чтения

read(f, а);

read(f, b, с);

read(f, d);

значения переменных будут следующими: а = 23, b = 15, с = 45, d = 28.

Отличие инструкции readln от read состоит в том, что после считывания из файла очередного числа и присвоения полученного значения переменной, имя которой стоит последним в списке параметров инструкции readln, указатель чтения из файла автоматически перемещается в начало следующей строки файла, даже в том случае, если за прочитанным числом есть еще числа.

Поэтому в результате выполнения инструкций

AssignFile(f,'a:\data.txt');

Reset(f);

readln(f, a);

readln(f, b, c);

readln(f, d);

значения переменных будут следующими: а = 23, b = 45, с = 28, d = 56.

Если при чтении значения численной переменной в файле вместо изображения числа будет какая-то другая последовательность символов, то произойдет ошибка.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 161; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.174.168 (0.025 с.)