Програма відомостей про кінські забіги

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    374,22 Кб
  • Опубликовано:
    2013-06-24
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Програма відомостей про кінські забіги

Зміст

Вступ

. Використання лінійних списків

.1 Загальні відомості

.2 Особливості використання cтеку

.3 Застосування черги у програмі курсової роботи

. Розробка багатомодульної програми

.1 Модулі у Pascal

.2 Стандартні модулі

.3 Модулі користувача

. Опис програми

.1 Технічні характеристики програми

.2 Структурна схема програми

.3 Розробка режимів роботи із архівом

.4 Опис роботи з програмою для користувача

3.4.1 Основна форма та її можливості

.4.2 Головне меню

.4.3 Таблиця даних

.4.4 Режим управління

.4.5 Повідомлення про помилки

Висновок

Список використаної літератури

Додаток А

Вступ


Завдання виконано на мові Паскаль у компіляторі Delphi 7 (з урахуванням особливостей синтаксиса Delphi). Програма, що містить відомості про кінські забіги, має назву «Items».

У програмі використано лінійний список - стек. Програма є багатомодульною та складається з п’яти модулів.

Важливою частиною програми є реалізація зчитування з текстового файлу та збереження даних у типізованому файлі із розширенням *.dat. Також можливе зчитування з типізованого файлу та створення нового архіву «з нуля» заповнюванням пустої таблиці.

програма стек кінський забіг

1.    
Використання лінійних списків

.1     Загальні відомості

Лінійний список - це множина елементів зберігання із заданим відношенням суворого порядку, що визначає слідування елементів у множині. Вимогу суворого порядку визвано тим, що з кожним елементом лінійного списку при зберіганні пов’язана певна фізична адреса. Прикладом лінійного списку може бути склад студентів навчальної групи чи розклад екзаменів під час сесії. У залежності від місця знаходження списку (внутрішня чи зовнішня пам’ять комп’ютера) він може бути організований як одномірний масив (у першому випадку) або як файл (у другому). Тоді елементом списку може бути елемент масиву або запис файлу.

Елемент списку може мати структуру. У цьому разі він складається з окремих полів (це складові елемента). Наприклад, елемент списку, що відповідає складу навчальної групи, може складатися з наступних полів: прізвище, ім’я, по батькові студента, номер залікової книжки, домашня адреса (Табл. 1.1).


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

У залежності від метода доступу до елементів лінійного списку розрізняють різновиди лінійних списків, що мають назву стек, черга та дек (двостороння черга).

Черга-це лінійний список, у якому усі включення робляться на одному кінці списку, а виключення - на іншому. Принцип організації черги: «Перший прийшов - перший вийшов», що скорочено позначаютьFIFO (‘Firstin - firstout’).


ВказівникиRтаL (рис. 1.1) визначають правий (Right) та лівий (Left) кінці черги. ВказівникиNext, що входять до складу кожного елементу, визначають адресу наступного праворуч елементу в черзі. Отже, зліва можна добавити та видалити елемент, як і у стеці. ВказівникNextостаннього праворуч елементу пустий. Цьому елементу невідомо, де знаходиться попередній елемент. Тому справа можна лише додавати нові елементи. Отже, у черзі додавання елементу має робитися справа, а видалення - зліва.

Для прикладу використаємо наступний опис:

= ^DynType;= record: integer;: PoinType;;L, R, Run: PoinType; : integer;

ТутDynType -упний елемент; PoinType - адресний тип, що вказує на поле пам’ятітипуDynType; L, R - вказівники початку й кінця черги, Run - тимчасовий вказівник, k - деяка інформаційна частина елементу.

Так, для додавання нового елементу в кінець черги може бути використано процедуру:

(k); (Run); Run^.Inf:=k;^.Next:=nil;L=nilthen:=Run^.Next:=Run;:=Run;

А для видалення останнього елементу::=L; L:=L^.Next;(Run).

Дек -цедвонаправлений список, у якому включеннята виключення елементів робляться на обох кінцях (рис. 1.2).


У даному курсовому проекті для роботи з даними було використано стек. Зупинимося детальніше на цьому типі списків.

.2    
Особливості використаннястеку


Стек - це лінійний список, у якому усі включення та виключення елементів робляться на одному боці. Принцип організації стеку: «Останній прийшов - перший вийшов», що скорочено позначають також LIFO (‘LastIn - FirstOut’). Стеки досить широко застосовуються у програмуванні.

