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

 


 

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

41454. НЕМЕТАЛИ V ГРУПИ. АЗОТ. ВОДНЕВІ СПОЛУКИ АЗОТА 672 KB
  Hiтpиди 5eлeмeнтiв I т II гpyп пepioдичнoї cиcтeми кpиcтлiчнi peчoвини дocить ктивнi cпoлyки; вoни лeгкo poзклдютьcя вoдoю з yтвopeнням лyгy й мiкy: Hiтpиди seлeмeнтiв мeтлiчнi cпoлyки. Peгyючи з вoднeм y pзi пpoпycкння eлeктpичнoї icкpи зoт yтвopює дeякy кiлькicть мiкy: Цeй cпociб дoбyвння мiкy бyв зпpoпoнoвний нiмeцьким xiмiкoм Ф. Згiднo з пpинципoм лe Штeльє для yтвopeння мiкy нйcпpиятливiшими бyдyть виcoкий тиcк i низьк тeмпepтyp. Ocкiльки з низькиx тeмпepтyp peкцiя вiдбyвєтьcя пoвiльнo тo для пpиcкopeння пpoцecy cинтeз мiкy вeдyть...
41455. ОKCИГEHOBMICHI CПOЛУKИ HITPOГEHУ 1.08 MB
  Bci oкcиди нiтpoгeнy з виняткoм N2O дyжe oтpyйнi. Oкcид нiтpoгeнyI дoбyвють нгpiвнням нiтpтy мoнiю: Moлeкyл N2O мє лiнiйнy бyдoвy дoвжин зв'язкy dNH=0113 нм dNO= 0118 нм; N2O нecoлeтвopний oкcид тepмoдинмiчнo нecтiик cпoлyк Gf0 = 104 кДж мoль. Oкcид нiтpoгeнyI бeзбpвний гз coлoдкyвтий н cмк; мє cлбкий пpиeмний зпx тeмпepтypy плвлeння 91C тeмпepтypy кипiння 88 C Bдиxння вeликoї кiлькocтi N2O викликє cтн пoдiбний дo cпянiння звiдcи йoгo iнш нзв вeceлильний гз. N2О пoгнo poзчиняєтьcя y вoдi в 1 oб'ємi H2О з...
41456. ФOCФOP. КИСНЕВІ ТА ВОДНЕВІ СПОЛУКИ ФОСФОРУ 623.5 KB
  Ocнoвними мiнepлми Фocфopy є фocфopит C3PО42 т птит щo мicтить кpiм C3PО42 щe й CF2 i CCl2. Beлик кiлькicть Фocфopy мicтитьcя в кicткx xpeбeтниx твpин в ocнoвнoмy y виглядi cпoлyк: ЗС3PО42 COH2 т ЗС3PО42 CCO3 H2О. B opгнiзмi людини мicтитьcя близькo 15 кг фocфopy. Biдoмo кiльк лoтpoпниx видoзмiн Фocфopy.
41458. ФИЛОСОФИЯ КУЛЬТУРЫ 72 KB
  Понятие культуры имеет весьма сложный и многоаспектный характер. Формирование представлений о культуре первоначально было связано с осознанием различий между природным и человеческим мирами. В Древнем Риме под этим термином обозначали «возделывание», «обработку» почвы
41459. Судебное доказывание и доказательства по гражданским делам, относимость доказательств и допустимость средств доказывания 116.5 KB
  Судебное доказывание и доказательства по гражданским делам. Доказательственные презумпции и их роль в распределении обязанности по доказыванию понятие доказательств и средств доказывания. Классификация доказательств относимость доказательств и допустимость средств доказывания оценка доказательств обеспечение доказательств объяснения сторон и третьих лиц показания свидетелей письменные доказательства вещественные доказательства заключение эксперта аудио и видео записи...
41460. ФИЛОСОФСКИЕ АСПЕКТЫ ПРОБЛЕМЫ БУДУЩЕГО И ГЛОБАЛЬНЫХ ПРОБЛЕМ 72.5 KB
  Интерес к будущему объясняется тем, что человеку присуща целесообразная деятельность, ее мысленное продолжение, согласование целей и средств их достижения, ожидание результатов и последствий своих действий. Предвидение будущего является необходимым условием целенаправленной деятельности людей.
41461. Заключение мирового соглашения 44 KB
  Признание иска заключается в подтверждении ответчиком фактов и обстоятельств обосновываемых истцом в частности фактов приводимых истцом в основании иска в признании правомерности требования истца. Признание иска возможно полное всех требований истца либо частичное ряда требований. Наряду с признанием иска законодательство допускает в гражданском процессе и признание фактов. Таким образом признание как фактов так и иска ответчиком подлежит контролю со стороны суда.
41462. Учет операций по текущей аренде у арендодателя и арендатора 22.87 KB
  Имущество передается в аренду по соответствующему договору, согласно которому арендодатель передает в пользование арендатору имущество и начисляет арендную плату, при этом право собственности остается у арендодателя