Сделай Сам Свою Работу на 5

Чтение и запись текстовых файлов





Для работы с файлом необходимо назначить ему файловую переменную, т.е. ассоциировать ее с именем файла на диске. Через эту переменную будет выполняться вся работа с файлом. Для назначение файловой переменнойF1 используется процедура AssignFile(F1,FileName).

Для создания (записи) текстового файла используется процедура Rewrite(F1).

Если необходимо добавить текст в существующий файл, используется процедура Append(F1).

Для открытия (чтения) текстового файла используется процедура Reset(F1).

Чтение строки файла Readln(F1,Stroka);

Запись строки в файл Writeln(F1,Stroka);

После использования файла его следует закрыть процедурой CloseFile(F1).

Можно за один раз прочитать текстовый файл в многострочный редактор, например:

RichEdit1.Lines.LoadFromFile(‘c:\dogovor.txt’)

Запись содержимого текстового окна в файл одной командой

RichEdit1.Lines.SaveToFile(‘c:\dogovor.txt’)

 

Постановка задачи

Разработать приложение, реализующее основные функции текстового редактора:

  • форматирование шрифта для выделенного контекста;
  • копирование и перемещение выделенного контекста;
  • выравнивание абзацев;
  • поиск и замена в тексте;
  • открытие и сохранение текстового файла;

 



Все функции приложения должны быть доступны через главное меню и панель инструментов.

Часть

Порядок выполнения

  1. Создать новый проект и сохранить его под именем MainEditor.
  2. Создать на форме меню:

· установить на форме компонент MainMenu (Standard);

· присвоить ему имя mmMain. Каждому пункту меню задать информативное имя:

Файл (miFile) Новый(miNewFile) Открыть(miOpenFile) Сохранить(miSaveFile) Правка(miEdit) Копировать (miCopy) Вырезать(miCut) Вставить(miPaste) Найти(miFind) Заменить(miReplace)
Формат (miFormat) Шрифт (miFont) Абзац (miPar) Вставка (miIns) Дата (miData) Время (miTime)

Выход(miExit)

 

  1. Создать панель инструментов:

· расположить на форме компонент ToolBar (Win32), присвоить имя tlbMain, для свойства EdgeBorders добавить значение ebBotton True;

· щелкнуть на созданной панели правой кнопкой мыши и выполнить NewButton, установить кнопке следующие свойства:

Hint создать файл

MenuItem miNewFile

Name btnNewFile

ShowHint True

· аналогичным образом создать еще кнопки и изменить им свойства: Открыть, Сохранить, Копировать, Вырезать, Вставить, Найти, Заменить;

· для добавления изображений командам и кнопкам добавить на форму компонент ImageList (Win32);



· дважды щелкнуть по компоненту, появится редактор, щелкните по кнопке Add и указать размещение требуемых графических файлов Program Files\Common Files\Borland Shared\Images\Buttons, добавить соответствующий файл, в момент добавления на экране появится запрос о разбиении одной пиктограммы на две, ответьте утвердительно.

  1. Связать набор пиктограмм с панелью инструментов и основным меню: для компонентов mmMain и tlbMain для свойства Images из списка выбрать ImageList1.
  2. Изменить значения свойства ImageIndex для соответствующих пунктов меню и кнопок панели инструментов.
  3. Добавить на панель инструментов компонент ColorBox (Additional) для выбора цвета шрифта, изменить значения свойств:

Name cobFontColor, Selected clBlack,

Style cbExtendedColors False

cbSystemColors False

  1. Добавить на панель инструментов компонент SpinEditor (Samples) для ввода размеров шрифта, изменить значения свойств:

Name - sdFontSize, MaxValue 70, MinValue 8)

  1. Добавить на панель инструментов три компонента CheckBox (Standard) для изменения начертания шрифта, изменить значения свойств для каждого:

Name chBold, chItalic, chUnderLine

Caption Ж К Ч

  1. На форме установить компонент RichEdit (Win32), изменить значения свойств для этого объекта:

Name Document, ScrollBars ssBoth

  1. Для объекта sdFontSize выбрать событие OnChange и ввести следующий код:

document.Font.Size:=sdFontSize.Value ;

  1. Для объекта chBold выберите событие OnClick и ввести следующий код:

