Курсовая

Курсовая на тему Информационная система расчетов по договорам 2

Работа добавлена на сайт bukvasha.net: 2015-06-30

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 23.11.2024


##DELPHI.DIAGRAM.PORTFOLIO###�@##	#	Untitled1######
object Form1: TForm1   Left = 57   Top = 127   BorderStyle = bsSingle   Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1086#1085#1085#1072#1103' '#1089#1080#1089#1090#1077#1084#1072' '#1088#1072#1089#1095#1105#1090#1072' '#1087#1086' '#1076#1086#1075#1086#1074#1086#1088#1072#1084   ClientHeight = 514   ClientWidth = 905   Color = clBtnFace   Font.Charset = DEFAULT_CHARSET   Font.Color = clWindowText   Font.Height = -11   Font.Name = 'MS Sans Serif'   Font.Style = []   Menu = MainMenu1   OldCreateOrder = False   OnCreate = FormCreate   PixelsPerInch = 96   TextHeight = 13   object PageControl1: TPageControl     Left = 8     Top = 0     Width = 897     Height = 473     ActivePage = TabSheet2     TabOrder = 0     object TabSheet1: TTabSheet       Caption = #1061#1044       object XDgrid: TStringGrid         Left = 8         Top = 16         Width = 873         Height = 297         ColCount = 7         DefaultColWidth = 110         FixedCols = 0         RowCount = 11         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing]         TabOrder = 0         ColWidths = (           91           93           94           237           140           116           90)       end     end     object TabSheet2: TTabSheet       Caption = #1042#1058#1050       ImageIndex = 1       object WTKgrid: TStringGrid         Left = 8         Top = 16         Width = 873         Height = 425         ColCount = 10         DefaultColWidth = 125         FixedCols = 0         RowCount = 16         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]         TabOrder = 0         ColWidths = (           86           88           97           88           56           102           134           157           98           91)       end     end     object TabSheet3: TTabSheet       Caption = #1041#1040#1053#1050       ImageIndex = 2       object BANKgrid: TStringGrid         Left = 8         Top = 16         Width = 793         Height = 297         DefaultColWidth = 135         FixedCols = 0         RowCount = 10         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]         TabOrder = 0         ColWidths = (           118           104           304           142           116)       end     end     object TabSheet4: TTabSheet       Caption = #1053#1077#1079#1072#1074#1077#1088#1096#1077#1085#1085#1099#1077' '#1076#1086#1075#1086#1074#1086#1088#1072       ImageIndex = 3       object NDgrid: TStringGrid         Left = 8         Top = 16         Width = 721         Height = 297         ColCount = 6         DefaultColWidth = 110         FixedCols = 0         RowCount = 11         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect]         TabOrder = 0         ColWidths = (           94           94           93           189           124           117)       end       object GroupBox1: TGroupBox         Left = 760         Top = 16         Width = 113         Height = 89         Caption = #1057#1086#1088#1090#1080#1088#1086#1074#1082#1072         TabOrder = 1         object btnSort1: TButton           Left = 8           Top = 24           Width = 97           Height = 25           Caption = #1055#1086' '#1091#1073#1099#1074#1072#1085#1080#1102           TabOrder = 0           OnClick = btnSort1Click         end         object btnSort2: TButton           Left = 8           Top = 56           Width = 97           Height = 25           Caption = #1055#1086' '#1074#1086#1079#1088#1072#1089#1090#1072#1085#1080#1102           TabOrder = 1           OnClick = btnSort2Click         end       end     end   end   object btnSearch: TButton     Left = 560     Top = 480     Width = 81     Height = 25     Caption = #1055#1086#1080#1089#1082     TabOrder = 1     OnClick = btnSearchClick   end   object txtSearch: TEdit     Left = 656     Top = 480     Width = 169     Height = 21     TabOrder = 2   end   object CheckBox1: TCheckBox     Left = 8     Top = 480     Width = 113     Height = 17     Caption = #1056#1077#1076#1072#1082#1090#1080#1088#1086#1074#1072#1085#1080#1077     Checked = True     State = cbChecked     TabOrder = 3     OnClick = CheckBox1Click   end   object btnDel: TButton     Left = 128     Top = 480     Width = 65     Height = 25     Caption = #1059#1076#1072#1083#1080#1090#1100     Enabled = False     TabOrder = 4     OnClick = btnDelClick   end   object MainMenu1: TMainMenu     object N1: TMenuItem       Caption = #1060#1072#1081#1083       RadioItem = True       object N3: TMenuItem         Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100         OnClick = N3Click       end       object N4: TMenuItem         Caption = #1054#1073#1085#1086#1074#1080#1090#1100         OnClick = N4Click       end       object N2: TMenuItem         Caption = #1042#1099#1093#1086#1076         OnClick = N2Click       end     end   end end 

Белорусский национальный технический университет

Международный институт дистанционного образования

Кафедра ПОВТ и АС

КУРСОВОЙ ПРОЕКТ

по курсу « Структуры и организация данных в ЭВМ »

На тему

« Информационная система расчетов по договорам »

Исполнитель ст. гр.417313 Я

Руководитель Романов А.В.

Минск 2005г.

Введение

Без использования данных и структур, образованных элементами данных, не обходится ни одна программа для электронных вычислительных машин. Любые конструкции программы – нотации, операторы и т. д. – обязательно включают в себя идентификаторы некоторых данных и их совокупностей. Логическая схема структуры данных, представляющей собой совокупность взаимосвязанных данных, определяет не только внутреннее представление в памяти компьютера информационной модели некоторой предметной области (или ее составной части), но и, что самое главное, построение алгоритма, применяемого для обработки этой структуры. Так, например, алгоритм включения нового элемента в таблицу, организованную в памяти как вектор записей, не может быть использован для включения в иерархически организованный список. Как указывает Н. Вирт, определяющую роль в программировании играют не алгоритмы, а именно структуры данных, логическое и физическое построение которых являются главными факторами, влияющими на реализацию программируемой процедуры обработки.

Значимость той роли, которую играют структуры данных в процессе конструирования и кодирования программ для ЭВМ, послужила причиной появления в специальной «компьютерной» литературе множества работ, посвященных структурному подходу к организации данных. Было разработано значительное количество программных компонентов (многие из них получили название «стандартных»), применение которых существенно облегчило работу по обработке тех взаимосвязанных совокупностей данных, которые выбирают программисты для использования в своих программах. В учебных программах высших учебных заведений появилась специальная дисциплина «Структуры и организация данных в ЭВМ», в рамках которой изучаются не только логические схемы различных структур данных и способы их физической организации, но и построение алгоритмов обработки таких структур (формирования, просмотр и т. д.). Важность такой дисциплины для специалистов по программному обеспечению трудно переоценить.

Тема данного курсового проекта – «Информационная система расчётов по договорам». При этом по заданию к курсовому проекту необходимо использовать структуру данных типа вектор и пирамидальную сортировку данных.

Базовым была взята ИСР Delphi, так как он позволяет с большой гибкостью оперировать различными данными, а также предоставляет практически неограниченные возможности по созданию пользовательских интерфейсов.

Ниже я приведу некоторые обоснования использования среды Delphi для разработки данного программного продукта.

Delphi - это комбинация нескольких важнейших технологий:

  • Высокопроизводительный компилятор в машинный код.

  • Объектно-ориентированная модель компонент.

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

Проект данной курсовой работы представляет собой инструмент для управления информационной системой расчетов по договорам для коммерческой научно-производственной организации.

  1. Состав DELPHI-проекта

    1. Состав проекта

Данный проект состоит из одной формы Form1. На форме расположены следующие компоненты (см. рис1):

- компонент MainMenu1 – осуществляет общее управление программой, в частности сохранение файлов с данными, обновление данных из файлов, выход из программы.

- компонент BtnDel – кнопка в нижней части формы для удаления записей данных.

- компонент txtSearch – поле ввода искомых данных.

- компонент btnSearch – кнопка для начала поиска введенных данных в поле txtSearch.

- компонент CheckBox1 – соответственно для разрешения редактирования данных.

- компонент PageControl1 – содержит вкладки TabSheet 1÷4 на которых отражены данные (соответственно “ХД”, “ВТК”, “БАНК” и “Незавершенные договора”).

Компоненты TabSheet 1÷4 содержат в себе элементы таблицы (соответственно “XDgrid”, “WTKgrid”, “BANKgrid” и “NDgrid”). Кроме того, TabSheet 4 содержит ещё компонент GroupBox1 c кнопками btnSort1 и btnSort2 для сортировки списка незавершенных договоров по возрастанию и по убыванию количества членов ВТК.

Рис.1 – Главная форма программы.

1.2 Основные модули и процедуры, входящие в состав программного комплекса

Список модулей:

Программа содержит модуль Unit1 – модуль интерфейсной формы проекта.

Список основных процедур, входящих в состав программного комплекса:

- procedure LoadFromFiles – процедура загрузки данных из файлов в одномерные массивы.

- procedure InitGrids – процедура инициализации таблиц и заполнения их в соответствии с массивами.

- procedure FillArrays – процедура заполнения массивов в соответствии с данными в таблицах.

- procedure SaveInFiles – процедура сохранения данных из массивов в файлы.

- procedure FillNDgrid – заполнение таблицы незавершенных договоров.

- procedure Sort – пирамидальная сортировка таблицы незавершенных договоров NDgrid по возрастанию.

- procedure Sort2– пирамидальная сортировка таблицы незавершенных договоров NDgrid по убыванию.

- procedure SweepRows(r1,r2:word) - замена местами строк в таблице незавершенных договоров NDgrid при сортировке.

- procedure SaveRow(var sr:SRow;r:word) – сохранение замененной строки.

2. Статические данные и структуры

В программе для хранения данных объявлено 5 одномерных строковых массива типа String[N] , где N≤255.

XDar: array [1..70] of String[30];

WTKar: array [1..150] of String[30];

BANKar: array [1..50] of String[30];

SRow=array [0..5] of String[30];

s: array [0..5] of String[30];

Имя массива

Тип

Размер в байтах

XDar

String[N]

(30+1)*70=2170

WTKar

String[N]

(30+1)*150=4650

BANKar

String[N]

(30+1)*50=1550

SRow

String[N]

(30+1)*6=186

S

String[N]

(30+1)*6=186

Кроме того, в программе для временных нужд объявляются переменные:

nCol, i, j, y, x, n, n1, n2, c типа integer (каждая по 4 байта);

l, r типа word (каждая по 2 байта);

st, code, s импа string[30] (каждая по 30+1=31 байт).

  • Логические структуры данных

Главным элементом и базовой структурой данного проекта являются обычные одномерные строковые массивы XDar, WTKar и BANKar размерностью 70, 150 и 50 соответственно.

Объявление массива выглядит следующим образом:

XDar: array [1..70] of String[30];

WTKar: array [1..150] of String[30];

BANKar: array [1..50] of String[30];

Массив (array) – это структура данных. Общим признаком всех массивов всех типов является возможность прямого доступа к их элементам со стороны программы. Эта возможность обеспечивается нумерацией элементов с помощью индекса, который обычно имеет целый тип.

Для логического определения массива ему необходимо происвоить имя, указать пару ограниченых значений индекса (или несколько пар граничных значений индексов), а также указать тип элементов.

Логическая схема структуры массива XDar:


0

1

2

30

1






2






3











70






Каждый элемент массива занимает 1 байт памяти. Соответственно массив XDar будет занимать (30+1)*70=2170 байт.

Логическая схема структуры массива WTKar:


0

1

2

30

1






2






3











150






Каждый элемент массива занимает 1 байт памяти. Соответственно массив WTKar будет занимать (30+1)*150=4650 байт.

Логическая схема структуры массива BANKar:


0

1

2

30

1






2






3











50






Каждый элемент массива занимает 1 байт памяти. Соответственно массив BANKar будет занимать (30+1)*50=1550 байт.

  • Алгоритмы обработки основных структур

Основной операцией обработки структуры в данном программном обеспечении является пирамидальная сортировка (по заданию на курсовое проектирование).

Данный вид сортировки не рекомендуется для небольшого числа элементов, как, скажем, в нашем программном обеспечении. Однако для большого количества элементов пирамидальная сортировка оказывается очень эффективной, и чем больше число элементов, тем эффективнее.