Стек можна представити у вигляді коробки, у яку складаються аркуші картону, рівні за розміром коробці. Поклавши у цю коробку Nаркушів, ми не можемо витягти перший до тих пір, поки не буде витягнено попередні N - 1 аркушів.

Зв’язок між елементами стеку показаний на рис. 1.1. ТутBeg - вказівник початкового елемента стеку,nil- константа уPascal,що вказує на невизначеність змінної адресного типу.

.3     Застосування стека у програмі курсової роботи

У даному проекті використано наступний тип запису:

= record: string[10];: string[4];: integer;: integer;:Integer;: string[7];;= ^DynCatal;= record: CatalType;: PointerCatal;;

Тут у одному запису поєднані усі інформаційні частини (шифр,прізвисько, кількість років, рейтингтакількістьперемог) та вказівник.

Для обробки стека використовуються вказівникRun.

.      
Розробка багатомодульної програми

.1     Модулі уPascal

Модуль - це автономна програмна одиниця, що включає себе різноманітні компоненти розділу описів (типи, константи, змінні, процедури та функції) та, можливо, деякі виконувані оператори.

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

Використання модульного програмування дозволяє спростити тестування програми та знаходження помилок. Апаратно-залежні підзадачі можуть бути суворо відділені від інших під задач, що покращує мобільність створюваних програм.

Важлива особливість модулів полягає в тому, що компілятор розміщує їх програмний код в окремому сегменті пам'яті. Довжина сегменту не може перевищувати 64 Кбайт, однак кількість одночасно використовуваних модулів обмежується лише доступною пам'яттю, що дозволяє створювати великі програми.

.2     Стандартні модулі

Турбо Паскаль забезпечує доступ до великої кількості вбудованих констант, типів даних, змінних, процедур і функцій. Ці елементи розділені на зв'язкові групи, звані стандартними модулями, що дозволяє використовувати в конкретній програмі лише ті з них, які необхідні для її роботи.

У Турбо Паскалі є шість основних стандартних модулів: System, Crt, Dos, Printer, Overlay, Graph. Перші п'ять знаходяться у файлі Turbo.tpl (TurboPascalLibrary), модуль Graph - у файлі Graph.tpu (TurboPascalUnit). Текст стандартних модулів представлений в об'єктному коді, тому машинний час на їх компіляцію не потрібен.

Щоб уключити стандартний модуль в програму, його ім'я потрібно вказати в реченні використання Uses:, Printer, Dos

РеченняUses записується після заголовку програми.

Модуль System - це системний модуль, що забезпечує операції введення-виведення, обробку рядків, програмну реалізацію операцій з плаваючою комою, динамічний розподіл пам'яті, реалізацію математичних функцій (sin, cos, pred, odd та ін.) Модуль System автоматично включається в кожну програму, він вважається попередньо оголошеним. Останнє означає, що цей модуль не потрібно вказувати у реченні Uses.

Модуль Crt дозволяє використовувати всі можливості дисплея і клавіатури, включаючи управління режимами екрану, розширені коди клавіатури, колір, вікна та звукові ефекти.


.3     Модулі користувача

Модулі користувача - це інструмент для створення великих програм, що визначається такими їх властивостями:

·      Кожен модуль, що входить до складу програми, може мати обсяг до 64 Кбайт.

·      Модуль являє собою окремо збережену і незалежно компілюєму одиницю.

·        Кількість модулів не обмежується, вона визначається лише доступним об'ємом вільної пам'яті.

Модуль поділяється на три частини: секція інтерфейсу, секція реалізації та секція ініціалізації.

Загальна структура модулю:











Заголовок модулю складається з зарезервованого слова Unit і наступного за ним ідентифікатора, що є ім'ям модуля.

Інтерфейсна частина починається зі службового слова Interface. Інтерфейсна частина може містити описи констант, типів, змінних, процедур і функцій. Ці описи вважаються глобальними, їх може використовувати будь-який інший модуль, у фразі Uses якого вказано ім'я даного модуля.

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

У секції реалізації можуть бути свої описи констант, типів і змінних, використовуваних тільки при роботі цього модуля. Тут можуть міститися також процедури і функції, заголовки яких відсутні в секції інтерфейсу; ці процедури і функції недоступні для інших модулів і можуть бути активізовані тільки при роботі даного модуля.

Секція ініціалізації є необов'язковою, її наявність визначає слово Begin. Секції ініціалізації всіх модулів викликаються перед запуском основного тіла програми. Цю секцію зазвичай використовують для установки початкових значень змінних даного модуля, для відкриття файлів, автовизначення типу монітору та ін. Секція ініціалізації може бути порожньою, а за відсутності слова Begin відповідний модуль не містить цю секцію.

