Разделы презентаций


Основи роботи з записами

Содержание

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція № 9У практиці програмування досить часто доводиться мати справу з даними, які природним чином складаються з інших даних. Наприклад, відомості про студента

Слайды и текст этой презентации

Слайд 1“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В., 2014, mail:

korpy@ukr.net
Лекція № 9
Основи роботи з записами
Зміст
7. Робота з записами
7.1.

Оголошення запису
7.2. Інструкція with
7.3. Введення і виведення записів у файл
7.4. Виведення запису у файл
7.5. Зчитування записів з файлу
 
Питання
Література
Додаток 1
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В., 2014, mail: korpy@ukr.netЛекція № 9Основи роботи з записами Зміст7.

Слайд 2“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №

9
У практиці програмування досить часто доводиться мати справу з даними,

які природним чином складаються з інших даних. Наприклад, відомості про студента містять прізвище, ім'я, по батькові, число, місяць і рік народження, домашню адресу і інші дані. Для представлення подібної інформації в мові Delphi використовується структура, яка носить назву запис (record).
З одного боку, запис можна розглядати як єдину структуру, а з іншого — як набір окремих елементів, компонентів. Характерною особливістю запису є те, що складові її компоненти можуть бути різного типу. Інша особливість запису полягає в тому, що кожен компонент запису має ім'я.
Отже, запис — це структура даних, що складається з окремих компонентів з ім’ям різного типу, що називаються полями.

Розділ 7. Робота з записами

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція № 9У практиці програмування досить часто доводиться мати

Слайд 3“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.1.

Оголошення запису
Як будь-який тип, що створюється програмістом, тип "запис" повинен

бути оголошений в розділі type. У загальному вигляді оголошення типу "запис" виглядає так:
Type
Ім'я = record
Поле_1 : Тип_1;
Поле_2 : Тип_2;
Поле_к :
Тип_к;
end;
де:
Ім'я — ім'я типу "запис";
record — зарезервоване слово мови Delphi, що означає, що далі слідує оголошення компонентів (полів) запису;
поле_i і тип_i — ім'я і тип i-го компоненту (поля) запису, де i=1 ..., до;
end — зарезервоване слово мови Delphi, що означає, що список полів закінчений.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №97.1. Оголошення записуЯк будь-який тип, що створюється програмістом,

Слайд 4“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Приклади

оголошень:
type
TPerson = record
FName: string[20];
LName: string[20];
day: integer;
month: integer;
year: integer;
address: string[50];
end;
TDate

= record
day: integer; month: integer; year: integer;
end;
Після оголошення типу запису можна оголосити змінну-запис (або просто запис), наприклад:
var
student : TPerson;
birthday : TDate;

type
TDictionaryRecords = record
Word : string[50];
PartOfSpeech : string[5];
TranslationWord : string[50];
end;

TDictionaryFile = File of TDictionaryRecords;

var
F : TDictionaryFile;
Pg : TDictionaryRecords;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Приклади оголошень:typeTPerson = recordFName: string[20];LName: string[20];day: integer;month: integer;year:

Слайд 5“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Для

того, щоб дістати доступ до елементу (поля) змінної-запису (записи), потрібно