Пирамидальная сортировка требует NLog2N шагов даже в худшем случае. Такие отлиные характеристики для худшего случая – одно из самых выгодных качеств пирамидальной сортировки.

Но в принципе для данного вида сортиовки, видимо, больше всего подходят случаи, когда элементы более или менее рассортированы в обратном порядке, т.е. для нее характерно неестественное поведение. Очевидно, что при обратном порядке фаза построения пирамиды не требует никаких пересылок.

Пирамида определяется как некоторая последовательность ключей

K[L], ..., K[R], такая, что

K[i] ≤ K[2i] & K[i] ≤ K[2i + 1], (1)

для всякого i = L, ..., R/2. Если имеется массив К[1], К[2], ..., К[R], который индексируется от 1, то этот массив можно представить в виде двоичного дерева. Пример такого представления при R=10 показан на рисунке 2.

Рис.2 – Массив ключей, представленный в виде двоичного дерева

Дерево, изображенное на рисунке 2, представляет собой пирамиду, поскольку для каждого i = 1, 2, ..., R/2 выполняется условие (1). Очевидно, последовательность элементов с индексами i = R/2+1, R/2+2, ...., R (листьев двоичного дерева), является пирамидой, поскольку для этих индексов в пирамиде нет сыновей.

Способ построения пирамиды «на том же месте» был предложен Р. Флойдом. В нем используется процедура просеивания (sift), которую рас-смотрим на следующем примере.

Предположим, что дана пирамида с элементами К[3], К[4], ..., К[10] нужно добавить новый элемент К[2] для того, чтобы сформировать расши-ренную пирамиду К[2], К[3], К[4], ..., К[10]. Возьмем, например, исходную пирамиду К[3], ..., К[10], покачанную на рисунке 3, и расширим эту пирамиду «влево», добавив элемент К[2] =44.

Рис.3 – Пирамида, в которую добавляется ключ К[2]=44

Добавляемый ключ К[2] просеивается в пирамиду: его значение сравнивается с ключами узлов-сыновей, т.е. со значениями 15 и 28. Если бы оба слюча-сына были больше, чем просеиваемый ключ, то последний остался бы на месте, и просеивание было бы завершено. В нашем случае оба ключа-сына меньше, чем 44, следовательно, вставляемый ключ меняется местами с наименьшим ключом в этой паре, т.е. с ключом 15. Ключ 44 записывается в элемент К[4], а ключ 15 - в элемент К[2]. Просеивание продолжается, поскольку ключи-сыновья нового элемента К[4] оказываются меньше его - происходит обмен ключей 44 и 18. В результате получаем новую пирамиду, показанную на рисунке 4.

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

Просеивание элемента завершается при выполнении любого из двух условий: либо у него не оказывается потомков в пирамиде, либо значение его ключа не превышает значений ключей обоих сыновей.

Рис.4 – Просеивание ключа 44 в пирамиду.

Алгоритм просеивания в пирамиду допускает рекурсивную формулировку:

  1. просеивание элемента с индексом temp,

  2. при выполнении условий остановки - выход,

  3. определение индекса q элемента, с которым выполняется обмен,

  4. обмен элементов с индексами temp и q,

  5. temp:= q,

  6. перейти к п. 1.

Этот алгоритм в применении к нашему массиву а реализован в подпрограмме Sift, которая выполняет просеивания в пирамиду с максимальным индексом R:

Procedure Sift (temp, R: Integer);

Var q: integer;

x: TElement;

Begin

q:==2*t;

If q > R Then Exit;

If q < R Then

If a[q-l].Key > a[q].Key Then q:= q + 1;

If a[temp-1].Key <= a[q-l].Key Then Exit;

x:= a[temp-1];

a [temp-1] := a[q-l];

a[q-l]:= x;

temp:= q;

Shift (temp, R);

End;

Процедура Shift учитывает индексацию вектора а от нуля.

Теперь рассмотрим процесс создания пирамиды из массива а[0], а[1], a[Highlndex]. Элементы этого массива индексируются от 0, а пирамида от 1. Ясно, что элементы a[N/2], a[N/2+1], ..., a[Highlndex] уже образуют пирамиду, поскольку не существует двух индексов i (i= N/2+1, N/2+2, …) и j, таких, что, j=2i (или j=2i+l). Эти элементы составляют последовательность, которую можно рассматривать как листья соответствующего двоичного дерева. Теперь пирамида расширяется влево: на каждом шаге добавляется новый элемент и при помощи просеивания помещается на соответствующее место. Этот процесс иллюстрируется следующим примером.

Процесс построения пирамиды

44 55 12 42 94 18 06 67

44 55 12 42 94 18 06 67

44 55 06 42 94 18 12 67

44 42 06 55 94 18 12 67

06 42 12 55 94 18 44 67

Примечание - жирным шрифтом отмечены ключи, образующие пирамиду на текущем шаге ее построения

Следовательно, процесс построения пирамиды из N элементов «на том же месте» можно описать следующим образом:

R:= N;

For i:= N Div 2 Downto 1 Do

Sift(i, R);

Для того, чтобы получить не только частичную, но и полную упорядоченность элементов нужно проделать N сдвигающих шагов, причем после каждого шага на вершину дерева выталкивается очередной (наименьший элемент). Возникает вопрос, где хранить «всплывающие» верхние элементы? Существует такой выход: каждый раз брать последнюю компоненту пирамиды (скажем, это будет х), прятать верхний элемент на место х, а х посылать в начало пирамиды в качестве элемента а[0] и просеивать его в нужное место. В следующей таблице приводятся необходимые в этом случае шаги:

Пример преобразования пирамиды в упорядоченную последовательность

06 42 12 55 94 18 44 67

12 42 18 55 94 67 44 06

18 42 44 55 94 67 12 06

42 55 44 67 94 18 12 06

44 55 94 67 42 18 12 06

55 67 94 44 42 18 12 06

67 94 55 44 42 18 12 0б

94 67 55 44 42 18 12 06 - Результат

Этот процесс описывается с помощью процедуры Sift следующим образом:

For R:= Highlndex Downto 1 Do Begin

x:=a[0]; a[0]:=a[R]; a[R]:=x;

Sift(1, R);

End;

Из примера сортировки видно, что на самом деле в результате мы получаем последовательность в обратном порядке. Но это легко можно исправить, изменив направление отношения порядка в процедуре Sift (в третьем и четвертом операторах If текста процедуры Sift, приведенного выше). В результате получаем следующую процедуру PyramidSort, учитывающую специфику индексации вектора а:

Procedure PyramidSort;

Var R, i: integer;

x: TElement;

Begin

R:= N;

For i:= N Div 2 Downto 1 Do

Sift(i, R);

For R:= Highlndex Downto 1 Do Begin

x:=a[0]; a[0]:= a[R]; a[R]:= x;

Sift(l, R);

End;

Алгоритм просеивания для некоторого массива а можно представить в следующей блок-схеме:


5. Руководство пользователя

Данное програмное обеспечение имеет интуитивно понятный интерфейс и использует все богатейшие возможности пакета Borland Delphi.

Программа имеет четыре вкладки. При первоначальном запуске активируется первая – вкладка хозяйственных договоров “ХД” (см. рис.5).

Рис.5 – Вкладка ходяйственных договоров

Здесь же можно внести изменения (предварительно отметив чекбокс «редактирование»), добавить или удалить новые записи.

Перейдя на вкладку временных трудовых коллективов “ВТК” (см. рис.6), мы попадем на список атрибутов исполнителей всех хоздоговоров, являющиеся членами соответствующих ВТК.

Рис.6 – Вкладка списков атрибутов исполнителей всех хоздоговоров

Здесь также можно редактировать списки, удалять их и добавлять новые. Нужно отметить, что “Код ХД” составляется из номера договора и года заключения договора.

Третья вкладка “Банк” содержит атрибуты отделений банков сбербанка, где имеются счета исполнителя договоров (см. рис.7).

Рис.7 – Вкладка атрибутов отделений банков сбербанка.

В данной вкладке как и в прдедыдущих можно радактировать атрибуты, удалять их, добавлять новые.

И в четвертой вкладке находится упорядоченный по количеству членов ВТК (по возрастанию или по убыванию) всех незавершенных договоров с указанием части их атрибутов (согласно заданию к курсовому проектированию). Скриншот данной вкладки представлен на рис. 8.

Рис.8 – Вкладка атрибутов незавершенных договоров



Сортировка незавершенных договоров происходит или по убыванию, или по возрастанию количества членов ВТК пирамидальным методом (согласно заданию к курсовому проектированию).

Из всех вкладок доступно меню “Файл”, в которм можно сохранить файлы с записями всей информации, обновить данную информацию или выйти из программы. Также доступен поиск отдельных элементов атрибутов.



Заключение

В процессе разработки данного курсового проекта были изучены и закреплены знания по физическим размещениям структур данных и методам их обработки (сортировки). В ИСР DELPHI была разработана инормационная система расчётов по договорам. При создании программы не использовались компоненты баз данных данной ИСР.

Тестирование данного продукта показало хорошую работоспособность и отсутствие ошибок и недочётов в программе, а также в выполнении требований задания курсового проекта. Были изучены базовая структура данных типа вектор и пирамидальный метод сортировки.

Литература

1 Структуры и организация данных в компьютере. Учебное пособие / Лакин В.И., Романов А.В. – Мн.: БНТУ, 2004 – 176 с.

2 Архангельский А.Я. Delphi 6. Справочное пособие. - М.: ЗАО «Издательсво БИНОМ», 2001. - 1024 с.

3 Вирт Н. Алгоритмы и структуры данных. - СПб: Невский диалект, 2001. 352 с.

4 Гук М. Аппаратные средства IBM PC. Энциклопедия. - СПб: Питер, 2003. - 928 с.

5 Кнут Д.Э. Искусство программирования, том 1. Основные алгоритмы. - М.: Издательский дом «Вильямс», 2002. -720 с.

6 Кнут Д.Э. Искусство программирования, том 3. Сортировка и поиск. - М.: Издательский дом «Вильямс», 2001. - 832 с.

7 Лэнгсам Й., Огенстайн М., Тененбаум А. Структура данных для персональных ЭВМ. – М.: Мир, 1989. – 475 с.

8 Фаронов В. Система программирования DELPHI. -СПб.: «БВХ-Петербург», 2004. - 887 с.

Приложение 1

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, Grids, Menus, StdCtrls, ExtCtrls;

type

// тип для хранения строки таблицы NDgrid

SRow=array [0..5] of String[30];

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

XDgrid: TStringGrid;

TabSheet2: TTabSheet;

WTKgrid: TStringGrid;

TabSheet3: TTabSheet;

BANKgrid: TStringGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

btnSearch: TButton;

txtSearch: TEdit;

TabSheet4: TTabSheet;

NDgrid: TStringGrid;

N4: TMenuItem;

CheckBox1: TCheckBox;

btnDel: TButton;

GroupBox1: TGroupBox;

btnSort1: TButton;

