Главная страница

Программирование delphi. Использование компьютерных технологий в медицине


Скачать 2.83 Mb.
НазваниеИспользование компьютерных технологий в медицине
АнкорПрограммирование delphi.doc
Дата28.01.2017
Размер2.83 Mb.
Формат файлаdoc
Имя файлаПрограммирование delphi.doc
ТипДокументы
#795
страница13 из 16
1   ...   8   9   10   11   12   13   14   15   16

6.2. Создание программы «Редактор текста»


Задача. Написать программу, считывающую посимвольно информацию из текстового файла, позволяющую отредактировать считанный текст и сохранить файл на диске.

Окно программы представлено на рис. 6.1.

Процесс создания программы происходит по следующему алгоритму:

  1. Запустить Delphi.

  2. Сохранить проект («work6.dpr», «main.pas»).

  3. Настроить вид экрана:

  • для отображения быстрой справки – подсказки видимых элементов окна –необходимо установить свойство формы 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). Назначить такие комбинации (выбрать из списка): для пункта «Открыть» – <Ctrl><O>; «Сохранить» – <Ctrl><S>; «Выход» – <Ctrl><Q>;

  • для открытия файла поместить стандартный диалог открытия файлов:

  • поместить объект открыть файл (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;

  • форма настроена!

  1. Приступить к программированию событий:

  • запрограммировать выход из программы на кнопку 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;

  1. Для улучшения программы можно выполнить следующее:

  1. ввести индикатор изменения текста в поле ввода – как только текст изменен, отобразить индикатор изменения;

  2. при сохранении файла проверять, нет ли уже файла с таким именем и выдавать запрос на перезапись.

Например, п 5а можно выполнить так:

    • на форму (на панель) добавить элемент метка (Label, Standard,). Изменить его свойства:

    • имя изменить на LModify (Name);

    • заголовок – на «Текст изменён» (Caption);

    • видимость (если текст не изменён, то и индикатор изменения не показывать) установить в значение false (Visible);

    • запрограммировать событие onKeyPress элемента MText, выполняемое при нажатие клавиш, и ввести текст:

LModify.Visible := true;

    • при сохранении текста (событие onClick кнопки SBSave) после строки «{изменить заголовок окна на имя сохранённого файла}» добавить строку изменения состояния индикатора:

LModify.Visible := false;

  1. При желании п. 5б запрограммировать самостоятельно. (Рекомендация. Попытаться открыть файл с введенным именем и если это удаётся (файл существует!), то требуется вывести запрос на перезапись).

  2. Программа готова – запуск <F9>.

Индивидуальное задание


Модифицировать созданную программу для выполнения операции с текстом в зависимости от номера варианта:

  1. В считанном тексте подсчитать количество гласных символов.

  2. В считанном тексте подсчитать количество согласных символов.

  3. Заменить все гласные буквы в тексте на порядковые номера – «а»-1, «е»-2 и т. д.

  4. Добавить после каждого слова текста запятую.

  5. Подсчитать количество слов в тексте.

  6. Найти слово с максимальным соотношением согласные/гласные.

  7. Найти в тексте самое длинное слово.

  8. Подсчитать все знаки препинания в тексте.

  9. Найти в тексте самое длинное предложение.

  10. Выводить каждую строчку в обратном порядке.

  11. Выводить только нечетные слова текста.

  12. Выводить только четные слова текста.

  13. Подсчитать количество предложений в тексте.

  14. Выводить только те слова, длина которых больше введенного числа.

  15. Выводить только те строки, которые содержат введенную подстроку.

  16. Каждый символ, считываемый из файла, закодировать его кодом, после кода ставить знак «;».

  17. Выводить каждое считанное предложение с новой строки.

  18. Найти предложение с максимальным количеством слов.

  19. Удалить из текста введенный фрагмент строки.

  20. Заменить в тексте один введенный фрагмент на другой введенный фрагмент.

Итоги


В шестой теме были изучены: функции для работы со строками; функции для работы с текстовыми файлами; стандартные диалоговые окна.

При построении демонстрационной программы получены навыки использования новых компонентов: панели; кнопки быстрого доступа – «горячие кнопки»; главного меню окна; диалоговых окон – открытие файла и сохранение файла; элемента независимого выбора.
1   ...   8   9   10   11   12   13   14   15   16


написать администратору сайта