Внастоящее время в компьютерном мире существует множество языков программирования
Вид материала | Документы |
Содержание6.2. Создание программы «редактор текста» Name) соответственно SBQuit, SBOpen F – переменная типа текстовый файл для связки с файлом на диске; C If ODText.Execute then If CBChar.Checked then |
- Календарный план учебных занятий по дисциплине «Языки и технология программирования», 43.35kb.
- Лекция №3. Состав и работа системы программирования Турбо Паскаль Язык программирования, 84.43kb.
- Лекция 3 Инструментальное по. Классификация языков программирования, 90.16kb.
- Внастоящее время существует большой социальный заказ на психологические методы профилактики, 117.85kb.
- Методические указания для выполнения лабораторных работ и курсовой работы содержание, 1317.09kb.
- Программа дисциплины Языки и технологии программирования Семестры, 20.19kb.
- Теория автоматов и формальных языков составил доцент А. А. Мальцев, 38.01kb.
- Внастоящее время в мире повсеместно и во все более разрастающихся масштабах происходит, 373.75kb.
- Вмире существует множество замечательных повестей, романов, рассказов и стихов, главными, 21kb.
- Пояснительная записка, 185.11kb.
6.2. Создание программы «редактор текста»
Задача: Написать программу, считывающую посимвольно информацию из текстового файла, позволяющую отредактировать считанный текст и сохранить файл на диске.
Окно программы представлено на рис.6.1.
Процесс создания программы происходит по следующему алгоритму:
- Запустить Delphi;
- Сохранить проект («work6.dpr», «main.pas»);
- Настроить вид экрана:
- Для отображения быстрой справки – подсказки для видимых элементов окна необходимо установить свойство формы ShowHint (показывать подсказку) в значение True. Все элементы, размещенные в окне, автоматически будут иметь свойство ShowHint в значении true;
- В
качестве дизайна окна будем использовать «главное меню» и панель «горячих клавиш». Поместить панель на форму и настроить ее свойства:
- Поместить панель (элемент Panel, вкладка Standard, значок );
- Изменить заголовок на ‘’ Caption;
- Изменить высоту панели так, чтобы она была чуть больше кнопок, которые будут в неё вставлены (Height = 40).
- Сделать так, чтобы панель независимо от размера окна всегда находилась вверху окна Align установить в значение alTop – вверху;
- Поместить на экран «горячие кнопки» (SpeedButton, Additional,). Такие кнопки обычно не имеют заголовка, а несут функциональную информацию по картинке и контекстной справке. Поместить 3 таких кнопки: «Выход», «Открыть файл», «Сохранить файл»:
- Назвать кнопки ( Name) соответственно SBQuit, SBOpen и SBSave;
- Выбрать картинки для кнопок в соответствии с назначением кнопок (картинки можно взять из папки кнопок в папке общих программ Borland или в папке Delphi (папка «Images\Buttons»))Glyph; можно выбрать следующие картинки: FileOpen для открытия файла, FileSave для закрытия файла, DoorShot для выхода из программы;
- Назначить подсказки для кнопок: для кнопки SBQuit – «Выход из программы»; для SBOpen – «Открыть файл»; для SBSave – «Сохранить файл» Hint;
- Создать главное меню:
- Поместить главное меню на форму (MainMenu, Standard,);
- Этот значок запускает программу-мастера построения меню – щелкнуть на значке для запуска мастера;
- Построить иерархическое меню. Для этого в поле ввода набрать название пункта меню («Файл») (Caption), затем сместиться в подменю и вводить названия «Открыть» и «Сохранить», затем поставить разделитель пунктов – при вводе названия поставить «-» (минус);
- Для каждого пункта меню назначить «горячую клавишу», то есть ту комбинацию клавиш, при нажатии на которую этот пункт меню будет активизироваться (свойство ShortCut). Назначить такие комбинации (выбрать из списка) – для пункта «Открыть» –
; «Сохранить» – ; «Выход» –;
- Для открытия файла поместить стандартный диалог открытия файлов:
- Поместить объект открыть файл (Dialogs, OpenDialogs,);
- Дать ему имя ODText (Name)
- Настроить заголовок окна на «Открытие текстового файла» (Title);
- Назначить имя папки, из которой будут открываться файлы по умолчанию, дав ему имя «.» - текущая папка (папка программы) (InitialDir);
- Настроить фильтр файлов, которые будут открываться (Filter). Это свойство запустит мастера – слева в окне описание групп файлов (Filter Name), справа – шаблон группы (Filter). Изменить описание на «Текстовые файлы», а шаблон на «*.txt»;
- Для сохранения файлов необходимо:
- Поместить на форму элемент диалог сохранения (SaveDialog, Dialogs,);
- Настроить имя на SDText (Name);
- Остальные свойства настроить как и у объекта OpenDialog;
- Для переключения между режимами чтения файла (посимвольное чтение или чтение сразу всего файла) необходимо:
- Поместить на панель объект независимая метка (CheckBox, Standard,);
- Настроить имя на CBChar ( Name);
- Заголовок изменить на «Посимвольно» ( Caption);
- Кнопка активна (выполняется чтение посимвольно) ( Checked установить в true);
- Для вывода текста необходимо:
- На форму поместить элемент примечаний (Memo, Standard,);
- Настроить имя на MText ( Name);
- Изменить свойство ScrollBars на ssBoth для добавления в поле вывода текста скроллеров – обеспечение перемещения по тексту, если текст окажется больше окна вывода;
- Очистить окно текста. Выбрать свойство Lines и удалить строку MText;
- Расположить поле вывода текста на всё доступное пространство формы. Для этого изменить свойство Align на alClient;
- Форма настроена!
- Приступить к программированию событий:
- Запрограммировать выход из программы на кнопку SBQuit (Событие onClick, команда - Close);
- Запрограммировать открытие файла на кнопку SBOpen (Событие onClick), добавив следующий текст:
- Добавить в разделе переменных процедуры следующие переменные – F – переменная типа текстовый файл для связки с файлом на диске; C – считываемый символ – переменная типа символ и W – переменная типа целое число для записи текста в поле MText, так как этот объект не позволяет добавлять строку посимвольно:
var
F : TextFile;
C : Char;
W : Word;
- Технология считывания следующая:
- открыть диалог открытия файлов;
- получить имя открываемого файла из этого диалога;
- открыть файл;
- Проверить результат открытия файла, если ошибка – выдать сообщение, иначе приступить к считыванию информации;
- Если осуществляется чтение сразу всего файла, то считать текст,
иначе: пока не конец файла добавить в поле вывода текста пустую строку; пока не конец строки считать символ и добавить его к пустой строке;
- Текст, реализующий этот алгоритм:
If ODText.Execute then //Если в диалоге выбран файл
begin
MText.Clear; //Очистить поле вывода
AssignFile(F,ODText.FileName); //Связать файл с F
{$I-} //Отключить проверку
reset(F); //Открыть файл
{$I+} //включить проверку
If IOResult = 0 then //Файл открыт удачно
begin
Form1.Caption := ODText.FileName;
{В заголовке окна отобразить имя открытого файла}
W := 0; //счетчик строк
If CBChar.Checked then //если посимвольный ввод
begin
while Not EOF(F) do //пока не конец файла
begin
MText.Lines.Add(''); //добавить пустую строку
While Not EOLn(F) do //пока не конец строки
begin
read(F,C); //считать очередной символ
MText.Lines[W]:=MText.Lines[W]+C;
{добавить к пустой строке считанный символ}
end;
Inc(W); //увеличить счетчик строк
readln(F);
{перейти к считыванию новой строки}
end;
end
else //файл считывается сразу
begin
MText.Lines.LoadFromFile(ODText.FileName);
{считать файл}
end;
CloseFile(F); //закрыть файл
end
else //файл не открыть
ShowMessage('Ошибка открытия файла '+ODText.FileName);
{выдать сообщение об ошибке}
end; //конец работы с файлом
В программе виден способ заполнения элемента MText текстом: текст представляет собой массив строк (свойство Lines) и, или загружается сразу из указанного файла (строка MText.Lines.LoadFromFile(ODText.FileName);), или происходит обращение по индексу к нужной строке и заполнение её (строка MText.Lines[W]:=MText.Lines[W]+C; – к строке с индексом W добавить считанный символ C, необходимо учитывать, что нумерация строк начинается с 0);
- Запрограммировать сохранение введенного или отредактированного файла на диск на кнопку SBSave (Событие onClick):
- Ввести следующий текст:
If SDText.Execute then
{если выбрано сохранение файла}
begin
Mtext.Lines.SaveToFile(SDText.FileName); //сохранить файл
Form1.Caption := SDText.FileName;
{изменить заголовок окна на имя сохранённого файла}
end;
- Для улучшения программы можно выполнить следующее:
- Ввести индикатор изменения текста в поле ввода – как только текст изменен отобразить индикатор изменения;
- При осуществлении сохранения файла проверять нет ли уже файла с таким именем и выдавать запрос на перезапись;
- Например, пункт 5.1. можно выполнить так:
- На форму (на панель) добавить элемент метка (Label, Standard,). Изменить его свойства:
- Имя изменить на LModify (Name);
- Заголовок на «Текст изменён» (Caption);
- Видимость (если текст не изменён, то и индикатор изменения не показывать) установить видимость в значение False (Visible);
- Запрограммировать событие элемента MText нажатие клавиши onKeyPress и ввести текст:
- LModify.Visible := true;
- При сохранении текста (событие onClick кнопки SBSave) после строки «{изменить заголовок окна на имя сохранённого файла}» добавить строку изменения состояния индикатора:
- LModify.Visible := false;
- При желании пункт 5.2. запрограммировать самостоятельно (рекомендация: попытаться открыть файл с введенным именем и если файл открывается (файл существует!), то требуется вывести запрос на перезапись);
- Программа готова – запуск <F9>