- •Д.С.Ситкин
- •Информатика.
- •Программированиевdelphi
- •Лабораторныйпрактикум
- •Содержание
- •Введение
- •Основныепонятияпрограммирования
- •Этапыпрограммирования
- •Средаdelphi.Созданиепростейшегопроекта
- •Формаиеёсвойства
- •Компонентыформыиихсвойства
- •КомпонентLabeledEdit
- •Событиеипроцедураобработкисобытия
- •Пример1.1
- •Компиляцияизапускпроектанаисполнение
- •Структураисохранениепроекта
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Линейныйалгоритм
- •Типыданных
- •Константыипеременные
- •Арифметическиеоперации
- •Правилазаписитиповыхдействий
- •Структурапроцедурыобработкисобытия
- •Пример2.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Подпрограммы
- •Классификацияиструктураподпрограмм
- •Механизмработыподпрограммыиобменапараметрами
- •Пример3.1
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Структурамодуля
- •Созданиеиподключениемодуля
- •Пример4.1
- •Условныйоператор.Неполнаяформа
- •Условныйоператор.Полнаяформа
- •IfусловиеthenоператорS1elseоператорS2
- •Пример5.1
- •Пример5.2
- •Операторвыбора
- •Пример5.3
- •Содержаниеотчёта
- •Контрольныевопросы
- •Контрольсинтаксисавводимыхданных
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Алгоритмыповторений
- •Операторцикласпредварительнымусловием
- •Пример7.1
- •Операторцикласпараметром(сосчётчиком)
- •Пример7.2
- •Пример7.3
- •Операторцикласпоследующимусловием
- •Пример7.4
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Массивы
- •Объявлениемассива
- •Обработкамассивов
- •Пример8.1
- •Динамическиемассивы
- •Подпрограммасоткрытымпараметром-массивом
- •Пример8.2
- •Целесообразностьвыделенияпамятиподмассивы
- •Контрольсинтаксисаэлементовмассива
- •Задание
- •Обработкамногомерныхмассивов
- •Пример9.1
- •КомпонентStringGrid
- •Пример9.2
- •Сортировкамассивов
- •Пример9.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Внешниефайлы
- •Физическиеилогическиефайлы
- •Классификациялогическихфайлов
- •Процедурыифункцииобработкифайлов
- •Пример 10.1
- •КомпонентыOpenDialog иSaveDialog
- •Пример 10.2
- •Пример 10.3
- •Задание
- •Содержаниеотчёта
- •Контрольныевопросы
- •Олабораторнойработе
- •Информатика. Программированиев delphi
Пример 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:=0ton1doRead(f,x[i]);//посимвольноесчитываниевмассив
fori:=n1downto0doWrite(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
слева программист прописывает имена фильтров, а справа, через точ-кусзапятой,перечисляетрасширенияфайловспредшествующимсимволом «*», которые будут отображены в окне диалога в случаевыборапользователемсоответствующегофильтравзагруженномокневмомент работы приложения.
