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

 


 

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

72886. Вредные выбросы ТЭС и методы их снижения 62.5 KB
  Методы химической очистки газов от NOХ бывают: окислительные основанные на окислении оксида азота в диоксид с последующим поглощением различными поглотителями; восстановительные основанные на восстановлении оксида азота до азота и кислорода с применением катализаторов...
72887. Экологические проблемы при добыче и переработке твердого топлива 62.5 KB
  Эти прогнозные оценки исходят из экономически извлекаемых запасов угля на самом деле их значительно больше. Прогнозные запасы угля доступного к разработке оцениваются в 25 3 трлн. Если исходить из современной ежегодной мировой добычи угля примерно 3 млрд. тонн то его хватит на 1000 лет...
72888. Радиоактивный газ радон и правила защиты от его воздействия 60 KB
  Радон это инертный тяжелый газ в 75 раз тяжелее воздуха который высвобождается из почвы повсеместно или выделяется из некоторых строительных материалов например гранита пемзы кирпича из красной глины. Продукты распада радона радиоактивные изотопы свинца висмута...
72889. Биологическое действие продуктов радиоактивности. Нормирование ионизирующих излучений и способы защиты от них 68 KB
  Степень биологического влияния ионизирующего излучения зависит от поглощения живой тканью энергии и ионизации молекул которая возникает при этом. Под влиянием ионизирующего излучения в организме нарушаются функции кровотворних органов растет хрупкость и проницаемость сосудов...
72890. Экспозиционная доза. Поглощенная доза. Предельно допустимая доза. Эквивалентная доза 63.5 KB
  Экспозиционная доза.Основная характеристика взаимодействия ионизирующего излучения и среды — это ионизационный эффект. В начальный период развития радиационной дозиметрии чаще всего приходилось иметь дело с рентгеновским излучением, распространявшимся в воздухе.
72891. Радиоактивное загрязнение окружающей среды. Виды ионизирующих излучений. Единицы измерения 63 KB
  Особое место среди загрязняющих окружающую среду агентов занимают радиоактивные вещества. Внимание к нему сильно возросло после аварии на Чернобыльской АЭС в 1986 г. и ряда инцидентов на других гражданских и военных объектах с ядерным топливом.
72892. Источники инфракрасного (ИК) излучения. Тепловые загрязнения и способы борьбы с ними 66 KB
  Помимо биологических существуют также физические и химические способы очистки выбросов в атмосферу. Для этого используют прогонку через пылеуловитель действующий по принципу мокрой очистки или применяют распыление воды на мелкие капли в так называемых скруберах...
72893. Естественные и техногенные источники ультрафиолетового излучения (УФИ). Биологическое действие УФИ. Природные источники 65.5 KB
  Основной источник ультрафиолетового излучения на Земле — Солнце. Соотношение интенсивности излучения УФ-А и УФ-Б, общее количество ультрафиолетовых лучей, достигающих поверхности Земли, зависит от следующих факторов: от концентрации атмосферного озона над земной поверхностью...