if chBold.Checked Then

document.Font.Style := document.Font.Style +[fsBold]

Else

document.Font.Style := document.Font.Style -[fsBold];

  1. Сохранить проект и проверить его работу:

· ввести произвольный текст;

· изменить размер шрифта и начертание Полужирный.

  1. Самостоятельно ввести код для объектов chItalic и chUnderline (использовать константы fsItalic, fsUnderline), проверить работу приложения.
  2. Для объекта cobFontColor выбрать событие OnChange и ввести следующий код:

document.font.Color := cobFontColor.Selected



10.Сохранить и проверить работу программы.

Часть

 

1. Для пункта меню и кнопки панели инструментов Вырезать ввести код:

document.CutToClipboard ;

2. Для пункта меню и кнопки панели инструментовКопировать ввести код:

document.CopyToClipboard ;

3. Для пункта меню и кнопки панели инструментовВставить ввести код:

document.PasteFromClipboard ;

4. В пункт меню Правка добавить подпункт Выделить все и ввести для него следующий код:

document.SelectAll ;

5. Проверить работу приложения.

6. Для того чтобы форматировать только выделенный фрагмент текста, внести изменения в код для объекта chBold

If chBold.Checked Then

document.SelAttributes.Style := document.SelAttributes.Style +[fsBold]

Else

document.SelAttributes.Style := document.SelAttributes.Style -[fsBold];

7. Проверить работу приложения и внести соответствующие изменения для других элементов форматирования.

8. Добавить на панель инструментов комбинированный список, задать ему имя cbFontName, для свойства Items ввести несколько значений, например: Times New Roman

Courier New

Garamond

Arial

Comic Sans MS

9. Самостоятельно написать код, позволяющий изменять тип шрифта выделенного фрагмента.

10. Для выравнивания абзацев добавить на панель инструментов еще три кнопки, задать им имена btnLeft, btnCenter, btnRight и соответствующее изображение и ввести код в соответствии с назначением:

document.Paragraph.Alignment := TaLeftJustify;

 

document.Paragraph.Alignment := TaRightJustify;

 

document.Paragraph.Alignment := TaCenter;

11. Проверить работу приложения.

12. Для форматирования абзацев маркированным списком добавить на панель инструментов еще одну кнопку, задать имя btnSpisok, изменить изображение и ввести для нее код:

document.Paragraph.Numbering :=nsBullet;

13. Проверьте работу приложения. Самостоятельно изменить работу приложения, чтобы была возможность отменять маркированный список при повторном щелчке.

Часть

1. Добавить на форму компонент FontDialog(Dialogs)., присвоить имя fontD_1 Для пункта меню Формат/Шрифт ввести следующий код:

If fontd_1.Execute Then

Begin

Document.SelAttributes.Name :=FONTd_1.Font.Name ;

Document.SelAttributes.Size :=FONTd_1.Font.Size ;

End;

2. Самостоятельно дополнить код, чтобы все выбранные атрибуты шрифта были применены к выделенному тексту.

3. Добавить на форму компонент ColorDialog(Dialogs)., присвоить имя ColorD_1. Добавить в пункт меню Формат подпункт Цвет.

4. Самостоятельно ввести код для изменения цвета шрифта выделенного текста.

5. Проверить работу приложения.

6. Добавить компоненты FindDialog и ReplaceDialog, изменить имена fd_1 и rd_1 соответственно.

7. Для пункта меню Правка/Найти ввести код:

If fd_1.Execute Then Begin End;

 

8. Для объекта Fd_1 выбрать событие OnFind и ввести код:

FinStr:=fd_1.FindText ;

k:=pos(FinStr,document.Text );

If k<>0 Then

Begin

document.SelStart :=k -1; ;//начало выделения текста

document.SelLength :=length(finstr); //выделение текста

document.SetFocus;

End

