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, если диалог успешно завершен, т.е пользовател ввел подходящее имя файла и нажал кнопку Сохранить/Открыть

 


 

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

20917. Исследование электрических гиромоторов 327 KB
  Совокупность ротора электропривода роторных опор называемых главными опорами гироскопа и элементов крепящих двигатель на раме гироскопа представляет собой гиромотор гиродвигатель. Кинетический момент равен произведению момента инерции ротора J на угловую скорость его вращения 2: H=J2 . Для получения максимально возможного момента инерции ротора в заданных габаритах гиромоторы выполняются по обращенной схеме. В отличие от обычного двигателя статор гиромотора размещается внутри охватывающего его ротора.
20918. Классификаторы, коды и технология их применения 117 KB
  Контрольное число контрольная цифра разновидность контрольной суммы добавляется обычно в конец длинных номеров с целью первичной проверки их правильности. Контрольное число чаще всего это либо последняя цифра суммы всех чисел номера либо результат другой математической операции над цифрами. Вычисляется контрольное число A как остаток от деления контрольной суммы на 11 3. Если контрольное число A больше 9 то результирующее контрольное число A вычисляется как остаток от деления A на 10 4.
20919. Организационно-экономическая сущность задачи 2.16 MB
  Для этого рассмотрим: внешние и внутренние связи подразделения для которого создается АИС; информационная взаимосвязь входной и выходной информации; способы отправки и доставки информации. Информационная взаимосвязь подразделений данного экономического объекта позволяет определить состав взаимосвязанных подразделений объекта и место подразделения для функционирования которого необходимо решение данной задачи. Пример отражения информационной взаимосвязи подразделений супермаркета и выделение конкретного подразделения в частности отдела...
20920. ДОСЛІДЖЕННЯ СХЕМ ПОРІВНЯННЯ НАПРУГ 452 KB
  На панелі Джерела натиснути відповідні кнопки вибору сигналу постійного струму і включити стенд. На панелі U вх натиснути кнопку Джер. 1 панелі Джерела встановити напруга на вході 1 компаратора рівне U вх = 3 В. На панелі натиснути кнопку Джер.
20921. ДОСЛІДЖЕННЯ РОБОТИ МУЛЬТИВІБРАТОРА 64.5 KB
  2 із зображенням мультивібратора рис. Визначити за допомогою осцилографа амплітуду частоту і шпаруватість сигналу на виході мультивібратора. Часові діаграми роботи мультивібратора показані на рис.
20922. ДОСЛІДЖЕННЯ ІНТЕГРАТОРА 184 KB
  Експериментальне визначення перехідних характеристик інтегратора рис. Натисніть кнопку 20 сек панелі і кнопку С1 Інтегратор відлічуючи по секундоміру стенду час за допомогою U вих виконайте вимірювання зміни в часі вихідної напруги інтегратора. побудуйте перехідні характеристики інтегратора.
20923. ДОСЛІДЖЕННЯ ЕЛЕМЕНТІВ, ЩО ВИКОНУЮТЬ ЛОГІЧНІ ОПЕРАЦІЇ 105.5 KB
  Мета роботи: ознайомитися з принципом і режимом роботи логічних елементів. При виконанні роботи визначаються передавальні характеристики логічного елементу при різних опорах навантаження а також складаються таблиці станів для логічних елементів €œІ€ €œНІ€ €АБО€ €АБОНІ€ €ІНІ€. Визначення передавальних характеристик логічних елементів рис. Складання таблиць істинності логічних елементів.
20924. ДОСЛІДЖЕННЯ ТРИГЕРІВ 241 KB
  При виконанні цієї роботи вивчається дія асинхронного RSтригера а також двох синхронних: Ттригера і JКтригера Порядок виконання роботи Робота виконується на лабораторному стенді ЭС21. Дослідження RS тригера рис. З'єднати входи R і S тригера з клемами панелі Рівень логічний. З'єднати прямий вихід тригера з клемами вольтметра що вимірює вихідний сигнал.
20925. ДОСЛІДЖЕННЯ ЛІЧИЛЬНИКІВ 1.12 MB
  Порядок виконання роботи Робота виконується на стенді ЭС21 Дослідження двійкового лічильника рис11. З'єднати вхід R лічильника з клемою панелі €œРівень логічний€ а вхід С лічильника з клемою панелі €œІмпульс одиночний€ і з клемою €œВхід€ панелі €œЛічильник імпульсів€. Натисненням кнопки панелі €œІмпульс одиночний€ подавати імпульси на вхід С досліджуваного лічильника. Після подачі чергового імпульсу визначати стан всіх виходів досліджуваного лічильника за допомогою вольтметра €œ U вих.