Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_OOP.doc
Скачиваний:
17
Добавлен:
11.03.2015
Размер:
1.04 Mб
Скачать
  1. Тема, цель работы, вариант задания.

  2. Описание иерархии классов (рисунок диаграммы классов, текстовое описание свойств и методов каждого класса).

  3. Исходный текст модулей программы.

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

Текст программы

unit MainForm;

interface

uses

Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Memo1: TMemo;

bOpen: TBitBtn;

bSave: TBitBtn;

bExit: TBitBtn;

bStart: TBitBtn;

eFileName: TEdit;

lFileCont: TLabel;

lFileName: TLabel;

SaveDialog1: TSaveDialog;

OpenDialog1: TOpenDialog;

procedure DelVowersStr;

procedure FormCreate(Sender: TObject);

procedure bExitClick(Sender: TObject);

procedure bOpenClick(Sender: TObject);

procedure bSaveClick(Sender: TObject);

procedure bStartClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: ShiftState);

procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);

public

FName: string; // имя выбранного файла данных

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

{ диалог открытия файла }

procedure TForm1.bOpenClick(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

FName := OpenDialog1.FileName; // в FName - имя выбранного файла

eFileName.Text := FName; // в Edit заносим имя файла с полным путём

Memo1.Lines.LoadFromFile(FName); // выводим в Memo1 содержимое этого файла

end;

end;

{ сохраняем файл }

procedure TForm1.bSaveClick(Sender: TObject);

begin

SaveDialog1.FileName := FName;

if SaveDialog1.Execute then

begin

// выбор имени сохраняемого файла из диалога

FName := SaveDialog1.FileName;

Memo1.Lines.SaveToFile(FName); // заносим в файл содержимое Memo1

end

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

FName := ''; // начальная инициализация переменной имени файла

end;

{ процедура, реализующая алгоритм удаления строк,

начинающихся с гласных букв, из загруженного в поток файла - FName }

procedure TForm1.DelVowersStr;

const

// множества гласных букв

VowelsEng = ['A', 'E', 'I', 'J', 'O', 'U', 'Y', 'a', 'e', 'i', 'j', 'o', 'u', 'y'];

VowelsRus = ['А', 'а', 'Е', 'е', 'Ё', 'ё', 'И', 'и', 'Й', 'й', 'О', 'о', 'У', 'у', 'Э', 'э', 'Ю', 'ю', 'Я', 'я'];

var

i, j, k: Word;

c: Char;

l: Integer;

f: Boolean;

S: TStream; // переменная потокового типа

begin

S := TFileStream.Create(FName, fmOpenReadWrite);

// загружаем в поток типа FileStream содержимое файла FName

// тело алгоритма

with S do

begin

Position := 0; // установка указателя потока в начало

i := 0;

k := Size; // в k - размер потока в байтах

while i <> k do

begin

Read(c, 1);

inc(i);

f := false;

if (c in VowelsEng) or (c in VowelsRus) then f := true;

j := 1;

while (c <> #10) and (i <= k - 1) do

begin

Read(c, 1);

inc(i);

inc(j);

end;

if f then

begin

dec(k, j);

for l := i - j to k - 1 do

begin

Read(c, 1);

Position := l;

Write(c, 1);

Position := l + j + 1;

end;

dec(i, j);

Position := i;

end;

end;

Size := i; // обрезание потока до текущего положения указателя

Free;

// загружаем в Memo1 содержимое преобразованного файла

Memo1.Lines.LoadFromFile(FName);

end

end;

{ запуск основной процедуры обработки файла при нажатии на кнопку }

procedure TForm1.bStartClick(Sender: TObject);

begin

if FName <> '' then DelVowersStr

else MessageDlg('Не выбран файл!', mtWarning, [mbOk], 0)

end;

{ вывод при нажатии клваиши F1 информации о разработчике программы }

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = VK_F1 then MessageDlg('Выполнил Фёдоров Виталий, гр. ПВ-33.', mtInformation, [mbOk], 0)

end;

procedure TForm1.OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);

begin

// если в диалоге открытия файла выбрали имя несуществующего,

// то выводим предупреждение и запрещаем закрытие диалога

if not FileExists(OpenDialog1.FileName) then

begin

MessageDlg('Файл не найден!', mtError, [mbOk], 0);

CanClose := false

end

end;

{ завершение работы приложения }

procedure TForm1.bExitClick(Sender: TObject);

begin

Application.Terminate

end;

end.

Главная форма.

Варианты заданий:

  1. В поток TMemoryStream записан записан набор строк в ASCIIZ формате. Изменить порядок следования этих строк на противоположный, не используя дополнительных потоков.

  2. В поток TMemoryStream записан записан набор строк в ASCIIZ формате. Выполнить сортировку этих строк в алфавитном порядке, не используя дополнительных потоков.

  3. В поток записан текстовый файл. Удалить все строки, начинающиеся с гласной буквы, не используя дополнительных потоков.

  4. В поток записаны матрицы различных порядков. Удалить все вырожденные матрицы, не используя дополнительных потоков.

  5. В поток записана последовательность целых чисел. Найти минимум и максимум и поменять их местами, не используя дополнительных потоков.

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

  7. В поток записана последовательность целых чисел. Удалить минимальное число, не используя дополнительных потоков.

  8. В поток записана последовательность символов. Преобразовать поток таким образом, чтобы в начале находились гласные буквы, в середине согласные, а в конце остальные символы, не используя дополнительных потоков.

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

  10. В поток записана последовательность символов. Подсчитать количество слов, разделенных пробелами.

  11. Записать в поток последовательность чисел от 1 до N в символьном виде через пробел.

  12. В поток записана последовательность чисел в символьном виде через пробел. При помощи дополнительного потока заменить все числа их квадратами.

  13. В поток записана последовательность целых и вещественных чисел в символьном виде через пробел. Удалить все вещественные числа, не используя дополнительных потоков.

  14. В поток записана последовательность слов и чисел, разделенных пробелами. Удалить все числа, не используя дополнительных потоков.

  15. В поток записана последовательность цифр. При помощи дополнительного потока заменить их прописью.

Лабораторная работа №6

Разработка компонентов

Цель работы: приобретение навыков разработки компонентов в интегрированной среде Delphi.

Задание:

  1. Изучить основные приемы создания компонентов в Delphi.

  2. Разработать компонент в соответствии с вариантом задания. Компонент должен содержаться в собственном пакете, пакет и демонстрационный проект должны содержаться в «Project – Group». Главный компонент должен содержать ссылки (свойства), указывающие на вспомогательные компоненты, при удалении вспомогательных компонент эти ссылки должны автоматически принимать значение NIL. Обработчики событий у вспомогательных компонент должны назначаться автоматически компонентом – владельцем.

Содержание отчёта:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]