У курсовому проекті використано програму з п'яти модулів користувача, три з яких використовують форми, один - модуль перевірки даних, та останній - проект Delphi 7, що компілює усімодулі разом. Детальніше про багатомодульність програми проекту написано у розділі 3.2.

3.    
Опис програми

.1     Технічні характеристики програми

Об’єм вихідних файлів модулів:.dcu (26,1 КБ),Unit2.dcu (10,3 КБ), Unit3.dcu (5,86 КБ), Unit4.dcu (3,92 КБ),Unit5.dcu (3,39 КБ).

Об’єм готового файлу програми Items.exe: 475 КБ.

Необхідні мінімальні системні вимоги:

ОЗУ: 16 КБ;

ОС: Windows 95 та пізніші;

Пам’ять на диску: 1 МБ;

Пристрої: клавіатура, миша.

.2     Структурна схема програми

Дана програма складається з п’яти основних файлів: 4 модулі та головний файл проекту. Усі модулі у секції інтерфейсу використовують низку передописаних модулів Delphi: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ExtCtrls, Grids, XPMan..       Модуль головної форми Unit1.

Головний модуль програми, що містить головну форму для роботи з таблицею погодних даних. У модулі описано процедури натискання кнопок, що знаходяться на головній формі. У секції реалізації модуль використовує чотири інших модулі..                 Модуль форми редагування Unit2.

Модуль, що визивається при редагуванні певної комірки таблиці. При натисканні кнопки «Додати» в розділі меню «Функції»головної форми відкривається форма Form2. Модуль містить п’ятьпроцедур: натискання кнопки підтвердження редагування та перевірку правильності вводу даних..   Модуль видалення Unit3.

Викликає форму Form3 за натисканням кнопки «Видалити» меню «Функції». Форма містить одну процедуру, яка видаляє елемент за шифром. Використовує лише головний модуль..   Модуль виводу найкращих коней Unit4.

МодульUnit4лише виводить данні найкращих коней с таблиці модуля Unit1..                 Модуль Unit5.

Використовуєтьсямодулем Unit1 для виведення таблиці, у якій зазначено помилки при формуванні таблиці з файлу.

Загалом, відношення модулів можна проілюструвати схемою на рис. 3.1. Напрям стрілки вказує на модуль, який використовує даний.







3.3   Розробка режимів роботи із архівом

У роботі з архівом можна виділити чотири основні режими: зчитування з текстового файлу, зчитування з типізованого файлу, збереження в типізований файл та безпосередньо робота із архівом у вигляді таблиці.


. Зчитування з текстового файлу реалізується процедурою TForm1.N1Click(Sender: TObject). Процедура викликається натисканням на кнопку «Відкрити» у панелі меню (Рис. 3.2). Додавання з текстового файлу відбувається при повторному відкриті текстового файлу. Помилки текстового файлу виводяться у таблиці п‘ятої форми. Процедура такожігнорує пусті рядки файлу. В OpenDialog можна обирати розширення файлу з якого будуть зчитуватися данні: dat(типізований файл), txt (текстовий файл);Зчитування робиться з файлу по строкам; строка розбивається на шість слів, які за допомогою оператора “caseof”розподіляються кожен у своє поле в record.. При будь-яких змінах в таблиці, данні з таблиці обробляються процедуроюTForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; constValue: String) та вводяться за форматом маски, якщо данні коректні, то данні записуються до стеку та типізованого файла. Маска не дозволяє ввести недопустимий символ або число, чи слово, що може визвати аварійне закриття програми.. За допомогою процедури procedure TForm2.Button1Click(Sender: TObject) можливе додавання до стеку та таблиці даних безпосередньо самому, а не з файлу. Тут все легко: створюється новий елемент стека, в інформаційну частину в кожне поле вводяться дані з MaskEdit. СамеMaskEditзабезпечує правильність введених даних..Індивідуальним завданням є вивести список речей, строк придатності яких найбільший. Цю функцію виконує процедура TForm1.N11Click(Sender: TObject), сортирує стек за строком придатності. Сортування робиться через третю змінну, яка міняє місцями елементи стека за зростанням.. Друге індивідуальне завдання: вивести список речей,строк придатності яких вже вийшов. Виведення відбувається за кнопкою «списаныевещи» за допомогою процедури TForm1.N13Click(Sender: TObject).. Таким чином загальну структуру взаємодії файлів, стека та таблиці можна представити у вигляді схеми, як показано на рис. 3.4. Напрям стрілки вказує, звідки куди можна зчитати інформацію. Бачимо, що без змін стека ніякі інші зміни не можуть бути зафіксовані.