btnSort2: TButton;

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure btnSearchClick(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure btnDelClick(Sender: TObject);

procedure btnSort2Click(Sender: TObject);

procedure btnSort1Click(Sender: TObject);

private

{ Private declarations }

XDar: array [1..70] of String[30]; {массив для ХД}

WTKar: array [1..150] of String[30]; {массив для ВТК}

BANKar: array [1..50] of String[30]; {массив для БА}

public

{ Public declarations }

procedure LoadFromFiles;

procedure InitGrids;

procedure FillArrays;

procedure SaveInFiles;

procedure FillNDgrid;

procedure Sort;

procedure Sort2;

procedure SweepRows(r1,r2:word);

procedure SaveRow(var sr:SRow;r:word);

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

{Процедура загрузки файлоы в массивы}

procedure TForm1.LoadFromFiles;

var

F:TextFile;

i:integer;

begin

{Файл - 'XD.txt'}

// открываем файл для чтения

AssignFile(F,'XD.txt');

Reset(F);

if IOResult <> 0 then

// ошибка открытия файла!

begin

{$I+}

MessageBox(0,'Ошибка!','Не возможно открыть файл XD.txt!',MB_OK);

exit;

end;

{$I+}

// считываем файл построчно до конца и заполняем массив XDar

i:=1;

while not(SeekEof(F))do

begin

ReadLn(F,XDar[i]);

inc(i);

end;

CloseFile(F); // закрыть файл

{Файл - 'WTK.txt'}

{$I-}

// открываем файл для чтения

AssignFile(F,'WTK.txt');

Reset(F);

if IOResult <> 0 then

// ошибка открытия файла!

begin

{$I+}

MessageBox(0,'Ошибка!','Не возможно открыть файл WTK.txt!',MB_OK);

exit;

end;

{$I+}

// считываем файл построчно до конца и заполняем массив XDar

i:=1;

while not(SeekEof(F))do

begin

ReadLn(F,WTKar[i]);

inc(i);

end;

CloseFile(F); // закрыть файл

{Файл - 'BANK.txt'}

{$I-}

// открываем файл для чтения

AssignFile(F,'BANK.txt');

Reset(F);

if IOResult <> 0 then

// ошибка открытия файла!

begin

{$I+}

MessageBox(0,'Ошибка!','Не возможно открыть файл BANK.txt!',MB_OK);

exit;

end;

{$I+}

// считываем файл построчно до конца и заполняем массив XDar

i:=1;

while not(SeekEof(F))do

begin

ReadLn(F,BANKar[i]);

inc(i);

end;

CloseFile(F); // закрыть файл

end;

{Процедура инициализации таблицы и заполнение ее в соответсвии с массивами}

procedure TForm1.InitGrids;

var i,j:integer;

begin

XDgrid.Cells[0,0]:='Номер договора';

XDgrid.Cells[1,0]:='Дата заключения';

XDgrid.Cells[2,0]:='Дата завершения';

XDgrid.Cells[3,0]:='Тема договора';

XDgrid.Cells[4,0]:='Организация';

XDgrid.Cells[5,0]:='Признак завершения';

XDgrid.Cells[6,0]:='Cтоимость';

WTKgrid.Cells[0,0]:='Фамилия';

WTKgrid.Cells[1,0]:='Имя';

WTKgrid.Cells[2,0]:='Отчество';

WTKgrid.Cells[3,0]:='Год рождения ';

WTKgrid.Cells[4,0]:='Код ХД ';

WTKgrid.Cells[5,0]:='Признак';

WTKgrid.Cells[6,0]:='Сумма вознаграждения ';

WTKgrid.Cells[7,0]:='Домашний адрес ';

WTKgrid.Cells[8,0]:='Номер сбербанка';

WTKgrid.Cells[9,0]:='Расчетный счет ';

BANKgrid.Cells[0,0]:='Номер отделения';

BANKgrid.Cells[1,0]:='Город';

BANKgrid.Cells[2,0]:='Адрес ';

BANKgrid.Cells[3,0]:='Наименование отделения ';

BANKgrid.Cells[4,0]:='Банковский код ';

NDgrid.Cells[0,0]:='Номер договора';

NDgrid.Cells[1,0]:='Дата заключения';

NDgrid.Cells[2,0]:='Дата завершения';

NDgrid.Cells[3,0]:='Тема договора';

NDgrid.Cells[4,0]:='Организация';

NDgrid.Cells[5,0]:= 'Кол-во членов ВТК';

for i:=1 to 10 do

begin

for j:=1 to 7 do

XDgrid.Cells[j-1,i]:=XDar[(i-1)*7+j];

end;

for i:=1 to 15 do

begin

for j:=1 to 10 do

WTKgrid.Cells[j-1,i]:=WTKar[(i-1)*10+j];

end;

for i:=1 to 10 do

begin

for j:=1 to 5 do

BANKgrid.Cells[j-1,i]:=BANKar[(i-1)*5+j];

end;

end;

{Заполним массивы в соответсвии с данными в таблице}

procedure TForm1.FillArrays;

var i:integer;

begin

for i:=0 to 69 do

begin

XDar[i+1]:=XDgrid.Cells[(i mod 7),(i div 7)+1];

end;

for i:=0 to 149 do

begin

WTKar[i+1]:=WTKgrid.Cells[(i mod 10),(i div 10)+1];

end;

for i:=0 to 49 do

begin

BANKar[i+1]:=BANKgrid.Cells[(i mod 5),(i div 5)+1];

end;

end;

{Сохраним данные из массивов в файл}

procedure TForm1.SaveInFiles;

var

F:TextFile; // текстовый файл

i:integer;

begin

{XD.txt}

// открываем файл для записи

AssignFile(F,'XD.txt');

Rewrite(F);

// построчно записываем из массива в файл

for i:=1 to 70 do

WriteLn(F,XDar[i]);

CloseFile(F); // закрыть файл

{WTK.txt}

// открываем файл для записи

AssignFile(F,'WTK.txt');

Rewrite(F);

// построчно записываем из массива в файл

for i:=1 to 150 do

WriteLn(F,WTKar[i]);

CloseFile(F); // закрыть файл

{BANK.txt}

// открываем файл для записи

AssignFile(F,'BANK.txt');

Rewrite(F);

// построчно записываем из массива в файл

for i:=1 to 50 do

WriteLn(F,BANKar[i]);

CloseFile(F); // закрыть файл

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

LoadFromFiles; // загрузка данных из файла в массивы

InitGrids; // инициализация таблицы

FillNDgrid; // заполнить таблицу незавершенных договоров

end;

{Выход}

procedure TForm1.N2Click(Sender: TObject);

begin

Halt;

end;

{Сохранить}

procedure TForm1.N3Click(Sender: TObject);

begin

FillArrays; // сначала заполним массивы в соответсвии с таблицами

SaveInFiles; // теперь сохраним в файл

end;

{Поиск}

procedure TForm1.btnSearchClick(Sender: TObject);

var

myRect: TGridRect;

Grid: TStringGrid;

nCol,i,j:integer;

st:String;

begin

st:=txtSearch.Text; // строка для поиска

// определяем активную закладку

case PageControl1.ActivePageIndex of

0: begin Grid:= XDgrid; nCol:=7; end;

1: begin Grid:=WTKgrid; nCol:=10; end;

2: begin Grid:=BANKgrid; nCol:=5; end;

end;

myRect.Left := 11;

myRect.Top := 11;

myRect.Right := 11;

myRect.Bottom := 11;

Grid.Selection:= myRect;

if(st=' ') or (st='') then exit;

// поиск

for i:=1 to 10 do

for j:=0 to nCol-1 do

if Grid.Cells[j,i]=st then

begin

myRect.Left := j;

myRect.Top := i;

myRect.Right := j;

myRect.Bottom := i;

Grid.Selection := myRect;

exit;

end;

end;

{Заполнить таблицу незавершенных договоров в соответсвии с

XDgrid, WTKgrid, BANKgrid}

procedure TForm1.FillNDgrid;

var i,j,y,n:integer;

code:string;

st:string;

begin

j:=1;

for i:=1 to 10 do

if(XDGrid.Cells[5,i]='незавершен') then

begin

NDgrid.Cells[0,j]:=XDGrid.Cells[0,i];

NDgrid.Cells[1,j]:=XDGrid.Cells[1,i];

NDgrid.Cells[2,j]:=XDGrid.Cells[2,i];

NDgrid.Cells[3,j]:=XDGrid.Cells[3,i];

NDgrid.Cells[4,j]:=XDGrid.Cells[4,i];

// составим код договора

code:= NDgrid.Cells[0,j]+'/'+ NDgrid.Cells[1,j][9]+ NDgrid.Cells[1,j][10];

// найдем сколько человек состоит именно в этом ВТК

n:=0;

for y:=1 to 15 do

if(WTKgrid.Cells[4,y]=code) then inc(n);

str(n,st);

NDgrid.Cells[5,j]:=st;

inc(j);

end;

end;

{Обновить - обновить таблицу незавершенных договоров}

procedure TForm1.N4Click(Sender: TObject);

var i,j:integer;

begin

for i:=1 to 10 do

for j:=0 to 5 do

NDgrid.Cells[j,i]:='';

FillNDgrid;

end;

{Переключение флага редактирования}

procedure TForm1.CheckBox1Click(Sender: TObject);

var opt:TGridOptions;

begin

opt:=XDgrid.Options;

if CheckBox1.Checked=false then

begin

Include(opt,goRowSelect);

Exclude(opt,goEditing);

btnDel.Enabled := true;

end

else

begin

Exclude(opt,goRowSelect);

Include(opt,goEditing);

btnDel.Enabled := false;

end;

XDgrid.Options := opt;

WTKgrid.Options := opt;

BANKgrid.Options := opt;

end;

{Удалить}

procedure TForm1.btnDelClick(Sender: TObject);

var

myRect: TGridRect;

Grid: TStringGrid;

nCol,i,j:integer;

begin

// определяем активную закладку

case PageControl1.ActivePageIndex of

0: begin Grid:= XDgrid; nCol:=7; end;

1: begin Grid:=WTKgrid; nCol:=10; end;

2: begin Grid:=BANKgrid; nCol:=5; end;

end;

if(Grid.Row>0) and (Grid.Row<10) then

for i:=Grid.Row to 10 do

begin

for j:=0 to nCol-1 do

Grid.Cells[j,i]:=Grid.Cells[j,i+1];

end;

end;

{пирамидальная сортировка таблицы NDgrid по возростанию}

procedure TForm1.Sort;

var

l,r:word;

x,n,n1,n2,c,y:integer;

s:string;

sr:SRow;

procedure Sift;

label l3;

var i,j,y:word;

begin

i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);

while j<=r do

begin

if j<r then

begin

Val(NDgrid.Cells[5,j],n1,c);

Val(NDgrid.Cells[5,j+1],n2,c);

if n1<n2 then j:=j+1;

end;

Val(s,n1,c);

Val(NDgrid.Cells[5,j],n2,c);

if n1>=n2 then goto l3;

for y:=0 to 5 do

NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];

i:=j; j:=2*i;

end;

l3:

for y:=0 to 5 do

begin

NDgrid.Cells[y,i]:=sr[y];

end;

end; // Sift

begin

n:=0;

for y:=1 to 10 do

if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then

inc(n);

l:=(n div 2)+1;r:=n;

while l>1 do

begin

l:=l-1; Sift;

end;

while r>1 do

begin

SaveRow(sr,1);

s:=NDgrid.Cells[5,1];

SweepRows(1,r);

r:=r-1; Sift;

end;

end; // Sort

{пирамидальная сортировка таблицы NDgrid по убыванию}

procedure TForm1.Sort2;

var

l,r:word;

x,n,n1,n2,c,y:integer;

s:string;

sr:SRow;

procedure Sift;

label l3;

var i,j,y:word;

begin

i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);

while j<=r do

begin

if j<r then

begin

Val(NDgrid.Cells[5,j],n1,c);

Val(NDgrid.Cells[5,j+1],n2,c);

if n1>n2 then j:=j+1;

end;

Val(s,n1,c);

Val(NDgrid.Cells[5,j],n2,c);

if n1<=n2 then goto l3;

for y:=0 to 5 do

NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];

i:=j; j:=2*i;

end;

l3:

for y:=0 to 5 do

begin

NDgrid.Cells[y,i]:=sr[y];

end;

end; // Sift

begin

n:=0;

for y:=1 to 10 do

if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then

inc(n);

l:=(n div 2)+1;r:=n;

while l>1 do

begin

l:=l-1; Sift;

end;

while r>1 do

begin

SaveRow(sr,1);

s:=NDgrid.Cells[5,1];

SweepRows(1,r);

r:=r-1; Sift;

end;

end; // Sort2

{поменять местами строки r1 и r2 в таблице NDgrid}

procedure TForm1.SweepRows(r1,r2:word);

var s: array [0..5] of String[30];

i:integer;

begin

for i:=0 to 5 do

s[i]:=NDgrid.Cells[i,r1];

for i:=0 to 5 do

NDgrid.Cells[i,r1]:=NDgrid.Cells[i,r2];

for i:=0 to 5 do

NDgrid.Cells[i,r2]:=s[i];

end;

{сохранить строку номер r таблицы NDgrid в sr}

procedure TForm1.SaveRow(var sr:SRow;r:word);

var i:integer;

begin

for i:=0 to 5 do

sr[i]:=NDgrid.Cells[i,r];

end;

procedure TForm1.btnSort2Click(Sender: TObject);

begin

Sort;

end;

procedure TForm1.btnSort1Click(Sender: TObject);

begin

Sort2;

end;

end.

