2.1.1. Разработаем метод, который при закрытии программы все страницы блокнота будет сохранять в отдельных файлах в каталоге, указанном в переменной dir.
В разделе public описания класса TNoteBookF опишите метод SaveAll и переменную dir:
public
dir: string;
procedure SaveAll;
В разделе Implementation модуля опишите программный код метода:
procedure TNoteBookF.SaveAll;
var i: integer;
TempComponent: TListBox;
begin
InputQuery('Введите полное имя каталога ' , ‘’,dir);
for i:=0 to 11 do
begin
NoteBookl.PageIndex:=i;
TempComponent:=
TListBox(FindComponent('ListBox'+IntToStr(i + 1))) ;
TempComponent.Items.SaveToFile(dir+’Месяц'+intToStr(i+1));
{Строки компонента ListBox сохраняются в соответствующем файле}
end;
end;
Описанный метод должен использоваться как дополнительный обработчик кнопки ‘Закрыть’ и выполняться до основного обработчика Close.
2.1.2. Сохраните и запустите приложение. Убедитесь в работоспособности приложения для существующих каталогов. Попробуйте сохранить файлы в несуществующий каталог.
Для несуществующего каталога операционная система возбуждает исключительную ситуацию класса EFCreateError, результатом которой является сообщение об ошибке.
2.1.3. Чтобы обезопасить приложение от подобного вида ошибок, добавим в обработчик блок обработки исключительной ситуации EFCreateError, возникающей при сохранении файла:
begin
InputQuery('Введите полное имя каталога ', ‘’ , dir);
if dir[length(dir)]<>'\' then dir:=dir+'\';
{в конец строки добавляется разделитель подкаталогов}
for i:=0 to 11 do
begin
NoteBookl.PageIndex:=i;
TempComponent:=
TListBox(FindComponent('ListBox'+IntToStr(i+1)));
try
TempComponent.Items.SaveToFile(dir+'Месяц'+intToStr(i+1));
{Строки компонента ListBox сохраняются в соответствующем файле}
except
on EFCreateError do
begin
{класс исключений, возникающих при неудачных попытках создания файла}
{далее размещается текст обработчика}
MessageBox(0,'Не верно задан путь к каталогу!','ОШИБКА',MB_ICONERROR);
if IDOK=1 then
begin
InputQuery('Введите правильное имя каталога','На диске D:',dir);
if dir[length(dir)]<>'\' then dir:=dir+'\';
TempComponent.Items.SaveToFile(dir+'Месяц'+intToStr(i+1));
end;
end;
end;
end;
end;
2.1.4. Запустите приложение. Убедитесь, что при вводе неправильного имени каталога происходит обработка исключительной ситуации, в результате которой программа выдает сообщение об ошибке и запрашивает правильное имя каталога.
|