Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sitkin_Informatika_Programmirovanie_v_DELPHI.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
600.56 Кб
Скачать

Пример 10.1

Считаемданныеввидепоследовательностисимволовизфайлаизапишемих вдругойфайлв обратнойпоследовательности.

Создадимфайлвтекстовомредакторе«Блокнот»сименем

«File1.txt», запишем в него какие-либо символы в строку и сохраним впапкупроекта.Второйфайл(длявывода) можно несоздавать.

Дляхранениясимволоввпамятибудемиспользоватьдинамиче-скиймассив,т.к.полагаем,чтоихчисловфайлезаранеенеизвестно.Предусмотримтакжепрограммныйконтрольпроцессаоткрытияфай-ладлячтенияданныхиналичияданныхвнём,т.к.любаяизэтихошибок приведёт к аварийной остановке работы приложения.procedureTForm1.Button1Click(Sender: TObject);

varf, g:file ofchar; //объявление двух типизованных файлов символовx:array ofchar; //объявление динамического символьного массиваi,n:byte;

begin

AssignFile(f,'File1.txt'); //связываниефиз.файласфайловойпеременной

{$I}//отключениеавтоматическойобработкиошибокввода/вывода

Reset(f);//открытие1-гофайладлясчитыванияданных

{$I+}//восстановлениеавтоматическойобработкиошибокввода/вывода

ifIOResult < >0then//если есть ошибка доступа к файлу, то закрыть прил-еbeginshowmessage('Файл не найден. Приложение закрыть');Halt;end;n:=FileSize(f);//определениеколичества символоввпервомфайле

ifn=0then//еслиданныхвфайленет, тозакрытьфайлиприложение

beginShowMessage('Файл пуст. Прил-е закрыть'); CloseFile(f); Halt;end;AssignFile(g, 'File2.txt'); //связывание физ. файла с файловой переменнойRewrite(g);//открытие(создание)2-гофайладляперезаписи(записи)данных

SetLength(x,n);//выделениепамятипод массивровносколькосимволов

fori:=0ton1doRead(f,x[i]);//посимвольноесчитываниевмассив

fori:=n1downto0doWrite(g,x[i]);//посимвольнаязаписьво2-ойфайл

SetLength(x,0); //высвобождение памяти из-под массиваCloseFile(f);CloseFile(g);//закрытиеобоихфайловend;

Программная проверка открытия второго файла не предусмот-рена, т.к. если файла для записи данных нет, то процедура Rewrite со-здаст его. А если бы он открывался процедурой Reset (она позволяетне только читать, но и записывать в типизованные файлы), то провер-куследовалобыпредусмотреть,т.к.онатолькооткрываетфайл.

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

КомпонентыOpenDialog иSaveDialog

вкладкаdialogs

Предназначены для загрузки стандартных оконWindowsоткры-тия и сохранения файла соответственно, и предоставляют возможно-сти по настройке свойств окон на этапе конструирования. Из этихоконпользовательвовремяработыприложенияможетвыбиратьфайлы для считывания или записи данных. Это обстоятельство делаетработу приложения более гибкой. Оба компонента невизуальныевовремя работы приложения на форме не видны. Их значки видимытолько на этапе разработки формы. Пиктограммы компонентов рас-положены на вкладкеDialogsпалитры компонентов. Свойства обоихкомпонентовсходны,основныеизних представленыв табл.10.1.

Таблица 10.1ОсновныесвойствакомпонентовOpenDialogиSaveDialog

Свойство

(метод)

Описание

Name

Имякомпонента.Используетсядлядоступак

компонентуиегосвойствам

Execute(метод)

Вызовокнаоткрытияилисохраненияфайла.Имеет значениеTrue, если пользователь выбралфайл в окне и щёлкнул «Открыть» («Сохранить»)изначениеFalse,еслифайлнебылвыбранили

пользовательщёлкнул«Отмена»илизакрылокно

Title

Заголовококна.Еслисвойствопустое,товзаго-

ловкезаписано«Открыть»(«Сохранитькак»)

InitialDir

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

папка,открытаяприпоследнейзагрузкиокна

Filter

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

фильтраFilterName.Еслисвойствопустое,тоотображаютсяименавсех файлов

FileName

Получаетзначение строкового типа равноеимени

выбранногофайласполнымпутёмдоступа

Для выбора типа отображаемых файлов в окне диалога на этапеконструирования формы нужно щёлкнуть кнопку открытия редакторафильтров в свойствеFilterв окнеObject Inspectorдля компонентаOpenDialogилиSaveDialog(рис.10.1).ВоткрывшемсяокнеFilterEditor

Рис.10.1

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