вказати ім'я запису і ім'я поля, розділивши їх крапкою. Наприклад, інструкція
ShowMessage('Ім'я:', student.FName + #13 + 'Адреса: ', student.address);
виводить на екран вміст полів f_name (ім'я) і address (адреса) змінній-запису student.
Іноді тип змінної-запису оголошують безпосередньо в розділі оголошення змінних. В цьому випадку тип запису указується відразу за ім'ям змінної, через двокрапку. Наприклад, запис student може бути оголошена в розділі var таким чином:
student: record
FName:string[20];
LName:string[20];
day:integer;
month:integer;
year:integer;
address:string[50];
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Для того, щоб дістати доступ до елементу (поля)

Слайд 6“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.2.

Інструкція with
Інструкція with дозволяє використовувати в тексті програми імена

полів без вказівки імені змінної-запису. У загальному вигляді інструкція with виглядає таким чином:

with Ім'я do
begin
( інструкції програми }
end;

де:
ім'я — ім'я змінної-запису;
with — зарезервоване слово мови Delphi, що означає, що далі, до слова end, при зверненні до полів запису ім'я, ім'я запису можна не указувати.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №97.2. Інструкція with Інструкція with дозволяє використовувати в

Слайд 7“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Наприклад,

якщо в програмі оголошений запис:
type
TDictionaryRecords = record

Word : string[50];
PartOfSpeech : string[5];
TranslationWord : string[50];
end;

і дані про словник знаходяться в полях Edit1, Edit2 і Edit3 діалогового вікна, то замість інструкцій
Cells[1, RowNum] := EditWord.Text;
Cells[2, RowNum] := EditPOFS.Text;
Cells[3, RowNum] := EditTranslation.Text;
можна записати:

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Наприклад, якщо в програмі оголошений запис: type TDictionaryRecords

Слайд 8“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
if

FrmDictionary.SgData.Cells[1, RowNum] '' then begin
//Додаємо стрічку в

таблицю.
FrmDictionary.SgData.RowCount := FrmDictionary.SgData.RowCount + 1;
end;

RowNum := FrmDictionary.SgData.RowCount - 1;

with FrmDictionary.SgData do begin
Cells[1, RowNum] := EditWord.Text;
Cells[2, RowNum] := EditPOFS.Text;
Cells[3, RowNum] := EditTranslation.Text;

end;

EditWord.Text:='';
EditPOFS.Text:='';
EditTranslation.Text:='';
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9if FrmDictionary.SgData.Cells[1, RowNum] '' then begin  //Додаємо

Слайд 9“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.3.

Введення і виведення записів у файл
Запису можна зберігати у файлі.

Для того, щоб програма могла зберегти значення змінної-запису у файлі або ввести його з файлу, необхідно оголосити файл, вказавши як тип його компонентів тип "запис". Наприклад, інструкції

type
TDictionaryRecords = record
Word : string[50];
PartOfSpeech : string[5];
TranslationWord : string[50];
end;
Var
TDictionaryFile = File of TDictionaryRecords;
const
// Величина збільшення кількості стрічок в таблиці.
Capacity = 1;

оголошують файл, компонентами якого є записи типу TDictionaryRecords.
Процес роботи з файлом записів практично нічим не відрізняється від процесу роботи із звичайним файлом. Спочатку треба оголосити файлову змінну і за допомогою процедури AssignFile пов'язати цю змінну з конкретним файлом. Потім потрібно відкрити файл (для читання, запису або оновлення). Після цього можна прочитати запис з файлу або записати запис у файл.

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №97.3. Введення і виведення записів у файлЗапису можна

Слайд 10“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.4.

Виведення запису у файл
Розглянемо програму, яка записує у файл введені

користувачем дані - словник, формуючи, таким чином, просту базу даних. Початкові дані вводяться в поля діалогового вікна (мал. 8.1) і зберігаються у файлі, компонентами якого є записи типу TDictionaryRecords.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №97.4. Виведення запису у файлРозглянемо програму, яка записує

Слайд 11“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9


procedure TFrmDictionary.MSaveFileClick(Sender: TObject);
var
F : TDictionaryFile;

FileName : String;
MdRes : Integer;
RowNum : Integer;
Pg : TDictionaryRecords;
begin
SaveDialog1.FilterIndex := 1; //Файли даних.

if SaveDialog1.InitialDir = '' then begin
SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
end;

if not SaveDialog1.Execute then Exit;

if FileExists(SaveDialog1.FileName) then begin
MdRes := MessageDlg('Файл з вказаним вами ім"ям вже існує. Перезаписати?' , mtConfirmation, [mbYes, mbNo], 0 );
if MdRes = mrNo then Exit;
end;

FileName := SaveDialog1.FileName;
AssignFile(F, FileName);
{$I-}
Rewrite(F);
Seek(F, FileSize(F)); // покажчик запису в кінець файлу
{$I+}
for RowNum := 1 to SgData.RowCount - 1 do
begin
with SgData, Pg do
begin
if Cells[1, RowNum] = '' then
Continue;
Word := Cells[1, RowNum];
PartOfSpeech := Cells[2, RowNum];
TranslationWord := Cells[3, RowNum];

end;
Write(F, Pg);
end;

CloseFile(F);

end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9 procedure TFrmDictionary.MSaveFileClick(Sender: TObject);var F

Слайд 12“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9

Слайд 13“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmDictionary.BBtnTranslationClick(Sender: TObject);
begin

Edit2.SetFocus;
Edit2.Text := SgData.Cells[SgData.Col + 2, SgData.Row];

end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmDictionary.BBtnTranslationClick(Sender: TObject);begin Edit2.SetFocus; Edit2.Text := SgData.Cells[SgData.Col +

Слайд 14“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmDictionary.SgDataDblClick(Sender: TObject);

begin

SgData.SetFocus;
FrmEditWord.EditWord.Text := SgData.Cells[SgData.Col, SgData.Row];
FrmEditWord.EditPOFS.Text := SgData.Cells[SgData.Col

+ 1, SgData.Row];
FrmEditWord.EditTranslation.Text := SgData.Cells[SgData.Col + 2, SgData.Row];
FrmEditWord.ShowModal;
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmDictionary.SgDataDblClick(Sender: TObject);begin SgData.SetFocus; FrmEditWord.EditWord.Text := SgData.Cells[SgData.Col, SgData.Row];

Слайд 15“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.5.

Зчитування записів з файлу
Розглянемо програму, що демонструє процес читання і

обробки записів файлу. Програма Зчитування записів з файлу, діалогове вікно якої представлене на мал. 7.4, а текст — в лістингу 7.2, відкриває файл, сформований програмою Додавання записи у файл.

procedure TFrmDictionary.FormCreate(Sender: TObject);
var
F: TDictionaryFile;
FileName: String;
i, ii, RowNum: Integer;
Pg: TDictionaryRecords;

begin

with SgData do
begin
Cells[0, 0] := 'П/н';
Cells[1, 0] := 'Слово';
Cells[2, 0] := 'Частина мови';
Cells[3, 0] := 'Переклад';
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №97.5. Зчитування записів з файлуРозглянемо програму, що демонструє

Слайд 16“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
//

Заховати стовпчики 0, 2, 3

SgData.ColWidths[0] := -1;
SgData.ColWidths[2] :=

-1;
SgData.ColWidths[3] := -1;

FileName := 'dictionary.dat';
AssignFile(F, FileName);
Reset(F);

i := 0;
ii := 0;
RowNum := SgData.FixedRows;

while not EOF(F) do
begin
RowNum := SgData.FixedRows + i;
// Якщо необхідно, додаємо стрічки в таблицю.

if RowNum + 1 >= SgData.RowCount then
begin
SgData.RowCount := SgData.RowCount + Capacity;
end;
read(F, Pg);

with SgData, Pg do
begin
Cells[0, RowNum] := IntToStr(ii);
Cells[1, RowNum] := Word;
Cells[2, RowNum] := PartOfSpeech;
Cells[3, RowNum] := TranslationWord;
ii := ii + 1;
end;
Inc(i);
end;

CloseFile(F);

// Коректуємо кількість стрічок у відповідності з кілкістю
// доданих в таблицю записів.

SgData.RowCount := RowNum + 1;

end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9// Заховати стовпчики 0, 2, 3 SgData.ColWidths[0] :=

Слайд 17Що таке запис.
Як створити запис.
Як записати запис у файл.
Як зчитати

запис з файлу.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В.

2012

Лекція №9

Питання:

Що таке запис.Як створити запис.Як записати запис у файл.Як зчитати запис з файлу.“Застосування засобів ООП в лінгвістичних

Слайд 18 Література:

Гради Буч Обьектно-ориентированный анализ и

проектирование с примерами приложений на С++. 2002 г. - 250

с.
Миронченко А.С. Императивное и обьектно-ориентированое программирование на Turbo Pascal и Delphi.
Т.А. Павловская Паскаль. Программирование на языке высокого уровня.: Учебник для вузов. – СПб.: Питер, 2007. -393 с. Ил.
Архангельский А.Я. Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi, 2007 г. - 1248 с.
Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с: ил.
Шупрута В.В. Delphi 2005. Учимся программировать.


“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2012

Лекція №9

Література:Гради Буч Обьектно-ориентированный анализ и проектирование с примерами приложений на С++. 2002

Слайд 19“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Розробка

текстового редактора
procedure TFrmMainTextEditor.MnCreateFileClick(Sender: TObject);
begin
TFrmChild.Create(Self);
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Розробка текстового редактораprocedure TFrmMainTextEditor.MnCreateFileClick(Sender: TObject);begin TFrmChild.Create(Self);end;

Слайд 20“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
var

FrmChild: TFrmChild;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9var FrmChild: TFrmChild;

Слайд 21“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
У

вікні Project Options на вкладці Forms виберемо форму ChildForm і

клікнувши мишкою на кнопці з стрілочкою, перенесемо ім’я дочірньої форми ChildForm з списка Auto-create forms (форми, що автоматично створюються при старті застосування) в списку Available forms (доступні форми).
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9У вікні Project Options на вкладці Forms виберемо

Слайд 22“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmChild.FormCreate(Sender: TObject);
begin
Caption := 'Новий документ';
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmChild.FormCreate(Sender: TObject);begin Caption := 'Новий документ';end;

Слайд 23“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // Закрити

форму та видалити її з пам’яті
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);begin Action :=

Слайд 24“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // Закрити

форму та видалити її з пам’яті
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);begin Action :=

Слайд 25“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmMainTextEditor.MnCloseFileClick(Sender: TObject);
begin
Close;
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmMainTextEditor.MnCloseFileClick(Sender: TObject);begin Close;end;

Слайд 26“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TFrmMainTextEditor.MnOpenFileClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FrmChild := TFrmChild.Create(Self);

// Створити дочірнє вікно
FrmChild.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
// завантажити в RichEdit вибраний файл
FrmChild.Caption := OpenDialog1.FileName;
// Встановити в заголовок дочірнього вікна
// назву файлу
FrmChild.RichEdit1.Tag := 0;
// встановити в початок компоненти RichEdit1 для пошуку
FrmChild.RichEdit1.SelStart := 0;
StatusBar1.Panels[0].Text := 'Файл завантажений';
MnSave.Enabled := true;
end;
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TFrmMainTextEditor.MnOpenFileClick(Sender: TObject);begin if OpenDialog1.Execute then begin

Слайд 27“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Відкрийте

головну форму застосування і два раз клікніть мишкою на компоненті

ActionList1 або виберіть пункт Action List Editor з контекстного меню. У вікні Editing MainForm1.ActionList1 натисніть Ctrl+Ins або натисніть мишкою на жовтій кнопці в панелі інструментів цього вікна. Виберіть пункт New Standard Action з вікна що відкривається Standard Action Classes з списком стандартних дій, які можна прив’язати до пунктів меню або кнопкам. При натисненій клавіши Shift або Ctrl виберіть усі стандартні дії, які відносяться до катогорії Windows.

Завершити вибір стандартних дій, настисніть мишкою на клавіши ОК. Після цього в списку дій з’явиться категорія Window, а вправій частині вікна буде показаний список всіх вибраних стандартних дій з вікнами. Закрийте вікно Editing MainForm1.ActionList1 та переконайтеся, що список вибраних стандартних дій у вікні Object TreeView як показано на малюнку.

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Відкрийте головну форму застосування і два раз клікніть

Слайд 28“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Зберегти

файл Як
Для того щоб документ, відкритй у вікні редактора, зберігався

на диску задайте для властивості SaveDialog1.Filter значення та створіть процедури обробки подій вибору в меню команди Файл=>Зберегти Як.. та відредагуйте процедуру наступним чином:

procedure TFrmMainTextEditor.MnSaveAsFileClick(Sender: TObject);
var FName:String;
begin
if MDIChildCount = 0 then Exit;
SaveDialog1.FileName := FName;
SaveDialog1.Title := 'Зберегти файл ЯК ... ';
if SaveDialog1.Execute then
begin
FName := SaveDialog1.FileName;
Case SaveDialog1.FilterIndex of
1: FName := ChangeFileExt(FName, '.rtf');
2: FName := ChangeFileExt(FName, '.txt');
end;
end;
(ActiveMDIChild as TFrmChild).RichEdit1.Lines.SaveToFile(FName);
(ActiveMDIChild as TFrmChild).Caption := FName;
(ActiveMDIChild as TFrmChild).RichEdit1.Tag := 0;
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Зберегти файл ЯкДля того щоб документ, відкритй у

Слайд 29“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Зберегти

файл
Для створення процедури збереження документа Файл=>Зберегти необхідно вибрати у вікні

на головній формі меню команду Файл=>Зберегти та відредагувати процедуру наступним чином.

procedure TFrmMainTextEditor.MnSaveFileClick(Sender: TObject);
begin
if MDIChildCount = 0 then Exit; // Якщо немає MDI дочірніх вікон, то вийти з процедури
if (ActiveMDIChild as TFrmChild).Caption = 'Новий..' then // Якщо документ має заголовок "Новий"
MnSaveAsFileClick(Sender) // Викликати процедуру "Зберегти Як..."
else
begin // Зберегти файл з ім’ям, вказаним в заголовку
(ActiveMDIChild as TFrmChild).RichEdit1.Lines.SaveToFile((ActiveMDIChild as TFrmChild).Caption);
(ActiveMDIChild as TFrmChild).RichEdit1.Tag := 0;
//Зміни в файлі збережені
end;
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Зберегти файлДля створення процедури збереження документа Файл=>Зберегти необхідно

Слайд 30“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Зміни

в дочірньому вікні
procedure TFrmChild.RichEdit1Change(Sender: TObject);
var
toEnd, foundAt, curPos, i: integer;
begin

RichEdit1.OnChange := nil;
RichEdit1.Lines.BeginUpdate;
curPos := RichEdit1.SelStart;
try
FrmChild.RichEdit1.SelectAll;
FrmChild.RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style;
FrmChild.RichEdit1.SelAttributes.Color := clBlack;
for i := Low(word1) to High(word1) do
begin
foundAt := FrmChild.RichEdit1.FindText(word1[i], 0, Length(FrmChild.RichEdit1.Text), [StWholeWord]);
while foundAt <> -1 do
begin
FrmChild.RichEdit1.SelStart := foundAt;
FrmChild.RichEdit1.SelLength := Length(word1[i]);
//встановити знайдене слово подвійної товщини
FrmChild.RichEdit1.SelAttributes.Style := FrmChild.RichEdit1.SelAttributes.Style + [FsBold];
//встановити знайдене слово в червоний колір
FrmChild.RichEdit1.SelAttributes.Color := clRed;
foundAt := FrmChild.RichEdit1.FindText(word1[i], foundAt + 1, Length(FrmChild.RichEdit1.Text), [StWholeWord]);
end;
end;
RichEdit1.SelStart := curPos;
finally
FrmChild.RichEdit1.Lines.EndUpdate;
FrmChild.RichEdit1.OnChange := RichEdit1Change;
end;
RichEdit1.Tag := 1; //Текст змінений то його необхідно зберегти
end;
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Зміни в дочірньому вікніprocedure TFrmChild.RichEdit1Change(Sender: TObject);var toEnd, foundAt,

Слайд 31“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Закриття

дочірнього вікна
procedure TFrmChild.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Res: Integer;
begin

if RichEdit1.Tag = 0 then
CanClose := True
else
begin
Res := Application.MessageBox('Текст змінений. Зберегти зміни?', 'Питання',
MB_YESNOCANCEL + MB_ICONQUESTION);
if Res = IDYES then
begin
FrmChild.BringToFront;
FrmMainTextEditor.MnSaveAsFileClick(Sender);
If RichEdit1.Tag = 1 then
CanClose := False;
end;
if Res = IDNo then
CanClose := True;
if Res = IDCANCEL then
CanClose := False
end;
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Закриття дочірнього вікнаprocedure TFrmChild.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

Слайд 32“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Друк[1]
[1]

Примітка
В розділі Uses необхідно додати виклик модуля Printers.
procedure TFrmMainTextEditor.MnPrintFileClick(Sender: TObject);
begin

if PrintDialog1.Execute then
begin
AssignPrn(F);
// Оголосити файлову змінну F – встановити асоциативний зв’язок між
// файловою змінною та прінтером
Rewrite(F);
Writeln(F, (ActiveMDIChild as TFrmChild).RichEdit1.Text);
System.CloseFile(F);
end;
end;

var
FrmMainTextEditor: TFrmMainTextEditor;
word1: array [1 .. 500] of string;
F: Text;
SPos: integer;

implementation

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9Друк[1][1] ПриміткаВ розділі Uses необхідно додати виклик модуля

Слайд 33“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
 Використовуючи

текстовий редактор в деяких випадках виникає необхідність виділення ключових слів

в тексті. Для цього напишемо код який дозволяе з словника (текстового файла) зчитувати слова які виділяються в тексті який редагується. Необхідно описати глобальні змінні word1: array [1 .. 500] of string; Перед як завантажувати та використовувати словник його необхідно створити в нотпаді та назвати наприклад: abcd.dic.

Частина 2

procedure TFrmMainTextEditor.MnLoadDictionaryClick(Sender: TObject);
var
i: integer;
strList: TStringList;
begin
if OpenDialog2.Execute then
begin
strList := TStringList.Create;
strList.LoadFromFile(OpenDialog2.FileName);
StatusBar1.Panels[1].Text := 'Словник завантажений. Додано слів: ' +
IntToStr(strList.Count);
for i := 0 to strList.Count - 1 do
word1[i] := strList[i];
strList.free;
end;
end;

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9 Використовуючи текстовий редактор в деяких випадках виникає необхідність

Слайд 34“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9

Слайд 35“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TMainForm.NStatisticsClick(Sender: TObject);
var
Stat: TStatistics;
Lines: TStrings;
I,

WCount, SentsCount, LastWordCount, CharsCount : Integer;
Text : String;
InWord: Boolean;
begin
if ActiveMDIChild = nil then exit;
Stat := TStatistics.Create;
Stat.LinesCount := (ActiveMDIChild as TChildForm1).RichEdit1.Lines.Count;
Text := (ActiveMDIChild as TChildForm1).RichEdit1.Lines.Text;
WCount := 0;
InWord := False;
SentsCount := 0;
LastWordCount := 0;
CharsCount := 0;
for I := 1 to Length(Text) do
begin
if (IsAlphaNum(Text[I]) and (I < Length(Text) )) then
begin
InWord := True;
Inc(CharsCount);
Continue;
end;

if Inword and
((Text[I] = ' ') or (Text[I] = #13) or (Text[I] = ',')
or (Text[I] = ';') or (Text[I] = ':') or (Text[I] = '"')
or (Text[I] = '.') or (Text[I] = '!') or (Text[I] = '?')
or (I = Length(Text))) then
begin
Inc(WCount);
Inc(LastWordCount);
InWord := False;
end;
if ((Text[I] <> #13) and (Text[I] <> #10) and(Text[I] <> ' '))then
Inc(CharsCount);
 
if ((Text[I] = '.') or (Text[I] = '!') or (Text[I] = '?') or (I = Length(Text) )) and (LastWordCount > 0) then
begin
Inc(SentsCount);
LastWordCount := 0;
end;
end;
 
Stat.WordsCount := WCount;
Stat.SentencesCount := SentsCount;
Stat.CharsCount := CharsCount;
PagesDlg.Statistics := Stat;
 
CalculateStatistics(Lines, Stat);
PagesDlg.ShowModal();
end;

procedure TMainForm.CalculateStatistics(var Lines: TStrings; var Stat: TStatistics);
begin
 
//
end;


Слайд 36“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
unit

Statistics;
 
interface
type
TStatistics = class
LinesCount : Integer;
WordsCount

: Integer;
SentencesCount : Integer;
CharsCount : Integer;
end;
 
 
implementation
 
end.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9unit Statistics; interfacetype TStatistics = class  LinesCount :

Слайд 37“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
unit

StatisticDlg;
 
interface
 
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ComCtrls,

ExtCtrls, Grids, TeeProcs, TeEngine, Chart, Statistics,
Series;
 
type
TPagesDlg = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
OKBtn: TButton;
PageControlStatistics: TPageControl;
TabSheetstatistics: TTabSheet;
TabSheetGraph: TTabSheet;
ChartStatistic: TChart;
StringGridStatistics: TStringGrid;
Series1: TPieSeries;
procedure FormCreate(Sender: TObject);
procedure SetStatistics(Stat: TStatistics);
private
{ Private declarations }
public
{ Public declarations }
property Statistics: TStatistics write SetStatistics;
end;
 
var PagesDlg: TPagesDlg;
 
implementation
 
{$R *.dfm}
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9unit StatisticDlg; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls,

Слайд 38“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure

TPagesDlg.FormCreate(Sender: TObject);
begin
StringGridStatistics.Cells[0, 0] := 'Характеристика';
StringGridStatistics.Cells[1, 0] := 'Значення';
 
end;
 
procedure

TPagesDlg.SetStatistics(Stat: TStatistics);
begin
ChartStatistic.Series[0].Clear;
StringGridStatistics.Cells[0, 1] := 'Стрічок';
StringGridStatistics.Cells[1, 1] := IntToStr(Stat.LinesCount);
ChartStatistic.Series[0].Add(Stat.LinesCount, 'Стрічок');
StringGridStatistics.Cells[0, 2] := 'Слів';
StringGridStatistics.Cells[1, 2] := IntToStr(Stat.WordsCount);
ChartStatistic.Series[0].Add(Stat.WordsCount, 'Слів');
StringGridStatistics.Cells[0, 3] := 'Речень';
StringGridStatistics.Cells[1, 3] := IntToStr(Stat.SentencesCount);
ChartStatistic.Series[0].Add(Stat.SentencesCount, 'Речень');
StringGridStatistics.Cells[0, 4] := 'Символів';
StringGridStatistics.Cells[1, 4] := IntToStr(Stat.CharsCount);
ChartStatistic.Series[0].Add(Stat.CharsCount, 'Символів');
end;
 
end.
“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №9procedure TPagesDlg.FormCreate(Sender: TObject);begin StringGridStatistics.Cells[0, 0] := 'Характеристика'; StringGridStatistics.Cells[1,

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика