Слайд 1“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В., 2014, mail:
korpy@ukr.net
Лекція № 9
Основи роботи з записами
Зміст
7. Робота з записами
7.1.
Оголошення запису
7.2. Інструкція with
7.3. Введення і виведення записів у файл
7.4. Виведення запису у файл
7.5. Зчитування записів з файлу
Питання
Література
Додаток 1
Слайд 2“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №
9
У практиці програмування досить часто доводиться мати справу з даними,
які природним чином складаються з інших даних. Наприклад, відомості про студента містять прізвище, ім'я, по батькові, число, місяць і рік народження, домашню адресу і інші дані. Для представлення подібної інформації в мові Delphi використовується структура, яка носить назву запис (record).
З одного боку, запис можна розглядати як єдину структуру, а з іншого — як набір окремих елементів, компонентів. Характерною особливістю запису є те, що складові її компоненти можуть бути різного типу. Інша особливість запису полягає в тому, що кожен компонент запису має ім'я.
Отже, запис — це структура даних, що складається з окремих компонентів з ім’ям різного типу, що називаються полями.
Розділ 7. Робота з записами
Слайд 3“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.1.
Оголошення запису
Як будь-який тип, що створюється програмістом, тип "запис" повинен
бути оголошений в розділі type. У загальному вигляді оголошення типу "запис" виглядає так:
Type
Ім'я = record
Поле_1 : Тип_1;
Поле_2 : Тип_2;
Поле_к :
Тип_к;
end;
де:
Ім'я — ім'я типу "запис";
record — зарезервоване слово мови Delphi, що означає, що далі слідує оголошення компонентів (полів) запису;
поле_i і тип_i — ім'я і тип i-го компоненту (поля) запису, де i=1 ..., до;
end — зарезервоване слово мови Delphi, що означає, що список полів закінчений.
Слайд 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;
Слайд 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;
Слайд 6“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.2.
Інструкція with
Інструкція with дозволяє використовувати в тексті програми імена
полів без вказівки імені змінної-запису. У загальному вигляді інструкція with виглядає таким чином:
with Ім'я do
begin
( інструкції програми }
end;
де:
ім'я — ім'я змінної-запису;
with — зарезервоване слово мови Delphi, що означає, що далі, до слова end, при зверненні до полів запису ім'я, ім'я запису можна не указувати.
Слайд 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;
можна записати:
Слайд 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:='';
Слайд 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 пов'язати цю змінну з конкретним файлом. Потім потрібно відкрити файл (для читання, запису або оновлення). Після цього можна прочитати запис з файлу або записати запис у файл.
Слайд 10“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
7.4.
Виведення запису у файл
Розглянемо програму, яка записує у файл введені
користувачем дані - словник, формуючи, таким чином, просту базу даних. Початкові дані вводяться в поля діалогового вікна (мал. 8.1) і зберігаються у файлі, компонентами якого є записи типу TDictionaryRecords.
Слайд 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;
Слайд 12“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Слайд 13“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure
TFrmDictionary.BBtnTranslationClick(Sender: TObject);
begin
Edit2.SetFocus;
Edit2.Text := SgData.Cells[SgData.Col + 2, SgData.Row];
end;
Слайд 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;
Слайд 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;
Слайд 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;
Слайд 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
Слайд 19“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
Розробка
текстового редактора
procedure TFrmMainTextEditor.MnCreateFileClick(Sender: TObject);
begin
TFrmChild.Create(Self);
end;
Слайд 20“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
var
FrmChild: TFrmChild;
Слайд 21“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
У
вікні Project Options на вкладці Forms виберемо форму ChildForm і
клікнувши мишкою на кнопці з стрілочкою, перенесемо ім’я дочірньої форми ChildForm з списка Auto-create forms (форми, що автоматично створюються при старті застосування) в списку Available forms (доступні форми).
Слайд 22“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure
TFrmChild.FormCreate(Sender: TObject);
begin
Caption := 'Новий документ';
end;
Слайд 23“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure
TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // Закрити
форму та видалити її з пам’яті
end;
Слайд 24“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure
TFrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // Закрити
форму та видалити її з пам’яті
end;
Слайд 25“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014
Лекція №9
procedure
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;
Слайд 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 як показано на малюнку.
Слайд 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;
Слайд 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;
Слайд 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;
Слайд 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;
Слайд 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
Слайд 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;
Слайд 34“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 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.
Слайд 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}
Слайд 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.