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


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

Содержание

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

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

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

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

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

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

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

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

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

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

Слайд 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
Лекція №12
   Ми

можемо легко додати або видалити останню стрічку в компоненті StringGrid,

але не так легко видалити стрічку в компоненті StringGrid, яка не є останьою. Для того щоб видалити необхідну стрічку в таблиці StringGrid, необхідно написати власну процедуру.

StringGrid Delphi
Як видалити необхідну стрічку в таблиці StringGrid

Процедура, що видаляє необхідну стрічку компоненти StringGrid, повинна спочатку переписати всі стрічки що знаходять нижче видаляємої на одну стрічку вверх, потім очистити останню стрічку, потім зменьшити кількість стрічок в таблиці на одну. Очистка останьої стрічки необхідна, так як при наступному додаванні стрічки нова стрічка може мати попередній вміст. Процедура:

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

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

TForm1.DeleteRow(ARow: Integer); var i, j: Integer; begin with StringGrid1 do   begin     for i:=ARow+1 to RowCount-1

do     for j:=0 to ColCount-1 do       Cells[j, i-1]:=Cells[j, i];     for i:=0 to ColCount-1 do       Cells[i, RowCount-1]:='';     RowCount:=RowCount-1;   end; end;

  Якщо потрібно зберегти вміст нульового стовпчика (це може бути, наприклад, номера стрічки, і якщо їх переписати, то нумерація порушиться), необхідно другий цикл робити не від 0 а від 1.

“Застосування засобів ООП в лінгвістичних задачах” Корпильов Д.В. 2014Лекція №12procedure TForm1.DeleteRow(ARow: Integer); var i, j: Integer; begin

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

більш короткий метод видалити стрічку в таблиці StringGrid. Необхідно скористатися

тим, що компонент StringGrid є нащадком класу TCustomGrid. А цей клас має метод DeleteRow, що видаляє вказану стрічку.
   Необхідно оголосити новий тип TMyGrid, що є нащадком TCustomGrid, а потім написати процедуру DeleteARow:

type TMyGrid=class(TCustomGrid); procedure TForm1.DeleteARow(Grid: TStringGrid;   ARow: Integer); begin   TMyGrid(Grid).DeleteRow(ARow); end;

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

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

цього необхідно прописати процедуру DeleteARow среди процедур типа TForm1.
   Тепер,

щоб видалити необхідну стрічку в таблиці StringGrid, необхідно вказати індекс потрібної стрічки і в якій саме таблиці. Наприклад:


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

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

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

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

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

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

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

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


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

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