Рисунок 3.4 Структура взаємодії файлів

3.4   Опис роботи з програмою для користувача.

3.4.1 Основна форма та її можливості

При запуску програми перед користувачем виникає головна форма (Рис. 3.5), що містить наступні елементи:

- Головне меню;

- Таблиця даних;


Робота починається або додаванням нового рядка до пустої таблиці, або відкриванням архіву з файлу.

.4.2  Головне меню

Основним розділом головного меню є розділ «Файл» (Рис. 3.6), що виконує операції з файлами та програмою.


Виклик «Відкрити» дозволяє почати роботу з новим архівомaбо текстовим файлом, також якщо в нас вже є відкрита або заново відтворена база даних, то ми будемо додавати до неї, данні з нового файлу.«Відкрити…» викликає діалогове вікно, де користувач обирає файл архіву. До діалогового вікна відкривання застосований фільтр за текстовими (*.txt) та типізованими (*.dat) файлами.


Самі процедури відкриття та збереження описані у попередньому підрозділі. Кнопка «Вихід» завершує роботу із програмою.

У розділі «Функції» (Рис. 3.8) є три пункти, що дозволяють додати самому дані у архів, видалити предмет за номером, та функції сортування.

.4.3  Таблиця даних

Таблиця складається з шести стовпців, одного фіксованого рядка для заголовків та необхідної кількості рядків з інформацією.

Користувач може редагувати тільки вагу, рейтинг та кількість перемог.

.4.4  Режими управління.

Режим додавання вмикається, якщо обрати пункт меню «Функції» >«Додати» (Рис. 3.9).


Щоб додати нові данні, треба заповнити всі поля, та нажати кнопку «Додати»

Режим видаленнявмикається, якщо обрати меню «Функції» >«Видалення» (Рис. 3.10) Якщо ввести номер речі та її данні будуть видалені з БД.


Режим сортування проходить в автоматичному режимі, якщо обрати один із видів сортування в розділі меню «Функції»>«Сортування».

Режим редагування також проходить у таблиці без викликання зайвих форм та дій. Користувачу лише потрібно обрати комірку, яку він хоче редагувати та ввести там нові данні.

.4.5  Повідомлення про помилки

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

Зайві пробіли у таблиці, пусті рядки та зайві реквізити у файлах редагуються та не викликають помилок. Під час роботи з таблицею усі дані підводяться під суворий формат. Але є ряд неприпустимих помилок.

Усі помилки в текстовому файлі будуть виведені на екран після його відкриття.

В таблиці помилок вказано номер стовпця та строки в якій знайдено помилку та причину її появи.

Також, якщо ви будете неправильно додавати данні, або видаляти - ви також побачите помилки.

Висновок

Програма працює коректно. Виникнення програмних помилок попереджено перевіркою введених даних, тому робота програми не буде перервана аварійно.

Було реалізовано зчитування з текстового файлу, запис у типізований файл, сортування майже за всіма реквізитами, додавання у таблиці та додавання з файлу, видалення рядків та редагування реквізитів (вага, рейтинг, кількість перемог). Індивідуальне завдання з виведенням найкращих коней виконано.

Додатково реалізовано зчитування з типізованого файлу, можливість створювати проект не з файлів, а з пустої таблиці, та сортувати за всіма даними, також зберігати таблицю у текстовий файл.

Додаток А

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

Project1;,in 'Unit1.pas' {Form1},in 'Unit2.pas' {Form2},in 'Unit3.pas' {Form3},in 'Unit4.pas' {Form4},in 'Unit5.pas' {Form5};

{$R *.res}.Initialize;.CreateForm(TForm1, Form1);.CreateForm(TForm2, Form2);.CreateForm(TForm3, Form3);.CreateForm(TForm4, Form4);.CreateForm(TForm5, Form5);.Run;.:Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, XPMan, Menus;= class(TForm): TOpenDialog;: TSaveDialog;: TMainMenu;: TXPManifest;: TStringGrid;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TLabel;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;N1Click(Sender: TObject);StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;Value: String);StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;: Boolean);StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;Value: String);StringGrid1KeyDown(Sender: TObject; var Key: Word;: TShiftState);N6Click(Sender: TObject);N7Click(Sender: TObject);N9Click(Sender: TObject);N10Click(Sender: TObject);N11Click(Sender: TObject);N12Click(Sender: TObject);N13Click(Sender: TObject);FormCreate(Sender: TObject);StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer;Value: String);