Else ShowMessage('Текст не найден);

 

9. Для пункта меню Правка/Заменить ввести код:

If rd_1.Execute Then Begin End;

10. Для объекта rd_1 выбрать событие OnReplace и ввести код:

FinStr:=rd_1.FindText ;

k:=pos(FinStr,document.Text );

If k<>0 Then

Begin

document.SelStart :=k -1

document.SelLength :=length(finstr);

document.SelText :=rd_1.replaceText;.// замена

End

Else ShowMessage('Текст не найден’);

 

11. Добавить на форму компонент SaveDialog (Dialogs), присвоить имя sd_1, а свойству Filter значение - Документ|*.Txt. Самостоятельно ввести программу для сохранения содержимого текстового окна в файл.

12. Добавить на форму компонент OpenDialog (Dialogs), присвоить имя od_1, а свойству Filter значение - Документ|*.Txt. Самостоятельно ввести программу для открытия файла и вывода его содержимого в текстовое окно.

13. Проверить работу приложения. Результат показать преподавателю.

Задания для самостоятельного выполнения

Доработать созданное приложение для реализации новых функций.

Задание №1

· При изменении размера окна должен меняться размер текстового окна;

· Добавить в меню пункт, который позволяет вставлять в позицию курсора текущую дату и время;

· Изменить программный код для кнопок панели инструментов для того, чтобы форматирование (размер, цвет, начертание, тип шрифта) применялось только к выделенному фрагменту.

Задание №2

· Если фрагмент текста не выделен, режимы Вырезать и Копировать должны быть не доступны (в меню и на панели инструментов);

· Если не был выбран режим Вырезать и Копировать нет доступа к режиму Вставить;

 

Задание №3

  • Разработать программный код для пункта Файл/ Новый. При выборе этого пункта текстовое окно очищается, если его содержимое было сохранено. Если сохранение не выполнялось, вывести запрос о подтверждении действия.

Пример диалогового окна для выбора дальнейших действий

if messagedlg('Уверены? ',mtconfirmation, [mbyes,mbno], 0) = mryes then … else …;

Задание №4

  • После сохранения отобразить имя файла в заголовке формы;
  • Реализовать режим печати текста на принтере;
  • Предусмотреть перехват ошибок при обращении к принтеру.

 

Контрольные вопросы

1. Как обратится к буферу обмена в программном коде?

2. Какие стандартные диалоговые окна можно использовать в проекте?

3. Как обратится к выделенному фрагменту текста и какие объекты позволяют это сделать?

4. Как обратиться к абзацу текста?

5. В какие объекты можно вывести содержимое текстового файла?


ПРАКТИЧЕСКАЯ РАБОТА № 6

 

Тема:Массивы

Цель работы:Получить навыки использования массива объектов в приложении.

Пояснения к работе

В Delphi разрешается определять массивы объектов, что весьма удобно, если в программе имеются группы объектов, действующих примерно одинаково. Такие массивы позволяют «привязывать» разные элементы управления к одной процедуре обработки события.

Способ создания массива объектов:

· установить компонент (на его основе будет создаваться массив), изменить необходимые свойства;

· объявить массив объектов (имя массива не должно совпадать с именем ранее установленного компонента);

· написать программный код для создания объектов массива, «привязки» объектов к форме и определения их свойств (обычно код пишется в FormCreate);

· если предполагается, что объекты массива должны реагировать на внешние события, то создаются и объявляются соответствующие процедуры.

Элементы массива объектов имеют одинаковые имена, различаются по индексу, остальные свойства могут совпадать или отличаться. Для обращения к элементу массива объектов необходимо указать имя объекта и в квадратных скобках его номер.

 

Постановка задачи:

Разработать приложение «Игра в пятнашки».

Алгоритм игры следующий: в прямоугольной коробке находится 15 фишек, на которых написаны числа от 1 до 15. Размер коробки - 4х4, таким образом, в коробке одна пустая ячейка. В начале игры фишки перемешаны. Задача игрока состоит в том, чтобы, не вынимая фишки из коробки, выстроить фишки в правильном порядке (по возрастанию).

 

 

Порядок выполнения

  1. Создать новый проект. Установить на форме командную кнопку, задать имя для нее Pole.
  2. Объявить массив объектов и переменные:

game:array[0..15] of TButton;

d,i:integer;

3. Для формы изменить свойство AutoSize - True, выбрать событие Сreate и ввести код:

Var

row,col:integer;

Begin

d:=50;// размер кнопки

For i:=0 to 15 do

Begin

game[i] := TButton.Create(pole) ;

game[i].Parent := Form1;

game[i].Width :=d ; game[i].Height :=d ;

game[i].Font.Style :=pole.Font.Style ;

game[i].Font.Size :=pole.Font.Size ;

game[i].Caption :=inttostr(i);

col:=i mod 4; //номер столбца для кнопки

row:=i div 4; //номер строки для кнопки

game[i].Top :=d*row;

game[i].Left :=d*col;

game[i].OnClick:=GameClick;

End;

game[0].Caption :=''; End;

4. Объявить процедуру

procedure GameClick( Sender: TObject);

  1. Ввести код для этой процедуры:

Procedure TForm1.GameClick(Sender: TObject);

Var

x0,y0,x,y,index:integer;

Begin

//определение номера нажатой кнопки

For i:=0 to 15 do

If game[i].Focused =true Then index:=i;;

// координаты пустышки

x0:=game[0].left;

y0:=game[0].Top;

//координаты нажатой кнопки

x:=game[index].left;

y:=game[index].Top;

//если соседи по столбцу, то обмен

If (x0=x) and (abs(y-y0)=d) Then

Begin

game[0].Left :=x; game[0].Top:=y;

game[index].Left :=x0; game[index].Top:=y0;

End;

//если соседи по строке, то обмен

If (y0=y) and (abs(x-x0)=d) Then

Begin

game[0].Left :=x; game[0].Top:=y;

game[index].Left :=x0; game[index].Top:=y0;

End;

End;

  1. Проверить работу программы.
  2. Создать главное меню на форме из двух пунктов: Перемешать и Выход. Для пункта Перемешать ввести следующий код:

randomize ;

For v:=1 to 20 Do

Begin

row:=random(15)+1;

game[row].SetFocus ;

gameclick(game[row]);

End;

  1. Предложить способ, как можно определить что задача решена и вывести соответствующее сообщение.

 

 


Задания для самостоятельного выполнения

Задание №1

Доработайте созданное приложение «Пятнашки»:

  • добавить пункты в главное меню, позволяющие:
    • выполнять настройку игрового поля (3х2, 4х4, 5х5);
    • менять уровень сложности игры (степень перемешивания)
  • вести счет количества результативных ходов пользователя.

Задание №2

Разработайте приложение «Клавиатура». Приложение должно работать следующим образом:

-

 
 

при щелчке по одной из «клавиш» в текстовое окно добавляется выбранная буква или пробел;

- при щелчке по кнопке «Очистить», текст полностью исчезает.

Кнопки с буквами – это массив объектов (командные кнопки или метки). Примерный вид окна представлен на рисунке.


Задание №3

 

Разработать игровое приложение, которое работает следующим образом:

- после загрузки приложения картинки (массив объектов) меняют свои координаты случайным образом (скорость перемещения отрегулируйте сами)

- при щелчке по любой картинке, она становится невидимой;

- работа программы заканчивается тогда, когда все изображения становятся невидимыми. Примерный вид окна представлен на рисунке.

Задание №4

Модифицировать приложение «Пятнашки»:

  • создать массив объектов Image;
  • разработать код для размещения на каждом объекте фрагмента одного рисунка.

Задача игрока – восстановить изображение картинки из фрагментов.

 

Контрольные вопросы

1. Из каких объектов можно создать массив объектов?

2. Какова последовательность создания массива объектов?

3. Если в приложении используется массив из 10 объектов, каждый из которых должен реагировать на двойной щелчок мыши, сколько процедур необходимо при этом создать?

4. Могут ли объекты, входящие в массив, реагировать на несколько событий?

ПРАКТИЧЕСКАЯ РАБОТА № 7

 

ТемаМассивы

Цель работыИзучить различные алгоритмы сортировки списка.Закрепить навыки использования массивов данных и массивов объектов.

Пояснения к работе

Наиболее распространенным видом сортировки данных является упорядочивание массива – расположение записей сортируемого массива данных в порядке монотонного изменения некоторого ключевого признака. Сортировка данных позволяет сократить во много раз продолжительность решения задач, которые связаны с обработкой больших массивов информации. Смысл любой сортировки заключается в перестановке элементов таблицы в определенном заданном порядке. Упорядочивание осуществляется в процессе многократного просмотра исходного массива.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.