unit Unit1;  interface  uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   ComCtrls, Grids, Menus, StdCtrls, ExtCtrls;  type   // ��� �� ������� ������ ������� NDgrid   SRow=array [0..5] of String[30];    TForm1 = class(TForm)     PageControl1: TPageControl;     TabSheet1: TTabSheet;     XDgrid: TStringGrid;     TabSheet2: TTabSheet;     WTKgrid: TStringGrid;     TabSheet3: TTabSheet;     BANKgrid: TStringGrid;     MainMenu1: TMainMenu;     N1: TMenuItem;     N2: TMenuItem;     N3: TMenuItem;     btnSearch: TButton;     txtSearch: TEdit;     TabSheet4: TTabSheet;     NDgrid: TStringGrid;     N4: TMenuItem;     CheckBox1: TCheckBox;     btnDel: TButton;     GroupBox1: TGroupBox;     btnSort1: TButton;     btnSort2: TButton;     procedure FormCreate(Sender: TObject);     procedure N2Click(Sender: TObject);     procedure N3Click(Sender: TObject);     procedure btnSearchClick(Sender: TObject);     procedure N4Click(Sender: TObject);     procedure CheckBox1Click(Sender: TObject);     procedure btnDelClick(Sender: TObject);     procedure btnSort2Click(Sender: TObject);     procedure btnSort1Click(Sender: TObject);   private     { Private declarations }     XDar: array [1..70] of String[30];   {������ �� ��}     WTKar: array [1..150] of String[30]; {������ �� ���}     BANKar: array [1..50] of String[30]; {������ �� ��}   public     { Public declarations }     procedure LoadFromFiles;     procedure InitGrids;     procedure FillArrays;     procedure SaveInFiles;     procedure FillNDgrid;     procedure Sort;     procedure Sort2;     procedure SweepRows(r1,r2:word);     procedure SaveRow(var sr:SRow;r:word);    end;  var   Form1: TForm1;   implementation  {$R *.DFM}  {��������� �������� ������ � �������} procedure TForm1.LoadFromFiles; var   F:TextFile;   i:integer; begin   {���� - 'XD.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'XD.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� XD.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,XDar[i]);   inc(i);   end;   CloseFile(F); // ������� ����    {���� - 'WTK.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'WTK.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� WTK.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,WTKar[i]);   inc(i);   end;   CloseFile(F); // ������� ����    {���� - 'BANK.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'BANK.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� BANK.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,BANKar[i]);   inc(i);   end;   CloseFile(F); // ������� ���� end;  {��������� ������������� ������� � ���������� �� � ����������� � ���������} procedure TForm1.InitGrids; var i,j:integer; begin   XDgrid.Cells[0,0]:='����� ��������';   XDgrid.Cells[1,0]:='���� ��������';   XDgrid.Cells[2,0]:='���� ���������';   XDgrid.Cells[3,0]:='���� ��������';   XDgrid.Cells[4,0]:='����������';   XDgrid.Cells[5,0]:='������� ���������';   XDgrid.Cells[6,0]:='C��������';    WTKgrid.Cells[0,0]:='������';   WTKgrid.Cells[1,0]:='��';   WTKgrid.Cells[2,0]:='��������';   WTKgrid.Cells[3,0]:='��� ������� ';   WTKgrid.Cells[4,0]:='��� �� ';   WTKgrid.Cells[5,0]:='�������';   WTKgrid.Cells[6,0]:='����� ������������� ';   WTKgrid.Cells[7,0]:='�������� ����� ';   WTKgrid.Cells[8,0]:='����� ���������';   WTKgrid.Cells[9,0]:='��������� ���� ';    BANKgrid.Cells[0,0]:='����� ��������';   BANKgrid.Cells[1,0]:='�����';   BANKgrid.Cells[2,0]:='����� ';   BANKgrid.Cells[3,0]:='������������ �������� ';   BANKgrid.Cells[4,0]:='���������� ��� ';    NDgrid.Cells[0,0]:='����� ��������';   NDgrid.Cells[1,0]:='���� ��������';   NDgrid.Cells[2,0]:='���� ���������';   NDgrid.Cells[3,0]:='���� ��������';   NDgrid.Cells[4,0]:='����������';   NDgrid.Cells[5,0]:= '���-�� ������ ���';    for i:=1 to 10 do   begin     for j:=1 to 7 do       XDgrid.Cells[j-1,i]:=XDar[(i-1)*7+j];   end;    for i:=1 to 15 do   begin     for j:=1 to 10 do       WTKgrid.Cells[j-1,i]:=WTKar[(i-1)*10+j];   end;    for i:=1 to 10 do   begin     for j:=1 to 5 do       BANKgrid.Cells[j-1,i]:=BANKar[(i-1)*5+j];   end; end;  {�������� ������� � ����������� � ������� � �������} procedure TForm1.FillArrays; var i:integer;  begin   for i:=0 to 69 do   begin     XDar[i+1]:=XDgrid.Cells[(i mod 7),(i div 7)+1];   end;    for i:=0 to 149 do   begin     WTKar[i+1]:=WTKgrid.Cells[(i mod 10),(i div 10)+1];   end;    for i:=0 to 49 do   begin     BANKar[i+1]:=BANKgrid.Cells[(i mod 5),(i div 5)+1];   end; end;  {�������� ������ �� �������� � ����} procedure TForm1.SaveInFiles; var   F:TextFile;  // ��������� ����   i:integer; begin   {XD.txt}   // ��������� ���� �� ������   AssignFile(F,'XD.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 70 do     WriteLn(F,XDar[i]);   CloseFile(F); // ������� ����    {WTK.txt}   // ��������� ���� �� ������   AssignFile(F,'WTK.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 150 do     WriteLn(F,WTKar[i]);   CloseFile(F); // ������� ����    {BANK.txt}   // ��������� ���� �� ������   AssignFile(F,'BANK.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 50 do     WriteLn(F,BANKar[i]);   CloseFile(F); // ������� ���� end;  procedure TForm1.FormCreate(Sender: TObject); begin   LoadFromFiles; // �������� ������ �� ����� � �������   InitGrids;     // ������������ �������   FillNDgrid;    // ��������� ������� ������������� ��������� end;  {�����} procedure TForm1.N2Click(Sender: TObject); begin   Halt; end;  {���������} procedure TForm1.N3Click(Sender: TObject); begin   FillArrays;   // ������� �������� ������� � ����������� � ���������   SaveInFiles;  // ������ �������� � ���� end;   {�����} procedure TForm1.btnSearchClick(Sender: TObject); var   myRect: TGridRect;   Grid: TStringGrid;   nCol,i,j:integer;   st:String; begin   st:=txtSearch.Text;  // ������ �� ������   // ��������� ������� ��������   case PageControl1.ActivePageIndex of   0: begin Grid:= XDgrid; nCol:=7; end;   1: begin Grid:=WTKgrid; nCol:=10; end;   2: begin Grid:=BANKgrid; nCol:=5; end;   end;   myRect.Left := 11;   myRect.Top := 11;   myRect.Right := 11;   myRect.Bottom := 11;   Grid.Selection:= myRect;   if(st=' ') or (st='') then exit;    // �����   for i:=1 to 10 do     for j:=0 to nCol-1 do       if Grid.Cells[j,i]=st then       begin         myRect.Left := j;         myRect.Top := i;         myRect.Right := j;         myRect.Bottom := i;         Grid.Selection := myRect;         exit;       end; end;  {��������� ������� ������������� ��������� � ����������� � XDgrid, WTKgrid, BANKgrid} procedure TForm1.FillNDgrid; var i,j,y,n:integer;     code:string;     st:string; begin   j:=1;   for i:=1 to 10 do     if(XDGrid.Cells[5,i]='����������') then     begin       NDgrid.Cells[0,j]:=XDGrid.Cells[0,i];       NDgrid.Cells[1,j]:=XDGrid.Cells[1,i];       NDgrid.Cells[2,j]:=XDGrid.Cells[2,i];       NDgrid.Cells[3,j]:=XDGrid.Cells[3,i];       NDgrid.Cells[4,j]:=XDGrid.Cells[4,i];       // �������� ��� ��������       code:= NDgrid.Cells[0,j]+'/'+ NDgrid.Cells[1,j][9]+ NDgrid.Cells[1,j][10];       // ������ ������� ������� ������� ������ � ���� ���       n:=0;       for y:=1 to 15 do         if(WTKgrid.Cells[4,y]=code) then inc(n);       str(n,st);       NDgrid.Cells[5,j]:=st;       inc(j);     end; end;  {�������� - �������� ������� ������������� ���������} procedure TForm1.N4Click(Sender: TObject); var i,j:integer; begin   for i:=1 to 10 do     for j:=0 to 5 do       NDgrid.Cells[j,i]:='';   FillNDgrid; end;  {����������� ����� �������������} procedure TForm1.CheckBox1Click(Sender: TObject); var opt:TGridOptions; begin   opt:=XDgrid.Options;   if  CheckBox1.Checked=false then   begin     Include(opt,goRowSelect);     Exclude(opt,goEditing);     btnDel.Enabled := true;   end   else   begin     Exclude(opt,goRowSelect);     Include(opt,goEditing);     btnDel.Enabled := false;   end;   XDgrid.Options := opt;   WTKgrid.Options := opt;   BANKgrid.Options := opt; end;  {�������} procedure TForm1.btnDelClick(Sender: TObject); var   myRect: TGridRect;   Grid: TStringGrid;   nCol,i,j:integer; begin   // ��������� ������� ��������   case PageControl1.ActivePageIndex of   0: begin Grid:= XDgrid; nCol:=7; end;   1: begin Grid:=WTKgrid; nCol:=10; end;   2: begin Grid:=BANKgrid; nCol:=5; end;   end;   if(Grid.Row>0) and (Grid.Row<10) then   for i:=Grid.Row to 10 do   begin     for j:=0 to nCol-1 do      Grid.Cells[j,i]:=Grid.Cells[j,i+1];   end; end;  {������������ ���������� ������� NDgrid �� ����������} procedure TForm1.Sort; var   l,r:word;   x,n,n1,n2,c,y:integer;   s:string;   sr:SRow;   procedure Sift;   label l3;   var i,j,y:word;   begin     i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);     while j<=r do     begin       if j<r then       begin         Val(NDgrid.Cells[5,j],n1,c);         Val(NDgrid.Cells[5,j+1],n2,c);         if n1<n2 then j:=j+1;       end;       Val(s,n1,c);       Val(NDgrid.Cells[5,j],n2,c);       if n1>=n2 then goto l3;       for y:=0 to 5 do       NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];       i:=j; j:=2*i;     end;     l3:     for y:=0 to 5 do     begin       NDgrid.Cells[y,i]:=sr[y];     end;   end;  // Sift    begin     n:=0;     for y:=1 to 10 do       if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then         inc(n);     l:=(n div 2)+1;r:=n;     while l>1 do     begin       l:=l-1; Sift;     end;     while r>1 do     begin       SaveRow(sr,1);       s:=NDgrid.Cells[5,1];       SweepRows(1,r);       r:=r-1; Sift;     end;   end; // Sort   {������������ ���������� ������� NDgrid �� �������} procedure TForm1.Sort2; var   l,r:word;   x,n,n1,n2,c,y:integer;   s:string;   sr:SRow;   procedure Sift;   label l3;   var i,j,y:word;   begin     i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);     while j<=r do     begin       if j<r then       begin         Val(NDgrid.Cells[5,j],n1,c);         Val(NDgrid.Cells[5,j+1],n2,c);         if n1>n2 then j:=j+1;       end;       Val(s,n1,c);       Val(NDgrid.Cells[5,j],n2,c);       if n1<=n2 then goto l3;       for y:=0 to 5 do       NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];       i:=j; j:=2*i;     end;     l3:     for y:=0 to 5 do     begin       NDgrid.Cells[y,i]:=sr[y];     end;   end;  // Sift    begin     n:=0;     for y:=1 to 10 do       if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then         inc(n);     l:=(n div 2)+1;r:=n;     while l>1 do     begin       l:=l-1; Sift;     end;     while r>1 do     begin       SaveRow(sr,1);       s:=NDgrid.Cells[5,1];       SweepRows(1,r);       r:=r-1; Sift;     end;   end; // Sort2  {������� ������� ������ r1 � r2 � ������� NDgrid} procedure TForm1.SweepRows(r1,r2:word); var s: array [0..5] of String[30];     i:integer; begin   for i:=0 to 5 do     s[i]:=NDgrid.Cells[i,r1];    for i:=0 to 5 do     NDgrid.Cells[i,r1]:=NDgrid.Cells[i,r2];    for i:=0 to 5 do     NDgrid.Cells[i,r2]:=s[i]; end;  {��������� ������ ����� r ������� NDgrid � sr} procedure TForm1.SaveRow(var sr:SRow;r:word); var i:integer; begin   for i:=0 to 5 do     sr[i]:=NDgrid.Cells[i,r]; end;  procedure TForm1.btnSort2Click(Sender: TObject); begin   Sort; end;  procedure TForm1.btnSort1Click(Sender: TObject); begin   Sort2; end;  end. 
-$A8 -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J+ -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T- -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ -M -$M16384,1048576 -K$00400000 -LE"c:\program files\borland\delphi7\Projects\Bpl" -LN"c:\program files\borland\delphi7\Projects\Bpl" 
[FileVersion] Version=7.0 [Compiler] A=8 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=1 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=0 U=0 V=1 W=0 X=1 Y=1 Z=1 ShowHints=1 ShowWarnings=1 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; NamespacePrefix= SymbolDeprecated=1 SymbolLibrary=1 SymbolPlatform=1 UnitLibrary=1 UnitPlatform=1 UnitDeprecated=1 HResultCompat=1 HidingMember=1 HiddenVirtual=1 Garbage=1 BoundsError=1 ZeroNilCompat=1 StringConstTruncated=1 ForLoopVarVarPar=1 TypedConstVarPar=1 AsgToTypedConst=1 CaseLabelRange=1 ForVariable=1 ConstructingAbstract=1 ComparisonFalse=1 ComparisonTrue=1 ComparingSignedUnsigned=1 CombiningSignedUnsigned=1 UnsupportedConstruct=1 FileOpen=1 FileOpenUnitSrc=1 BadGlobalSymbol=1 DuplicateConstructorDestructor=1 InvalidDirective=1 PackageNoLink=1 PackageThreadVar=1 ImplicitImport=1 HPPEMITIgnored=1 NoRetVal=1 UseBeforeDef=1 ForLoopVarUndef=1 UnitNameMismatch=1 NoCFGFileFound=1 MessageDirective=1 ImplicitVariants=1 UnicodeToLocale=1 LocaleToUnicode=1 ImagebaseMultiple=1 SuspiciousTypecast=1 PrivatePropAccessor=1 UnsafeType=1 UnsafeCode=1 UnsafeCast=1 [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 RemoteSymbols=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= SearchPath= Packages= Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams= HostApplication= Launcher= UseLauncher=0 DebugCWD= [Language] ActiveLang= ProjectLang=$00000419 RootDir= [Version Info] IncludeVerInfo=0 AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 Locale=1049 CodePage=1251 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= 
program Prog;  uses   Forms,   Unit1 in 'Unit1.pas' {Form1};  {$R *.RES}  begin   Application.Initialize;   Application.CreateForm(TForm1, Form1);   Application.Run; end. 
#### ###��##��##################�### ###��##��##################(### ###@#####################################�##�###��#�###�#�#��##���#���###�##�###��#�###�#�#��##���########################################################S�p#############S�p#############S�p######{0##w##S�pp######�##0F#S�v#p#####{0#�f#S�vf#######�#��#S�vf`p#####{v��#S�vff######w���#S�vff`######���#S�vfff######k��#S�vfff#####ff��#S�vfff####pffkf#S�vfff`###pffff#S�vk�f`####ffff#S�vk�f`####ffff#S�{k�f`###pffff#S�{���`###pffff#S�{���`####ffff#S�x���#####fff##S�w���7#####f`##3�##�f�#####ff`##s1#�`;0###pfff`###ff#s�#####fff`#ff`##;p###pfffffff####�#####fffff`###########Fff################w######################��#���#���#���#���#�?�#�###��##��##��##�##?�##?�###�###�###�###�###�###�###�###�###�###�###�###�###�###�##a�##�##��#���#�����####0###��##M#A#I#N#I#C#O#N###########################  ######�#####
##DELPHI.DIAGRAM.PORTFOLIO###�@##	#	Untitled1######
object Form1: TForm1   Left = 57   Top = 127   BorderStyle = bsSingle   Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1086#1085#1085#1072#1103' '#1089#1080#1089#1090#1077#1084#1072' '#1088#1072#1089#1095#1105#1090#1072' '#1087#1086' '#1076#1086#1075#1086#1074#1086#1088#1072#1084   ClientHeight = 514   ClientWidth = 905   Color = clBtnFace   Font.Charset = DEFAULT_CHARSET   Font.Color = clWindowText   Font.Height = -11   Font.Name = 'MS Sans Serif'   Font.Style = []   Menu = MainMenu1   OldCreateOrder = False   OnCreate = FormCreate   PixelsPerInch = 96   TextHeight = 13   object PageControl1: TPageControl     Left = 8     Top = 0     Width = 897     Height = 473     ActivePage = TabSheet2     TabOrder = 0     object TabSheet1: TTabSheet       Caption = #1061#1044       object XDgrid: TStringGrid         Left = 8         Top = 16         Width = 873         Height = 297         ColCount = 7         DefaultColWidth = 110         FixedCols = 0         RowCount = 11         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing]         TabOrder = 0         ColWidths = (           91           93           94           237           140           116           90)       end     end     object TabSheet2: TTabSheet       Caption = #1042#1058#1050       ImageIndex = 1       object WTKgrid: TStringGrid         Left = 8         Top = 16         Width = 873         Height = 425         ColCount = 10         DefaultColWidth = 125         FixedCols = 0         RowCount = 16         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]         TabOrder = 0         ColWidths = (           86           88           97           88           56           102           134           157           98           91)       end     end     object TabSheet3: TTabSheet       Caption = #1041#1040#1053#1050       ImageIndex = 2       object BANKgrid: TStringGrid         Left = 8         Top = 16         Width = 793         Height = 297         DefaultColWidth = 135         FixedCols = 0         RowCount = 10         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]         TabOrder = 0         ColWidths = (           118           104           304           142           116)       end     end     object TabSheet4: TTabSheet       Caption = #1053#1077#1079#1072#1074#1077#1088#1096#1077#1085#1085#1099#1077' '#1076#1086#1075#1086#1074#1086#1088#1072       ImageIndex = 3       object NDgrid: TStringGrid         Left = 8         Top = 16         Width = 721         Height = 297         ColCount = 6         DefaultColWidth = 110         FixedCols = 0         RowCount = 11         Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect]         TabOrder = 0         ColWidths = (           94           94           93           189           124           117)       end       object GroupBox1: TGroupBox         Left = 760         Top = 16         Width = 113         Height = 89         Caption = #1057#1086#1088#1090#1080#1088#1086#1074#1082#1072         TabOrder = 1         object btnSort1: TButton           Left = 8           Top = 24           Width = 97           Height = 25           Caption = #1055#1086' '#1091#1073#1099#1074#1072#1085#1080#1102           TabOrder = 0           OnClick = btnSort1Click         end         object btnSort2: TButton           Left = 8           Top = 56           Width = 97           Height = 25           Caption = #1055#1086' '#1074#1086#1079#1088#1072#1089#1090#1072#1085#1080#1102           TabOrder = 1           OnClick = btnSort2Click         end       end     end   end   object btnSearch: TButton     Left = 560     Top = 480     Width = 81     Height = 25     Caption = #1055#1086#1080#1089#1082     TabOrder = 1     OnClick = btnSearchClick   end   object txtSearch: TEdit     Left = 656     Top = 480     Width = 169     Height = 21     TabOrder = 2   end   object CheckBox1: TCheckBox     Left = 8     Top = 480     Width = 113     Height = 17     Caption = #1056#1077#1076#1072#1082#1090#1080#1088#1086#1074#1072#1085#1080#1077     Checked = True     State = cbChecked     TabOrder = 3     OnClick = CheckBox1Click   end   object btnDel: TButton     Left = 128     Top = 480     Width = 65     Height = 25     Caption = #1059#1076#1072#1083#1080#1090#1100     Enabled = False     TabOrder = 4     OnClick = btnDelClick   end   object MainMenu1: TMainMenu     object N1: TMenuItem       Caption = #1060#1072#1081#1083       RadioItem = True       object N3: TMenuItem         Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100         OnClick = N3Click       end       object N4: TMenuItem         Caption = #1054#1073#1085#1086#1074#1080#1090#1100         OnClick = N4Click       end       object N2: TMenuItem         Caption = #1042#1099#1093#1086#1076         OnClick = N2Click       end     end   end end 
unit Unit1;  interface  uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   ComCtrls, Grids, Menus, StdCtrls, ExtCtrls;  type   // ��� �� ������� ������ ������� NDgrid   SRow=array [0..5] of shortstring;    TForm1 = class(TForm)     PageControl1: TPageControl;     TabSheet1: TTabSheet;     XDgrid: TStringGrid;     TabSheet2: TTabSheet;     WTKgrid: TStringGrid;     TabSheet3: TTabSheet;     BANKgrid: TStringGrid;     MainMenu1: TMainMenu;     N1: TMenuItem;     N2: TMenuItem;     N3: TMenuItem;     btnSearch: TButton;     txtSearch: TEdit;     TabSheet4: TTabSheet;     NDgrid: TStringGrid;     N4: TMenuItem;     CheckBox1: TCheckBox;     btnDel: TButton;     GroupBox1: TGroupBox;     btnSort1: TButton;     btnSort2: TButton;     procedure FormCreate(Sender: TObject);     procedure N2Click(Sender: TObject);     procedure N3Click(Sender: TObject);     procedure btnSearchClick(Sender: TObject);     procedure N4Click(Sender: TObject);     procedure CheckBox1Click(Sender: TObject);     procedure btnDelClick(Sender: TObject);     procedure btnSort2Click(Sender: TObject);     procedure btnSort1Click(Sender: TObject);   private     { Private declarations }     XDar: array [1..70] of String[30];   {������ �� ��}     WTKar: array [1..150] of String[30]; {������ �� ���}     BANKar: array [1..50] of String[30]; {������ �� ��}   public     { Public declarations }     procedure LoadFromFiles;     procedure InitGrids;     procedure FillArrays;     procedure SaveInFiles;     procedure FillNDgrid;     procedure Sort;     procedure Sort2;     procedure SweepRows(r1,r2:word);     procedure SaveRow(var sr:SRow;r:word);    end;  var   Form1: TForm1;   implementation  {$R *.DFM}  {��������� �������� ������ � �������} procedure TForm1.LoadFromFiles; var   F:TextFile;   i:integer; begin   {���� - 'XD.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'XD.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� XD.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,XDar[i]);   inc(i);   end;   CloseFile(F); // ������� ����    {���� - 'WTK.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'WTK.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� WTK.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,WTKar[i]);   inc(i);   end;   CloseFile(F); // ������� ����    {���� - 'BANK.txt'}   {$I-}   // ��������� ���� �� �����   AssignFile(F,'BANK.txt');   Reset(F);   if IOResult <> 0 then   // ������ ������� �����!   begin     {$I+}     MessageBox(0,'������!','�� �������� ������� ���� BANK.txt!',MB_OK);     exit;   end;   {$I+}   // ��������� ���� ��������� �� ����� � �������� ������ XDar   i:=1;   while not(SeekEof(F))do   begin   ReadLn(F,BANKar[i]);   inc(i);   end;   CloseFile(F); // ������� ���� end;  {��������� ������������� ������� � ���������� �� � ����������� � ���������} procedure TForm1.InitGrids; var i,j:integer; begin   XDgrid.Cells[0,0]:='����� ��������';   XDgrid.Cells[1,0]:='���� ��������';   XDgrid.Cells[2,0]:='���� ���������';   XDgrid.Cells[3,0]:='���� ��������';   XDgrid.Cells[4,0]:='����������';   XDgrid.Cells[5,0]:='������� ���������';   XDgrid.Cells[6,0]:='C��������';    WTKgrid.Cells[0,0]:='������';   WTKgrid.Cells[1,0]:='��';   WTKgrid.Cells[2,0]:='��������';   WTKgrid.Cells[3,0]:='��� ������� ';   WTKgrid.Cells[4,0]:='��� �� ';   WTKgrid.Cells[5,0]:='�������';   WTKgrid.Cells[6,0]:='����� ������������� ';   WTKgrid.Cells[7,0]:='�������� ����� ';   WTKgrid.Cells[8,0]:='����� ���������';   WTKgrid.Cells[9,0]:='��������� ���� ';    BANKgrid.Cells[0,0]:='����� ��������';   BANKgrid.Cells[1,0]:='�����';   BANKgrid.Cells[2,0]:='����� ';   BANKgrid.Cells[3,0]:='������������ �������� ';   BANKgrid.Cells[4,0]:='���������� ��� ';    NDgrid.Cells[0,0]:='����� ��������';   NDgrid.Cells[1,0]:='���� ��������';   NDgrid.Cells[2,0]:='���� ���������';   NDgrid.Cells[3,0]:='���� ��������';   NDgrid.Cells[4,0]:='����������';   NDgrid.Cells[5,0]:= '���-�� ������ ���';    for i:=1 to 10 do   begin     for j:=1 to 7 do       XDgrid.Cells[j-1,i]:=XDar[(i-1)*7+j];   end;    for i:=1 to 15 do   begin     for j:=1 to 10 do       WTKgrid.Cells[j-1,i]:=WTKar[(i-1)*10+j];   end;    for i:=1 to 10 do   begin     for j:=1 to 5 do       BANKgrid.Cells[j-1,i]:=BANKar[(i-1)*5+j];   end; end;  {�������� ������� � ����������� � ������� � �������} procedure TForm1.FillArrays; var i:integer;  begin   for i:=0 to 69 do   begin     XDar[i+1]:=XDgrid.Cells[(i mod 7),(i div 7)+1];   end;    for i:=0 to 149 do   begin     WTKar[i+1]:=WTKgrid.Cells[(i mod 10),(i div 10)+1];   end;    for i:=0 to 49 do   begin     BANKar[i+1]:=BANKgrid.Cells[(i mod 5),(i div 5)+1];   end; end;  {�������� ������ �� �������� � ����} procedure TForm1.SaveInFiles; var   F:TextFile;  // ��������� ����   i:integer; begin   {XD.txt}   // ��������� ���� �� ������   AssignFile(F,'XD.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 70 do     WriteLn(F,XDar[i]);   CloseFile(F); // ������� ����    {WTK.txt}   // ��������� ���� �� ������   AssignFile(F,'WTK.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 150 do     WriteLn(F,WTKar[i]);   CloseFile(F); // ������� ����    {BANK.txt}   // ��������� ���� �� ������   AssignFile(F,'BANK.txt');   Rewrite(F);   // ��������� ���������� �� ������� � ����   for i:=1 to 50 do     WriteLn(F,BANKar[i]);   CloseFile(F); // ������� ���� end;  procedure TForm1.FormCreate(Sender: TObject); begin   LoadFromFiles; // �������� ������ �� ����� � �������   InitGrids;     // ������������ �������   FillNDgrid;    // ��������� ������� ������������� ��������� end;  {�����} procedure TForm1.N2Click(Sender: TObject); begin   Halt; end;  {���������} procedure TForm1.N3Click(Sender: TObject); begin   FillArrays;   // ������� �������� ������� � ����������� � ���������   SaveInFiles;  // ������ �������� � ���� end;   {�����} procedure TForm1.btnSearchClick(Sender: TObject); var   myRect: TGridRect;   Grid: TStringGrid;   nCol,i,j:integer;   st:String; begin   st:=txtSearch.Text;  // ������ �� ������   // ��������� ������� ��������   case PageControl1.ActivePageIndex of   0: begin Grid:= XDgrid; nCol:=7; end;   1: begin Grid:=WTKgrid; nCol:=10; end;   2: begin Grid:=BANKgrid; nCol:=5; end;   end;   myRect.Left := 11;   myRect.Top := 11;   myRect.Right := 11;   myRect.Bottom := 11;   Grid.Selection:= myRect;   if(st=' ') or (st='') then exit;    // �����   for i:=1 to 10 do     for j:=0 to nCol-1 do       if Grid.Cells[j,i]=st then       begin         myRect.Left := j;         myRect.Top := i;         myRect.Right := j;         myRect.Bottom := i;         Grid.Selection := myRect;         exit;       end; end;  {��������� ������� ������������� ��������� � ����������� � XDgrid, WTKgrid, BANKgrid} procedure TForm1.FillNDgrid; var i,j,y,n:integer;     code:string;     st:string; begin   j:=1;   for i:=1 to 10 do     if(XDGrid.Cells[5,i]='����������') then     begin       NDgrid.Cells[0,j]:=XDGrid.Cells[0,i];       NDgrid.Cells[1,j]:=XDGrid.Cells[1,i];       NDgrid.Cells[2,j]:=XDGrid.Cells[2,i];       NDgrid.Cells[3,j]:=XDGrid.Cells[3,i];       NDgrid.Cells[4,j]:=XDGrid.Cells[4,i];       // �������� ��� ��������       code:= NDgrid.Cells[0,j]+'/'+ NDgrid.Cells[1,j][9]+ NDgrid.Cells[1,j][10];       // ������ ������� ������� ������� ������ � ���� ���       n:=0;       for y:=1 to 15 do         if(WTKgrid.Cells[4,y]=code) then inc(n);       str(n,st);       NDgrid.Cells[5,j]:=st;       inc(j);     end; end;  {�������� - �������� ������� ������������� ���������} procedure TForm1.N4Click(Sender: TObject); var i,j:integer; begin   for i:=1 to 10 do     for j:=0 to 5 do       NDgrid.Cells[j,i]:='';   FillNDgrid; end;  {����������� ����� �������������} procedure TForm1.CheckBox1Click(Sender: TObject); var opt:TGridOptions; begin   opt:=XDgrid.Options;   if  CheckBox1.Checked=false then   begin     Include(opt,goRowSelect);     Exclude(opt,goEditing);     btnDel.Enabled := true;   end   else   begin     Exclude(opt,goRowSelect);     Include(opt,goEditing);     btnDel.Enabled := false;   end;   XDgrid.Options := opt;   WTKgrid.Options := opt;   BANKgrid.Options := opt; end;  {�������} procedure TForm1.btnDelClick(Sender: TObject); var   myRect: TGridRect;   Grid: TStringGrid;   nCol,i,j:integer; begin   // ��������� ������� ��������   case PageControl1.ActivePageIndex of   0: begin Grid:= XDgrid; nCol:=7; end;   1: begin Grid:=WTKgrid; nCol:=10; end;   2: begin Grid:=BANKgrid; nCol:=5; end;   end;   if(Grid.Row>0) and (Grid.Row<10) then   for i:=Grid.Row to 10 do   begin     for j:=0 to nCol-1 do      Grid.Cells[j,i]:=Grid.Cells[j,i+1];   end; end;  {������������ ���������� ������� NDgrid �� ����������} procedure TForm1.Sort; var   l,r:word;   x,n,n1,n2,c,y:integer;   s:string;   sr:SRow;   procedure Sift;   label l3;   var i,j,y:word;   begin     i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);     while j<=r do     begin       if j<r then       begin         Val(NDgrid.Cells[5,j],n1,c);         Val(NDgrid.Cells[5,j+1],n2,c);         if n1<n2 then j:=j+1;       end;       Val(s,n1,c);       Val(NDgrid.Cells[5,j],n2,c);       if n1>=n2 then goto l3;       for y:=0 to 5 do       NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];       i:=j; j:=2*i;     end;     l3:     for y:=0 to 5 do     begin       NDgrid.Cells[y,i]:=sr[y];     end;   end;  // Sift    begin     n:=0;     for y:=1 to 10 do       if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then         inc(n);     l:=(n div 2)+1;r:=n;     while l>1 do     begin       l:=l-1; Sift;     end;     while r>1 do     begin       SaveRow(sr,1);       s:=NDgrid.Cells[5,1];       SweepRows(1,r);       r:=r-1; Sift;     end;   end; // Sort   {������������ ���������� ������� NDgrid �� �������} procedure TForm1.Sort2; var   l,r:word;   x,n,n1,n2,c,y:integer;   s:string;   sr:SRow;   procedure Sift;   label l3;   var i,j,y:word;   begin     i:=l;j:=2*i;s:=NDgrid.Cells[5,i];SaveRow(sr,i);     while j<=r do     begin       if j<r then       begin         Val(NDgrid.Cells[5,j],n1,c);         Val(NDgrid.Cells[5,j+1],n2,c);         if n1>n2 then j:=j+1;       end;       Val(s,n1,c);       Val(NDgrid.Cells[5,j],n2,c);       if n1<=n2 then goto l3;       for y:=0 to 5 do       NDgrid.Cells[y,i]:=NDgrid.Cells[y,j];       i:=j; j:=2*i;     end;     l3:     for y:=0 to 5 do     begin       NDgrid.Cells[y,i]:=sr[y];     end;   end;  // Sift    begin     n:=0;     for y:=1 to 10 do       if (NDgrid.Cells[5,y]<>'') and (NDgrid.Cells[5,y]<>' ') then         inc(n);     l:=(n div 2)+1;r:=n;     while l>1 do     begin       l:=l-1; Sift;     end;     while r>1 do     begin       SaveRow(sr,1);       s:=NDgrid.Cells[5,1];       SweepRows(1,r);       r:=r-1; Sift;     end;   end; // Sort2  {������� ������� ������ r1 � r2 � ������� NDgrid} procedure TForm1.SweepRows(r1,r2:word); var s: array [0..5] of string;     i:integer; begin   for i:=0 to 5 do     s[i]:=NDgrid.Cells[i,r1];    for i:=0 to 5 do     NDgrid.Cells[i,r1]:=NDgrid.Cells[i,r2];    for i:=0 to 5 do     NDgrid.Cells[i,r2]:=s[i]; end;  {��������� ������ ����� r ������� NDgrid � sr} procedure TForm1.SaveRow(var sr:SRow;r:word); var i:integer; begin   for i:=0 to 5 do     sr[i]:=NDgrid.Cells[i,r]; end;  procedure TForm1.btnSort2Click(Sender: TObject); begin   Sort; end;  procedure TForm1.btnSort1Click(Sender: TObject); begin   Sort2; end;  end. 
�###�C##e#p3��0�##�#<p	Unit1.pas�]o3#r	Unit1.DFMa#p3#d#ExtCtrls�C��####cd#StdCtrls�C��####f#TButton7��ef#TEdit5$P�f	TCheckBox�g6�f	TGroupBox�!��g#.TButton#x;Hg#.TEdit#���g .TCheckBoxu��g .TGroupBox��@�cd#Menus�C��####f	TMainMenu#���f	TMenuItem�	�#g .TMainMenu Oa�g .TMenuItem����cd#Grids�C��####f#TStringGrid�D##g .TStringGrid�҉�g#TStringGrid.SetCells�##+g#TStringGrid.GetCells�##+f	TGridRectDoj�g#TCustomGrid.SetSelection5#B5f TGridOptions��&f#TGridOption�P�}g#goRowSelect\�'&g	goEditingZ�'&g#TCustomGrid.SetOptions0#B5cd#ComCtrls�C��####f TPageControl§�1f	TTabSheet$�5�g .TPageControl�5h#g .TTabSheet#a��g#TPageControl.GetActivePageIndex�j�Ucd#Dialogs�C��####cd#Forms�C��####f#TForm#�Ig#.TForm�u$,g#TCustomForm.AlignControlsmga�g#TCustomForm.CreateParamspga�g#TCustomForm.CreateWindowHandleqga�g#TCustomForm.CreateWndrga�g#TCustomForm.DefinePropertiestga�g#TCustomForm.DestroyWindowHandleuga�g#TCustomForm.DoCreatewga�g#TCustomForm.DoDestroyxga�g#TCustomForm.GetClientRect{ga�g#TCustomForm.GetFloating}ga�g#TCustomForm.Loadedga�g#TCustomForm.Notification�ga�g#TCustomForm.PaintWindow�ga�g#TCustomForm.QueryInterface�ga�g#TCustomForm.ReadState�ga�g#TCustomForm.SetParentBiDiMode�ga�g#TCustomForm.SetParent�ga�g#TCustomForm.UpdateActions�ga�g#TCustomForm.ValidateRename�ga�g#TCustomForm.WndProc�ga�g#TCustomForm.Resizing�ga�g#TCustomForm.Create�ga�g#TCustomForm.CreateNew�ga�g#TCustomForm.Destroy�ga�g#TCustomForm.AfterConstruction�ga�g#TCustomForm.BeforeDestruction�ga�g#TCustomForm.CloseQuery�ga�g#TCustomForm.DefaultHandler�ga�g#TCustomForm.SetFocus�ga�g#TCustomForm.SetFocusedControl�ga�g#TCustomForm.ShowModal�ga�g#TCustomForm.WantChildKey�ga�g%TScrollingWinControl.AdjustClientRect�(##g&TScrollingWinControl.AutoScrollEnabled�(##g%TScrollingWinControl.AutoScrollInView�(##cd#Controls�C��####g#TWinControl.AssignTo��.�g#TWinControl.CanAutoSize��.�g#TWinControl.CanResize��.�g#TWinControl.ConstrainedResize��.�g#TWinControl.CreateHandle��.�g#TWinControl.CustomAlignInsertBefore��.�g#TWinControl.CustomAlignPosition��.�g#TWinControl.DestroyWnd��.�g#TWinControl.GetClientOrigin��.�g#TWinControl.GetControlExtents��.�g#TWinControl.GetDeviceContext��.�g#TWinControl.SetParentBackground��.�g#TWinControl.ShowControl��.�g#TWinControl.Invalidate#�.�g#TWinControl.Repaint#�.�g#TWinControl.SetBounds#�.�g#TWinControl.Update �.�g#TControl.GetAction6�`)g#TControl.GetDragImages<�`)g#TControl.GetEnabled=�`)g!TControl.GetFloatingDockSiteClass?�`)g#TControl.SetAutoSizeN�`)g#TControl.SetDragModeO�`)g#TControl.SetEnabledP�`)g#TControl.SetNameQ�`)g#TControl.SetBiDiModeU�`)g#TControl.InitiateAction��`)g#TControl.GetTextʅ`)cd#Graphics�C��####cd#Classes�C��####g#TComponent.UpdateRegistry����g#TComponent.WriteState����g#TComponent.SafeCallException����g#TPersistent.Assign�N#`cd#SysUtils�C��####cd#Messages�C��####cd#Windows�C��####g MessageBox��##g#MB_OK���cd#SysInit�C��####cd#System�C��####f#TObject���_f#Word��{�g#TObject.Dispatch�G��g#TObject.NewInstance�G��g#TObject.FreeInstance�G��f#TextFile���f#Integer��� g AssignFile####f#String��f AnsiString��g#@Assign�jtg#Reset####g @ResetTextR#�Dg#IOResult�k�1f	PAnsiChar#rugg#Exit####g#SeekEof####g#@SeekEofw)�#g#Readln####g#@ReadString#`�g#@ReadLnrɳ�g#Inc####g	CloseFile####g#@CloseR#�Dg#@_IOTestE�a�g#@LStrFromStringh� #g @LStrArrayClrzY��g#@HandleFinallyE�a�g @LStrToStringE�a�g	@PStrNCpy��Y�g#Rewrite####g#@RewritTextR#�Dg#Writeln####g @Write0StringE�#�g#@WriteLn�Ԡ?g#Halt####g#@Halt0E�a�g#@LStrCmpE�a�g#@LStrClrѨ}�g#Str####g	@Str0Long#&��g @LStrFromChar9%#\g	@LStrCatNE�a�g#False����g#Include####g#Exclude####g#True����g#Val####g#@ValLong#O��g	@LStrLAsg�4#�c4#Unit1�iif@#c4#Windows#�c4#Messages#�c4#SysUtils#�c4#Classes#�c4#Graphics#�c4#Controls#�c4#Forms#Hc4#Dialogs#Fc4#ComCtrls#:c4#Grids#"c4#Menus##c4#StdCtrls##c4#ExtCtrls##c*#SRow�;�� *&#.TForm1��n#�,#*#TForm1��ѩ. #Form1��F��.## #.2f0#(#TForm1.LoadFromFiles�ң�#�##2!#Self#.# #Ff # #i#"#c(#TForm1.InitGrids�ӣ�#q##2!#Self#.  #i#"# #j#"#c(#TForm1.FillArrays�ԣ�####2!#Self#.# #i#"#c(#TForm1.SaveInFiles�գ�#�##2!#Self#.# #Ff # #i#"#c(#TForm1.FormCreate�ƣ�#4#2!#Self#.#!#Sender###c(#TForm1.N2Click�ǣ�# #2!#Self#.#!#Sender###c(#TForm1.N3Click�ȣ�#&#2!#Self#.#!#Sender###c(#TForm1.btnSearchClick�ɣ�####2!#Self#.#!#Sender### #myRectf#� #Gridf#� #nColf"� #i#"# #j#"# #stf&�c(#TForm1.FillNDgrid�֣�#�	#2!#Self#.# #i#"  #jf"� #y#"# #nf"� #codef&� #stf&�c(#TForm1.N4Click�ʣ�#h#2!#Self#. !#Sender### #i#"# #j#"#c(#TForm1.CheckBox1Click�ˣ�#�#2!#Self#.#!#Sender### #opt###c(#TForm1.btnDelClick�̣�#q##2!#Self#.#!#Sender### #myRectF## #Gridf#� #nColf"� #i#"# #j#"#cj(#Sift###1	#2+#l3` #i##  #j### #y###ck(#TForm1.Sort�ף�#�##2!#Selff.�� #lf#�� #rf#�� #x#"# #n#"# #n1f"�� #n2f"�� #cf"#� #y#"# #sf&�� #srf*#�cj(#Sift###1	#2+#l3` #i##  #j### #y###ck( TForm1.Sort2�أ�#�##2!#Selff.�� #lf#�� #rf#�� #x#"# #n#"# #n1f"�� #n2f"�� #cf"#� #y#"# #sf&�� #srf*#�c(#TForm1.SweepRows�٣�#y##2!#Self#. !#r1f#�!#r2f#� #sf4	� #i#"#c(#TForm1.SaveRow�ڣ�#u##2!#Self#. "#srf*�!#rf#� #i#"#c(#TForm1.btnSort2Click�ͣ�# #2!#Self#.#!#Sender###c(#TForm1.btnSort1Click�Σ�# #2!#Self#.#!#Sender###c( Finalization�E�a�#\! 2c�#(#Unit1�######!#2c��L#�#�##68G###.� F<#�#### #�#z���&#, PageControl1##�#,	TabSheet1##�#,#XDgrid### ,	TabSheet2### ,#WTKgrid##! ,	TabSheet3##1 ,#BANKgrid##A ,	MainMenu1# Q ,#N1# a ,#N2# q ,#N3# � ,	btnSearch##� ,	txtSearch##� ,	TabSheet4##� ,#NDgrid##� ,#N4# � ,	CheckBox1##� ,#btnDel##� ,	GroupBox1### ,#btnSort1### ,#btnSort2##! - FormCreate#�!##-#N2Click#�-##-#N3Click#�9##-#btnSearchClick#�E##-#N4Click#�##-#CheckBox1Click#�##-#btnDelClick#�##- btnSort2Click#�##- btnSort1Click#�##,#XDar#:1 ,#WTKar#<#/,#BANKar#>�w- LoadFromFiles#��##-	InitGrids#��##- FillArrays#�###-#SaveInFiles#�###- FillNDgrid#�i##-#Sort#��##-#Sort2#�%##-	SweepRows#�U##-#SaveRow#�m##cD###0####�#���P@###L#�###@BD###0# �K#>##DFL#�!##HJL#�H##LNL#9###PRD###0# �K#>##TFD###V#<�B###F#�#�D###0###�K#>##XFD###0#Y#�K#>##ZFD###0#d�K#>##\FD###V#<�D###0#�#�D###V#<�D###V#<�D###V#<�l�sL###################@###o############$################################################################################################################################################################################################################################################################################################�##### PageControl1�#####	TabSheet1#######XDgrid######	TabSheet2#######WTKgrid #####	TabSheet3#######BANKgrid######	MainMenu1#######N1#######N2 ######N3$#####	btnSearch(#####	txtSearch,#####	TabSheet40######NDgrid4######N48#####	CheckBox1<######btnDel@#####	GroupBox1D######btnSort1H######btnSort2	####### FormCreate#######N2Click#######N3Click#######btnSearchClick#######N4Click#######CheckBox1Click#######btnDelClick###### btnSort2Click###### btnSort1Click#TForm1	###########################################TForm1L#######^##Unit1##SVW��4������###���####���####�####��t#j#h�###h�###j#�####�C###�####�'����#+Í�#-###�####���####���####�####C���####�####��tɋ��####�####��###���####���####�####��t#j#h�###h�###j#�####��###�####�'����#+Í�#�###�####���####���####�####C���####�####��tɋ��####�####�####���####���####�####��t#j#h####h�###j#�####�J�####�'����#+Í�#�###�####���####���####�####C���####�####��tɋ��####�####���###_^[�##����####XD.txt##�� �������� ������� ���� XD.txt!####������!#����####WTK.txt#�� �������� ������� ���� WTK.txt!###����####BANK.txt####�� �������� ������� ���� BANK.txt!##U��j#j#j#SVW��3�Uh�###d�0d� h�###��####3�3��####h�###��####3ɺ####�####h�###��####3ɺ####�####h�###��####3ɺ####�####h####��####3ɺ####�####h####��####3ɺ####�####h4###��####3ɺ####�####hH###��####3�3��####hX###��####3ɺ####�####hd###��####3ɺ####�####hx###��####3ɺ####�####h�###��####3ɺ####�####h�###��####3ɺ####�####h�###��####3ɺ####�####h�###��####3ɺ####�####h�###��####3ɺ####�####h####��####3ɺ	###�####h####��####3�3��####h0###��####3ɺ####�####h@###��####3ɺ####�####hP###��####3ɺ####�####hp###��####3ɺ####�####h�###��0###3�3��####h�###��0###3ɺ####�####h�###��0###3ɺ####�####h�###��0###3ɺ####�####h####��0###3ɺ####�####h�###��0###3ɺ####�####�####�####�E��J����#+�#Ӌ���#+э�#-###�####�E�P��J��####���####C��#u�F��#u��####�####�E��J#ҍ#�#Ӌ���#+э�#�###�####�E�P��J��####���####C��#u�F��#u��####�####�E��J�#�#Ӌ���#+э�#�###�####�E�P��J��####���####C��#u�F��#u�3�ZYYd�#h�###�E�####�####��####��_^[��]�#����####����� ��������##����####���� ��������#����####���� ���������#���� ###���� ��������###����####����������#����####������� ���������##����	###C��������###����####������#����####��#����####��������####���� ###��� ������� ###����####��� �� #����####�������#����####����� ������������� ###����####�������� ����� #����####����� ���������#����####��������� ���� #����####����� ��������#����####�����###����####����� ##����####������������ �������� #����####���������� ��� #����####���-�� ������ ���###U������SVW3҉����������������3�Uhw###d�0d� 3ۍ����P�ù####����A�ÿ####����####�####�������#�����###�####��#�������#+Í�#L###�#�####C��Fu�3ۍ����P�ù ###����A�ÿ ###����####�####�������#�����###�####��#�������#+Í�#�###�#�####C��###u�3ۍ����P�ù####����A�ÿ####����####�####�������#�����###�####��#�������#+Í�#�###�#�####C��2u�3�ZYYd�#h~###������####�####��####��_^[��]�SVW��4������ ###���####���####�####�####����#+Í�#-###���####�####�####C��Guۋ��####�####�####���####���####�####�####����#+Í�#�###���####�####�####C��###u؋��####�####�,###���####���####�####�####����#+Í�#�###���####�####�####C��3uۋ��####�####���###_^[����####XD.txt##����####WTK.txt#����####BANK.txt####S�؋��####���####���####[��####�S�؋��####���####[�U����SVW3ɉM�M��3�Uh$###d�0d� �U�(###�####���###�####��#r#t#Ht&�4��####�E��E�####�"��####�E��E� ###�#��####�E��E�####�E�####�E�####�E�####�E�####�U�E��####�E�<###�####tV�}�#tP�####�}�O��|=G3ۍE�P�΋ӋE��####�E�U��####u#�]�u�]�u�U�E��####� COu�F��#u�3�ZYYd�#h+###�E��####�E��####��####��_^[��]�##����#### ###U��(###j#j#Iu�SVW��3�Uh<###d�0d� �E�####�####�E�P�Ϻ####��####�####�E�T###�#####��###�E�P��3ҋ�####�####�E�P�M�3ҋ�0###�####�E�P�Ϻ####��####�####�E�P�M�####��0###�####�E�P�Ϻ####��####�####�E�P�M�####��0###�####�E�P�Ϻ####��####�####�E�P�M�####��0###�####�E�P�Ϻ####��####�####�E�P�M�####��0###�####�E�P�M�3ҋ�0###�####�u�hh###�E�P�M�####��0###�####�E̊P#�E��####�uЍE�P�M�####��0###�####�EĊP	�E��####�uȍE�####�####3	E�####�E�P�κ####��####�####�E#U��####u#�E�F��#uԍ�����E��####������E��####�E�P�M�####��0###�####�E�G��##� ���3�ZYYd�#hC###�E:####�####��####��_^[��]�##���� ###����������##����####/###SVW��####3�j#��0###�΋��####C��#u�F��#u���####_^[�SV�؋�####f��H###��8###�#���###��u#f��##f���#��<###�#�Qd�#f���f��##3ҋ�<###�#�Qd�֋�####�####�֋�####�####�֋�####�####^[�U����SVW3ɉM��3�Uh�###d�0d� ���###�####��#r#t#Ht&�4��####�E��E�####�"��####�E��E� ###�#��####�E��E�####�E�,###��~B�� }=�� 6�}�O��|(G3ۍE�P�N#�ӋE��####�E�P�΋ӋE��####COu�F��#u�3�ZYYd�#h�###�E��####��####��_^[��]�U��3�QQQQQQSVW3�Uh>###d�0d� �E#f��>�����#�E�P#�ϋE#��8�����0###�####�####�U�E##4����####�E#��F����E#��8������####�E#f;�2���#�c###�E#f;�2���#��###�E�P#�΋E#��8�����0###�####�####�E�U#��@����####�U#��,����E�P#��A�E#��8�����0###�####�####�E�U#��@����####�U#��(����E#��,����U#;�(���}#F�E#��@����E#��4����####�U#��,����E�P#�΋E#��8�����0###�####�####�E�U#��@����####�U#��(����E#��,����U#;�(���}[3ۍE�P#��#�ӋE#��8�����0###�####�E�P#��#�ӋE#��8�����0###�####Cf��#u�����#�E#f;�2���#�����3ۋE#��F����E���####�E�P#��#�ӋE#��8�����0###�####C��#f��#u�3�ZYYd�#hE###�E�####�####��####��_^[��]�U��� ���SVW3҉�$����� �����4�����8�����8���3�Uh_###d�0d� 3�####��$���P�#��0###�˺####�####��$���#t.�� ���P�#��0###�˺####�####�� ����x###�####t#FC��#u�����y#��#@f��>���f��2���f��>���#v#f��>���U�####Yf��>���#w�f��2���#vY��F���f�##�#�####��4���P�#��0###�####�####�####f��2���f�##�#�####f��2���U�####Yf��2���#w�3�ZYYd�#hf###�� ����####�####��4����####��####��_^[��]�###����#### ###U��3�QQQQQQSVW3�Uh>###d�0d� �E#f��>�����#�E�P#�ϋE#��8�����0###�####�####�U�E##4����####�E#��F����E#��8������####�E#f;�2���#�c###�E#f;�2���#��###�E�P#�΋E#��8�����0###�####�####�E�U#��@����####�U#��,����E�P#��A�E#��8�����0###�####�####�E�U#��@����####�U#��(����E#��,����U#;�(���~#F�E#��@����E#��4����####�U#��,����E�P#�΋E#��8�����0###�####�####�E�U#��@����####�U#��(����E#��,����U#;�(���~[3ۍE�P#��#�ӋE#��8�����0###�####�E�P#��#�ӋE#��8�����0###�####Cf��#u�����#�E#f;�2���#�����3ۋE#��F����E���####�E�P#��#�ӋE#��8�����0###�####C��#f��#u�3�ZYYd�#hE###�E�####�####��####��_^[��]�U��� ���SVW3҉�$����� �����4�����8�����8���3�Uh_###d�0d� 3�####��$���P�#��0###�˺####�####��$���#t.�� ���P�#��0###�˺####�####�� ����x###�####t#FC��#u�����y#��#@f��>���f��2���f��>���#v#f��>���U�####Yf��>���#w�f��2���#vY��F���f�##�#�####��4���P�#��0###�####�####�####f��2���f�##�#�####f��2���U�####Yf��2���#w�3�ZYYd�#hf###�� ����####�####��4����####��####��_^[��]�###����#### ###U���4���SVW3ۉ�4�����8�����<���f�M�f�U���3�Uh####d�0d� 3ۍ�B�����<���P#�M���0###���####��<�����@�����###�####��@����Ʊ#�####C��#��#u�3ۍ�8���P#�M�0###�Ƌ��####��8���P#�M��Ƌ��####C��#u�3ۍ�B�����4������####��4���P#�M�0###���####C��#��#u�3�ZYYd�#h####��4����####�####��####��_^[��]�U������SVW3ۉ����f�M�U��3�Uh�###d�0d� 3�]����P#�M�0###���####������������###�####������ñ#�####F��#��#u�3�ZYYd�#h�###������####��####��_^[��]��####��####�U��3�Uh%###d�0d� �#####3�ZYYd�#h,###��####��]Ã-#####�m�###�###�# #�###�###�###�###L##�##~##�##�##�##�##�##|##�##V##�##b##d##j##�##�##r##�##h##x##�##�##�##�##�##^##�##�##�##`##�##�##�##�##n##l##�##t##�##�##�##�##�##�##N##�##P##R##T##�##�##X##�##�##f##�##�##�##�##�##v##Z##\##p##z##�##�##�##� #�#�##!#"#-###9###E#*#�###�#*#�#$#�#(#�#6#@##B##&##### ##############�###�###�###J##�###�###�#### #####�# #�###�L#####!# #1##### #1###-# #1# #�###�#### #####�# #�###�L#####!# #1##### #1###-# #1# #�###�#### #####�# #�###�F#####!# #1##### #1###-# #1#�##�#$#�###�###( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�###( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#( #�###( #�#$#( #�#$#( #�#$#( #�#$#( #�###( #�#$#( #�#$#( #�#$#( #�#$#( #�#$#(X#5#(#(l#5#(#(h#5#(#(2#�###9# #=#9####L###b#*,#A#6#E#b#*,#A#6#E#h#*,#A#6#E#&### #9# #=###########�##M# #1#4#U# #Y# #1###-# #1# #####�##M# #1#4#U# #Y# #1# #-# #1# #####�##M# #1#4#U# #Y# #1###-# #1#�#!# #�###�###i# #-###a# #9# ####### #E#.#E#(#�##D�#.##E# #e#P#*##e#2#.2#E###i###i# #=#6#i#0#i#P#*##i# #e#2#*(#(,#*.#(,#*.#(,#*.#(,#*.#((#*##i#.#*##u#4#*##u# #y#@#*##e#2#q###5#.#(4#i###9# #=#^#�#2#(&#i###�#�#8##8##8##�#(#�#"#D�#* #(.#�###i# #=###�#$#�#h#* #�#2#m#�#*"#�#T#*"#�#j#�#R#*"#�#z#*<#(d#5#<#(.#�###9# #=###�#`#�#P#*H#*##�# #e#p#�#L#m#<#*$#U###�#0#�# #9###i# #=#8###$###h#* #�#2#m#�#*"#�#T#*"#�#j#�#R#*"#�#z#*<#(d#5#<#(.#####9# #=###%#`#%#P#*H#*##%# #e#p###L#m#<#*$#U#####0#%# #9###i# #=#8#U#\#U#L#*,#A###E#J#*(#(6#5#0#(,#U# #9# #=###m#B#m#F#*,#A###E#,#m###i# #=###�###�# #�###%# #�###�###�###�# #=######�# ##��#1#m #########&# ###L�#   ########&# ###L�#   ########&#####L�#  ## �##8#(#.#.#.#.#.#.#(#.#.#.#.#.#.#.#.#.#(#.#.#.#.#(#.#.#.#.#.# # �n# �#  # # �j# �#  # # �f# �# N !##`###��#  ###��# ####��##T######### �@# ####### �@######### �@# ###|######## ## ###########B###.#$#$# ###########*# ###:############�###�##T#*#D### #R#N#Z#Z#Z#Z#�# # �N# #8#.##�#$V R# # ##�$# �## ## ######$# # ### # ###########<#.#$#$# #$####�D##�# D###8#�# # #t#v#*#@#t#(##�z# �   ###P�##P###t### #��## #0##�######"#<#$�##t#,#8#�# # #t#v#*#@#t#(##�z# �   ###P�##P###t### #��## #0##�######"#<#$�##t ,#p##��# ##�^# ##�R#T ##V# ��#J### ### #^##�##Q##�#.###^�q########�#####�#####�#####�#####�#### �####"�# ##$�# ##&�####(�####*�####,�####.�####0�####2�####4�####6�####8�# ##:�#"##<�#$##>�#&##@�#(##B�#*##D!####HF�#�#,##F-####JH##�#.##H9####LJ1#�#0##JE####NLQ#�#2##L�####PNM#�#4##N�####RPu#�#6##P�####TR�#�#8##R�####VT%#�#:##T�####XV9#�#<##V�#>##\�#@##^�#B##`�####hf��#D##f�####jhE#�#F##h#####lj!#�#H##j#####nlu#�#J##li####pn�#�#L##n�####rp!#�#N##p%####tr�#�#P##rU####vt�#�#R##tm####zv	#�#T##v�####��#####�####��####��#####�####I######I#	##### ####%############}######�#%#####)####�#1#####5######=#####A####1#I#####M####Q#Q####Y#U####]#Y####a#]####a#a####a#e####e#m#####q####�#u####�#y####�#}####�#�####�#�####�#�#####�####M#�####Q#�####Q#�#####�####u#�####y#�#####�####�#�####�#�####�#�####�#�####�#�####�#�#####�####)#�####)#�####-#�####-#�####-#�####-######-######-#	####1# ####5#�####9#�####=#�####A#�####A#�####A#)#####-######1######5######9######=######A######E######I######M####	#Q#### #############################!######Y#####]####�#a####�#e####�#i####�#q#####u####	#y####	#}#### #�#####�####%#�#####�####9#�####M#��#�###1##p#�###�#R��#�#�#�#�#���#�#��#�##�####�#�#��#�#��#�##�####�#�#��#�#��#####p#�#8 �#e ###y ###i#��#�#��#�####�####� ��#� ��#� ###� ###� ��#Q#��#Q#�##�1##p#	#`# #d# #I#� #Q## #�#� #�## #�#�	#�#�##�1##p#######T###��##�###�#�##%####�#�##�#�!#@####%###%#0�-# ####9#@####=###=#"�E#�@#p#I#B#I#�]#�##a####a#�#�]#�#�a#�##]#�##a###�]#�#�i#�###p#m#D#q#\ y#�##y#�#�m# 	�q# 	��#�##p#�#  �###�###�#F��#R��#`��#`##0#�###�#"#�#��#��#�##p#�#<#�#��#	##�#5##�#�#��#U#��#�0#p#�#�#�#� �#5##�#A#��#A#��#Y# �#�#��#�##�##	��##	��#`�##p#�#x###�###e#��#�#�##�0#p###�###� !#5##!#A#�##A#�##Y# ##�#�!#�##!##	�###	�%#`�##p#9#x#I#�#I#e#�9#�#�U#�1##p#Y#p i#�#i###�i#!##i#�#�i####i#]#�Y#]#�m#`1##p#q#V }#`#}#Y#�q#Y#��#@####�###�# ��#@####�###�# ��# ##### ####a

1. Курсовая Сущность предпринимательства и прибыль
2. Реферат на тему Personal Writing The Lake Essay Research Paper
3. Диплом Повышение эффективности лесопромышленного предприятия на примере ОАО по Усть-Илимский лесопромышленный
4. Реферат Брунетская операция
5. Реферат Анализ прибыли на примере предприятия ООО Мир Вояж
6. Сочинение Онегин и Печорин
7. Реферат Країни Африки Південно-Африканська Республіка та Маршалові острови
8. Реферат на тему King Midas Essay Research Paper Long ago
9. Диплом на тему Методика преподавания иностранного языка в 7-х классах средней школы
10. Реферат на тему Macbeth Essay Research Paper MACBETHShow how Macbeth