{ Private declarations }

{ Public declarations };=10000;= record: string[10];: string[4];: integer;: integer;:Integer;: string[7];;= ^DynCatal;= record: CatalType;: PointerCatal;;=string[66];=array[1..Nmax] of string66;: TForm1;: word; { кол-вокомпонентовархива }: boolean; { признак создания архива }: char; { символ ответа на запрос программы }: CatalType; { компонент архива }: PointerCatal; { текущий указатель очереди архива }:PointerCatal; { файл результатов }{ архивный файл записей }

: file of CatalType;:set of Byte;:set of byte;,k,k1,k2,c,b,Bukva,Shifr2,cc:Byte;,St1,St2:StringArray;,S,S1,Slovo,Slovo1,Slovo11,Shifr1:String66;:set of Char;,Flag,Cond1:Boolean;,Nazv,Strana:TextFile;,i,x,z,y,v,error,redx,redy,o,z1,m,z2:Integer;:set of Char;:set of char;:Word;Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}Vivod;:=1; run:=head;Run <> NIL do.StringGrid1.Cells[0,y]:=run^.Inf.Nazv;.StringGrid1.Cells[1,y]:=run^.Inf.Number;.StringGrid1.Cells[2,y]:=IntToStr(run^.Inf.Kolvo);.StringGrid1.Cells[3,y]:=IntToStr(run^.Inf.Year);.StringGrid1.Cells[4,y]:=IntToStr(run^.Inf.Srok);.StringGrid1.Cells[5,y]:=run^.Inf.Strana;(y);:= run^.next;y >form1.StringGrid1.RowCount then.StringGrid1.RowCount:=Form1.StringGrid1.RowCount+1;;;TForm1.N1Click(Sender: TObject);elm,elm1:PointerCatal;:boolean;ii,jj,j:Byte;klm,kk1,kk2,oo:integer;SignBegin(S:string66; k:byte):byte;

{ Поиск начала слова в строке S }: byte;,y:Integer;:=0;i:=k to length(S) donot (S[i] in Separs) then:=i; Exit;{ SignBegin };

{ ----------------------------------------------------------- }SignEnd(S:string66; k:byte):byte;

{ Поиск конца слова в строке S }: byte;:=0;i:=k to length(S) doS[i] in Separs then:=i; Exit;{ SignEnd };

{ ----------------------------------------------------------- }:=['a'..'z','а'..'я','A'..'Z','А'..'Я'];:=['0'..'9'];:=[' ',';',',','.','|','-','_'];:=1;(OpenDialog1.Execute) and (Copy(OpenDialog1.FileName,Length(OpenDialog1.FileName)-3,4)='.dat') and (cc=0) then(FileOut,OpenDialog1.FileName);(FileOut);:=head;not eof(FileOut) do(run);^.Next:=head;:=run;(FileOut,run^.inf);:=run^.Next;;:=head;elm:=run^.Next;Run<>nil do:=run^.Next;elm<>nil dorun^.Inf.Number=elm^.Inf.Number then:=run;elm1<>NIL doelm1^.next=elm then;:=elm1^.Next;;^.Next:=elm^.Next;(elm);:=elm1;;:=elm^.Next;;:=run^.Next;;.FreeOnRelease;(cc);.Enabled:=True;.Enabled:=True;.FixedRows:=1;;Copy(OpenDialog1.FileName,Length(OpenDialog1.FileName)-3,4)='.txt' then.FreeOnRelease;(Baza,OpenDialog1.FileName);

{ ???????? ???????????? ?????? }(Baza);

{ ???? ? ?????? ???????? ?????? }:=0;not eof(Baza) do(n);(Baza,St[n]);;(FileOut,'C:\Users\user\Desktop\Курсовая_вещь\catal.dat');(FileOut);(FileOut);(Nazv,'C:\Users\user\Desktop\Курсовая_вещь\nazv.dat');(Nazv);:=0;not eof(Nazv) do(m);(Nazv,St1[m]);;(Strana,'C:\Users\user\Desktop\Курсовая_вещь\strana.dat');(Strana);:=0;not eof(Strana) do(oo);(Strana,St2[oo]);;:=1;i:=1 to n do:=St[i]; k2:=0; Cond:=true;:=0;S<>'' then(run);^.Next:=head;:=run;Cond do:=SignBegin(S,k2+1);k1=0 then:=false:=SignEnd(S,k1+1);k2=0 then:=length(S)+1;Cond:=false;;:Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Mask, xpman;= class(TForm): TButton;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TMaskEdit;: TMaskEdit;: TMaskEdit;: TMaskEdit;: TMaskEdit;: TMaskEdit; procedure Button1Click(Sender: TObject);MaskEdit1Click(Sender: TObject);MaskEdit3Click(Sender: TObject);MaskEdit4Click(Sender: TObject);MaskEdit5Click(Sender: TObject);MaskEdit6Click(Sender: TObject);FormCreate(Sender: TObject);MaskEdit2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;:Word;:set of Byte;:set of Byte;Unit1;

{$R *.dfm}TForm2.Button1Click(Sender: TObject);:Boolean;S:string;i:integer;elm:PointerCatal;(FileOut,'C:\Users\user\Desktop\Курсовая_работа\catal.dat');(FileOut);(FileOut);:=False;(MaskEdit1.text='') or (MaskEdit2.text='') or (MaskEdit3.text='') or (MaskEdit4.text='') or (MaskEdit5.text='')(MaskEdit6.text='') then(Handle,PChar('Вызаполнилиневсеполя'),PChar('Добавление_ERROR'),MB_ICONERROR+MB_OK)(Length(MaskEdit1.Text)>10)or(Length(MaskEdit2.text)<>4)or(Length(MaskEdit3.Text)>3)or(Length(MaskEdit4.text)>4)(Length(MaskEdit5.Text)>3) or (Length(MaskEdit6.Text)>7) then(Handle,PChar('Отредактируйтеданные'),PChar('Ошибкаввода'),MB_ICONERROR+MB_OK):=True;Form1 do(run);run^.Next:=head; head:=run;^.Inf.Nazv:=form2.MaskEdit1.Text;^.Inf.Number:=form2.MaskEdit2.Text;^.Inf.Kolvo:=strtoint(form2.MaskEdit3.Text);^.Inf.Year:=strtoint(form2.MaskEdit4.Text);^.Inf.Srok:=StrToInt(form2.MaskEdit5.Text);^.Inf.Strana:=form2.MaskEdit6.Text;:=head;elm:=head^.Next;elm<>nil dorun^.Inf.Number=elm^.Inf.Number then:=head^.Next;(Run);:=head;(Handle,PChar('Данныйномеружесуществует'),PChar('Ошибкаввода'),MB_ICONERROR+MB_OK);:=elm^.Next;;;;;:=1; run:=head;Run <> NIL do.StringGrid1.Cells[0,y]:=run^.Inf.Nazv;.StringGrid1.Cells[1,y]:=run^.Inf.Number;.StringGrid1.Cells[2,y]:=IntToStr(run^.Inf.Kolvo);.StringGrid1.Cells[3,y]:=IntToStr(run^.Inf.Year);.StringGrid1.Cells[4,y]:=IntToStr(run^.Inf.Srok);.StringGrid1.Cells[5,y]:=run^.Inf.Strana;(y);:= run^.next;y >form1.StringGrid1.RowCount then.StringGrid1.RowCount:=Form1.StringGrid1.RowCount+1;;:=head;run<>nil do(FileOut,FileSize(FileOut));(FileOut,run^.inf);:=run^.Next;;Flag then.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';.Text:='';;;;TForm2.MaskEdit1Click(Sender: TObject);.SelStart:=0;;TForm2.MaskEdit3Click(Sender: TObject);.SelStart:=0;;TForm2.MaskEdit4Click(Sender: TObject);.SelStart:=0;;TForm2.MaskEdit5Click(Sender: TObject);.SelStart:=0;;TForm2.MaskEdit6Click(Sender: TObject);.SelStart:=0;;TForm2.FormCreate(Sender: TObject);.width:=120;.width:=120;.width:=120;.width:=120;.width:=120;.width:=120;.Left:=56;.Left:=56;.Left:=56;.left:=356;.left:=356;.left:=356;.Top:=40;.Top:=100;.Top:=160;.Top:=40;.Top:=100;.Top:=160;.Top:=20;.Top:=80;.Top:=140;.Top:=20;.Top:=80;.Top:=140;;TForm2.MaskEdit2Click(Sender: TObject);.SelStart:=0;;

Похожие работы на - Програма відомостей про кінські забіги

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!