-
|
FrPY
|
Текстовый файл
|
Локальная
|
Файловая переменная для записи
При запуске программы появляется главное окно,
представленное на рисунке [5]:
Рисунок 5 - Главное окно программы
Для ввода исходных данных существует три блока:
Общее количество катков, База трактора и Дополнительные параметры. Для
проведения расчетов необходимо нажать кнопку Расчет. Если требуется выполнить
дополнительные вычисления, то можно воспользоваться калькулятором, который
вызывается нажатием кнопки Калькулятор. Для вызова справки существует кнопка
Справка.
Программа содержит падающее меню (рисунок 6) и
контекстное меню (рисунок 7), из которых можно выполнить основные действия с
программой.
а) б)
в)
Рисунок 6 - Главное падающее меню программы: а)
меню файл; б) меню расчет; в) меню справка
Рисунок 7 - Контекстное меню программы
Для удобства пользователя программой существует
статусная строка, в которую выводится справочная информация о любом объекте
формы, к которому подводится курсор.
После выполнения расчетов результаты
отображаются на новой форме в виде таблицы (рисунок 8).
Рисунок 8 - Результаты расчета
На данной форме имеются кнопки позволяющие
провести постобработку полученных результатов. Можно сохранить результаты в MS
Excel, MS Word. Есть возможность показать графические зависимости. Возможен
вызов Справки при нажатии на соответствующую кнопку. Так же есть контекстное
меню (рисунок 9), из которого можно выполнить основные действия с программой.
Рисунок 9 - Контекстное меню окна «Результаты
расчета»
При нажатии на кнопку Графики загружается новая
форма (рисунок 10), на которой представлены графические зависимости требуемого
диаметра катка трактора: от общего количества поддерживающих катков; от базы
трактора. Также предусмотрена возможность построения трехмерного графика -
зависимость диаметра катка трактора при одновременном изменении сразу двух
параметров: базы трактора и общего количества поддерживающих катков.
Рисунок 10 - Окно представления графических
зависимостей
Если необходимо получить информацию о
программном продукте, то следует выбрать пункт меню О программе на главной
форме (рисунок 11).
Рисунок 11 - Окно «О программе»
На данной форме находятся краткие сведения о
программе, авторе и анимация, схематически отображающая описываемую задачу.
5. СТРУКТУРА ПРОГРАММНОГО ПРИЛОЖЕНИЯ
5.1 Падающее и контекстное меню
Большинство программ содержат меню, так как
именно оно дает наиболее удобный и быстрый доступ к основным функциям
программы.
Существует несколько различных типов меню. В
программе использовались два типа меню: падающее (см. рисунок 6) и контекстное
(см. рисунок 7).
Каждый раздел меню снабжен соответствующей
пиктограммой. Некоторые пункты меню соответствуют кнопкам на форме.
5.2 Статусная строка
Статусная строка представляет собой панель,
отображающую полосу состояния в стиле Windows. Она создается с использованием
компонента StatusBar. Используется для вывода подсказок к каждому элементу
программы.
Подсказки для каждого компонента, задаваемые
свойством Hint выводятся в статусную строку при наведении курсора на конкретный
объект.
Применение статусной строки выгодно облегчает работу
с программой, если нет желания вызывать файл справки, но требуется получить
информацию об объекте.
5.3 Обработка исключительных
ситуаций
Некоторые пользователи программы по своей
невнимательности допускают ошибки ещё на начальном этапе работы с программой,
при вводе данных. Чтобы избежать таких недоразумений в программе используется
система защиты от ввода и использования некорректно введенных данных.
На первом этапе осуществляется блокирование
ввода заранее неверной информации в labeledEdit. Это осуществляется путем
создания двух процедур:
. Первая процедура позволяет вводить только
вещественный тип данных, т.е. блокируется ввод всех символов, кроме цифр и
запятой.2. Вторая процедура позволяет вводить только целый тип данных, т.е.
блокируется ввод всех символов, кроме цифр (см. Приложение, с.26-30).
На втором этапе осуществляется контроль данных
при помощи обработки исключительных ситуаций. При введении неверной информации
программа автоматически выдаёт сообщение об ошибке и выделяет объект, в который
были введены неверные данные (см. Приложение, с с.26-30).
В случае возникновения ошибки будет выдано
соответствующее сообщение, при этом будет установлен фокус в тот LabeledEdit,
где находятся некорректные данные.
Необходимо учитывать, что, например, введенные
данные не приводят к возникновению исключительной ситуации, но тем не менее,
препятствуют нормальной работе приложения. Для исключения подобных ситуаций на
третьем этапе обработки данных в программе введена дополнительная обработка
корректности введенных данных (см. Приложение, с.26-30).
В случае неправильного ввода данных будет выдано
соответствующее сообщение, при этом будет установлен фокус в тот LabeledEdit,
где находятся некорректные данные.
5.4 Построение графических
зависимостей
Для подтверждения расчетных данных в программе
используется построение графиков. Если расчётные данные совпадают с
результатами на графической зависимости, то можно сделать вывод, что программа
написана верно, без искажения реальных фактов (см. Приложение, с.32-33).
5.5 Создание анимации
В данной курсовой работе анимация предоставляет
минимальную информацию о создателе программы и схематически показывает
исследуемый объект (Приложение, с.34-35).
Вызов внешнего приложения
Для уточнения полученных результатов или для каких-то
предварительных расчетов можно воспользоваться системным калькулятором Windows.
В программе есть такая возможность (Приложение,
с.29).
Данная процедура позволяет вызывать внешнее
приложение из программного продукта, не закрывая программу.
Преимущество этой функции в том, что не надо
прописывать калькулятор в программном коде, т.к. он есть в любой версии
операционной системы Windows.
5.6 Динамически подключаемые
библиотеки
Динамически подключаемые библиотеки (DLL -
Dynamic Link Library) являются ключевым компонентом при написании любого
современного приложения Windows.
Они представляют собой программные модули,
содержащие процедуры и функции, данные или ресурсы, которые могут совместно
использоваться несколькими различными приложениями Windows.
Одно из основных и, пожалуй, главных назначений
библиотек DLL - позволить загружать процедуры и функции в память только в
случае необходимости во время выполнения приложения, а не компилировать их в
само приложение и таким образом загружать в память всякий раз при запуске,
независимо от того понадобятся они либо нет.
Кроме того, несколько приложений могут
использовать одни и те же процедуры и функции, хранящиеся в DLL, одновременно.
И самое главное, библиотеки DLL являются
универсальными относительно языка программирования. Текст библиотеки
представлен в приложении, с.35.
6. РАЗРАБОТКА СПРАВОЧНОЙ СИСТЕМЫ
Файл справочной системы был создан при помощи
Help&Manual версии 5.
Итоговый файл справки и файл содержания
располагаются в подпапке Hlp папки с программой. Вызвать файл справки можно,
нажав клавишу F1, соответствующую кнопку на форме либо соответствующий пункт в
падающем и контекстном меню.
Для каждой формы есть своя страница файла
справки.
На каждом диалоговом окне есть кнопка Справка,
на которой пишется программный текст вызова справки конкретного раздела,
который представлен в приложении, с.33.
Разработанная справочная система представлена на
рисунках, приведенных ниже (рисунок 12,13,14.15,16):
Рисунок 12 - Справка
Рисунок 13 - Справка «О программе»
Рисунок 14 - Справка «Главная форма»
Рисунок 15 - Справка «Форма с результатами
расчетов»
Рисунок 16 - Справка «Форма с графическими
зависимостями»
7. РАСЧЁТ КОНТРОЛЬНОГО ПРИМЕРА
Исходные данные для расчета:
Трактор «Беларус 2102»
- момент сопротивления
проворачиванию уплотнений
(=3.5 Н*м);
- шаг гусеницы; (0,125 м);число
поддерживающих катков (на одной стороне) (z=1-5);
- вес единицы длины гусеницы(100
H);- база трактора; (2,1-2,5 м)
µ - коэффициент трения гусеницы о
ролик (µ = 0,15);- коэффициент сопротивлению вращению катка (f =0,02).
Таблица 3 - Результаты требуемого
диаметра катка, м
L\z
|
1.00
|
2.00
|
3.00
|
4.00
|
5.00
|
2.10
м
|
0.0801
|
0.0962
|
0.1122
|
0.1282
|
0.1442
|
2.14
м
|
0.0785
|
0.0942
|
0.1099
|
0.1255
|
0.1412
|
2.19
м
|
0.0769
|
0.0922
|
0.1076
|
0.1230
|
0.1384
|
2.23
м
|
0.0753
|
0.0904
|
0.1055
|
0.1206
|
0.1356
|
2.28
м
|
0.0739
|
0.0886
|
0.1034
|
0.1182
|
0.1330
|
2.32
м
|
0.0725
|
0.0870
|
0.1014
|
0.1159
|
0.1304
|
2.37
м
|
0.0711
|
0.0853
|
0.0995
|
0.1138
|
0.1280
|
2.41
м
|
0.0698
|
0.0837
|
0.0977
|
0.1117
|
0.1256
|
2.46
м
|
0.0685
|
0.0822
|
0.0959
|
0.1096
|
0.1233
|
0.0673
|
0.0808
|
0.0942
|
0.1077
|
0.1212
|
Рисунок 17 - Зависимость требуемого диаметра
катка от базы трактора
Рисунок 18 - Зависимость требуемого диаметра
катка от общего количества катков
Рисунок 19 -Трехмерная зависимость
идентификатор алгоритмизация
библиотека интерфейс
Таким образом, был проведен расчет диаметра
поддерживающего катка гусеничного трактора в зависимости от общего количества
поддерживающих катков и базы трактора. Результаты были представлены в виде
таблицы и графиков.
Проведенный расчет подтверждает возможность
использования данного программного продукта для решения поставленной задачи.
ЗАКЛЮЧЕНИЕ
В результате проделанной работы было получено
законченное программное приложение технического характера, с помощью которого
можно рассчитать требуемый диаметр поддерживающего катка трактора.
Данную программу можно в дальнейшем использовать
при проектировании поддерживающих катков. Меняя параметры трактора, можно
подобрать наиболее подходящий под данную модель трактора поддерживающий каток
или найти компромиссное решение.
Был произведен расчет диаметра поддерживающего
катка гусеничного трактора БЕЛАРУС 2102, который прямо пропорционально увеличивается
с увеличением количества поддерживающих катков от 1 до 5 и уменьшается с
увеличением базы трактора от 2,1м до 2,5м. При количестве поддерживающих катков
равному 3 и базе трактора равной 2,1м получаем диаметр поддерживающего катка
равный 0,1122м, что подтверждает возможность прикладного использования
программы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Тракторы.
Проектирование, конструирование и расчет / Под общ. ред. И.П. Ксеневича. - М.:
Машиностроение, 1991. - 418 с.
2. Барский
И.Б. Конструирование и расчет тракторов. Третье издание. - М.: Машиностроение,
1980. - 367 с.
. Методическое
пособие по выполнению курсовой работы по дисциплине «Информатика» для студентов
специальностей «Тракторостроение», «Многоцелевые гусеничные и колесные машины»,
«Городской электрический транспорт». В.В. Равино, Ю.Е. Атаманов
ПРИЛОЖЕНИЕ
Текст программы
Unit1;
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, Buttons,
Menus, ExtCtrls ,ComObj, Math;= class(TForm): TGroupBox;: TGroupBox;:
TGroupBox;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;:
TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;:
TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;: TBitBtn;: TBitBtn;:
TBitBtn;: TBitBtn;: TStatusBar;: TMenuItem;: TLabeledEdit;: TLabeledEdit;:
TLabel;: TLabel;: TPopupMenu;: TMenuItem;: TMenuItem;: TBitBtn;FormCreate(Sender:
TObject);ShowHint(Sender: TObject);BitBtn1Click(Sender:
TObject);N14Click(Sender: TObject);BitBtn2Click(Sender:
TObject);N6Click(Sender: TObject);N10Click(Sender:
TObject);BitBtn4Click(Sender: TObject);N4Click(Sender: TObject);N9Click(Sender:
TObject);N5Click(Sender: TObject);N13Click(Sender: TObject);N12Click(Sender:
TObject);N8Click(Sender: TObject);BitBtn5Click(Sender: TObject);N7Click(Sender:
TObject);BitBtn3Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm1;,zMax,LMin,LMax,My,tg,qg,m,f:Real;,u:Integer;,Fw,FrPY:TextFile;Unit2,
Unit4;
{$R *.dfm}massive1=array[1..100] of
real;massive2=array[1..100,1..100] of
real;Diametr(zMin,zMax,LMin,LMax,My,tg,qg,m,f:real;v,u:integer;var
Dp,DpZ,DpL:massive2;var DpVer,DpGor,zMass,LMass:massive1); external
'DLL\Traktor.dll';TForm1.FormCreate(Sender:
TObject);:=BorderIcons-
[biSystemMenu];:='.';.OnHint:=ShowHint;(Fr,
'Данные.txt');(Fr);(Fr,
zMin);(Fr, zMax);(Fr, v);(Fr, LMin);(Fr, LMax);(Fr, u);(Fr, My);(Fr, tg);(Fr,
qg);(Fr, m);(Fr,
f);(Fr);.LabeledEdit1.Text:=FloatToStr(zMin);.LabeledEdit2.Text:=FloatToStr(zMax);.LabeledEdit3.Text:=IntToStr(v);.LabeledEdit4.Text:=FloatToStr(LMin);.LabeledEdit5.Text:=FloatToStr(LMax);.LabeledEdit6.Text:=IntToStr(u);.LabeledEdit7.Text:=FloatToStr(My);.LabeledEdit8.Text:=FloatToStr(tg);.LabeledEdit9.Text:=FloatToStr(qg);.LabeledEdit10.Text:=FloatToStr(m);.LabeledEdit11.Text:=FloatToStr(f);;TForm1.ShowHint(Sender:
TObject);.StatusBar1.SimpleText:=Application.Hint;;TForm1.BitBtn1Click(Sender: TObject);Dp,DpZ,DpL:massive2;,DpGor,zMass,LMass:massive1;,j:Integer;:=StrToFloat(Form1.LabeledEdit1.Text);
exceptEConvertError Do('Неправильно введено
начальное значение количества катков',
mtWarning,[mbOK],0);.LabeledEdit1.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit2.Text);
exceptEConvertError Do('Неправильно введено
конечное значение количества катков',
mtWarning,[mbOK],0);.LabeledEdit2.SetFocus;;;;:=StrToInt(Form1.LabeledEdit3.Text);EConvertError
Do('Неправильно
введено
количество
расчётных
точек',,[mbOK],0);.LabeledEdit3.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit4.Text);EConvertError
Do('Неправильно
введено
начальное
значение
базы
трактора',,[mbOK],0);.LabeledEdit4.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit5.Text);EConvertError
Do('Неправильно
конечное
конечное
значение
базы
трактора',,[mbOK],0);.LabeledEdit5.SetFocus;;;;
:=StrToInt(Form1.LabeledEdit6.Text);EConvertError
Do('Неправильно
введено
количество
расчётных
точек',,[mbOK],0);.LabeledEdit6.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit7.Text);EConvertError
Do('Неправильно
введено
значение
момента
сопротивления',,[mbOK],0);.LabeledEdit7.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit8.Text);EConvertError
Do('Неправильно
введено
значение
шага
гусеницы',,[mbOK],0);.LabeledEdit8.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit9.Text);EConvertError
Do('Неправильно
введено
значение
веса
гусеницы',,[mbOK],0);.LabeledEdit9.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit10.Text);EConvertError
Do('Неправильно
введено
значение
коэффициента
трения',,[mbOK],0);.LabeledEdit10.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit11.Text);EConvertError
Do('Неправильно
введено
значение
коэффициента
сопротивления',,[mbOK],0);.LabeledEdit11.SetFocus;;;;(zMin<1)
or (zMin>9) then
begin('Неправильно введено начальное значение
количества катков',
mtWarning,[mbOK],0);.LabeledEdit1.SetFocus;;;(zMax<2)
or (zMax>10) then
begin('Неправильно введено конечное значение
количества катков',
mtWarning,[mbOK],0);.LabeledEdit2.SetFocus;;;(LMin<2)
then
MessageDlg('Неправильно введено начальное значение
базы трактора',
mtWarning,[mbOK],0);.LabeledEdit4.SetFocus;;;(LMax<2.1)
or (LMax>2.5) then
begin('Неправильно конечное конечное значение
базы трактора',
mtWarning,[mbOK],0);.LabeledEdit5.SetFocus;;;(My<1.5)
or (My>5.5) then
begin('Неправильно введено значение момента
сопротивления',
mtWarning,[mbOK],0);.LabeledEdit7.SetFocus;;;(tg<0.124)
or (tg>0.126) then
begin('Неправильно введено значение шага
гусеницы',
mtWarning,[mbOK],0);.LabeledEdit8.SetFocus;;;(qg<50)
or (qg>800) then
begin('Неправильно введено значение веса
гусеницу',
mtWarning,[mbOK],0);.LabeledEdit9.SetFocus;;;(m<0.14)
or (m>0.16) then
begin('Неправильно введено значение коэффициента
трения',
mtWarning,[mbOK],0);.LabeledEdit10.SetFocus;;;(f<0.01)
or (f>0.03) then
begin('Неправильно введено значение коэффициента
сопротивления',
mtWarning,[mbOK],0);.LabeledEdit11.SetFocus;;;(v<1)
or (v>1000000) then
begin('количество расчётных точек',
mtWarning,[mbOK],0);.LabeledEdit3.SetFocus;;;(u<1)
or (u>10000000) then
begin('количество расчётных точек',
mtWarning,[mbOK],0);.LabeledEdit6.SetFocus;;;m=f
then('Неправильно
введены
данные',mtWarning,[mbOK],0);.LabeledEdit10.SetFocus;.LabeledEdit11.SetFocus;;;(zMin,zMax,LMin,LMax,My,tg,qg,m,f,v,u,Dp,DpZ,DpL,DpVer,DpGor,zMass,LMass);.StringGrid1.ColCount:=v+1;.StringGrid1.RowCount:=u+1;i:=1
to v doj:=1 to u
do.StringGrid1.Cells[i,j]:=FloatToStrF(Dp[i,j],ffFixed,8,4);.StringGrid1.Cells[i,0]:=FloatToStrF(DpVer[i],ffFixed,3,2);.StringGrid1.Cells[0,j]:=FloatToStrF(DpGor[j],ffFixed,3,2)+'
м';;;.ShowModal;;TForm1.N14Click(Sender:
TObject);(FrPY, 'По умолчанию.txt');(FrPY);(FrPY,zMin);(FrPY,zMax);(FrPY,v);(FrPY,LMin);(FrPY,LMax);(FrPY,u);(FrPY,My);(FrPY,tg);(FrPY,qg);(FrPY,m);(FrPY,f);(FrPY);.LabeledEdit1.Text:=FloatToStr(zMin);.LabeledEdit2.Text:=FloatToStr(zMax);.LabeledEdit3.Text:=IntToStr(v);.LabeledEdit4.Text:=FloatToStr(LMin);.LabeledEdit5.Text:=FloatToStr(LMax);.LabeledEdit6.Text:=IntToStr(u);.LabeledEdit7.Text:=FloatToStr(My);.LabeledEdit8.Text:=FloatToStr(tg);.LabeledEdit9.Text:=FloatToStr(qg);.LabeledEdit10.Text:=FloatToStr(m);.LabeledEdit11.Text:=FloatToStr(f);;;TForm1.BitBtn2Click(Sender:
TObject);('Calc\calc.exe', SW_RESTORE);;TForm1.N6Click(Sender:
TObject);.BitBtn2.Click;;TForm1.N10Click(Sender:
TObject);.BitBtn2.Click;;TForm1.BitBtn4Click(Sender: TObject);:=StrToFloat(Form1.LabeledEdit1.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit1.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit2.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit2.SetFocus;;;;:=StrToInt(Form1.LabeledEdit3.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit3.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit4.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit4.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit5.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit5.SetFocus;;;;:=StrToInt(Form1.LabeledEdit6.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit6.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit7.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit7.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit8.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit8.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit9.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit9.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit9.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit9.SetFocus;;;;:=StrToFloat(Form1.LabeledEdit9.Text);EConvertError
Do('Некорректно
введены
данные',,[mbOK],0);.LabeledEdit9.SetFocus;;;;(Fw,
'Данные.txt');(Fw);(Fw,StrToFloat(Form1.LabeledEdit1.Text));(Fw,StrToFloat(Form1.LabeledEdit2.Text));(Fw,StrToInt(Form1.LabeledEdit3.Text));(Fw,StrToFloat(Form1.LabeledEdit4.Text));(Fw,StrToFloat(Form1.LabeledEdit5.Text));(Fw,StrToInt(Form1.LabeledEdit6.Text));(Fw,StrToFloat(Form1.LabeledEdit7.Text));(Fw,StrToFloat(Form1.LabeledEdit8.Text));(Fw,StrToFloat(Form1.LabeledEdit9.Text));(Fw,StrToFloat(Form1.LabeledEdit10.Text));(Fw,StrToFloat(Form1.LabeledEdit11.Text));(Fw);;;TForm1.N4Click(Sender:
TObject);.BitBtn4.Click;;TForm1.N9Click(Sender:
TObject);.BitBtn1.Click;;TForm1.N5Click(Sender:
TObject);.BitBtn1.Click;;TForm1.N13Click(Sender:
TObject);.N14.Click;;TForm1.N12Click(Sender: TObject);.BitBtn4.Click;;TForm1.N8Click(Sender:
TObject);.ShowModal;;TForm1.BitBtn5Click(Sender:
TObject);.ShowModal;;TForm1.N7Click(Sender:
TObject);(Handle,'Help.hlp',sw_restore,1);;TForm1.BitBtn3Click(Sender:
TObject);(Handle,'Help.hlp',sw_restore,2);;.Unit2;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, Grids
,ComObj, Menus, ComCtrls, Math;= class(TForm): TGroupBox;: TStringGrid;:
TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TBitBtn;: TSaveDialog;: TPopupMenu;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TPrintDialog;:
TLabel;: TSaveDialog;BitBtn1Click(Sender: TObject);BitBtn4Click(Sender:
TObject);N1Click(Sender: TObject);N2Click(Sender: TObject);FormCreate(Sender:
TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender:
TObject);MSWord1Click(Sender: TObject);MSExcel1Click(Sender:
TObject);BitBtn6Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm2;,zMax,LMin,LMax,My,tg,qg,m,f:Real;,u:Integer;,Fw,FrPY:TextFile;Unit1,
Unit3;
{$R *.dfm}massive1=array[1..100] of
real;massive2=array[1..100,1..100] of
real;Diametr(zMin,zMax,LMin,LMax,My,tg,qg,m,f:real;v,u:integer;var
Dp,DpZ,DpL:massive2;var DpVer,DpGor,zMass,LMass:massive1); external
'DLL\Traktor.dll';TForm2.BitBtn1Click(Sender:
TObject);;;TForm2.BitBtn4Click(Sender:
TObject);i,j:integer;,DpZ,DpL:massive2;,DpGor,LMass,zMass:massive1;:=StrToFloat(Form1.LabeledEdit1.Text);:=StrToFloat(Form1.LabeledEdit2.Text);:=50;:=StrToFloat(Form1.LabeledEdit4.Text);:=StrToFloat(Form1.LabeledEdit5.Text);:=50;:=StrToFloat(Form1.LabeledEdit7.Text);:=StrToFloat(Form1.LabeledEdit8.Text);:=StrToFloat(Form1.LabeledEdit9.Text);:=StrToFloat(Form1.LabeledEdit10.Text);:=StrToFloat(Form1.LabeledEdit11.Text);(zMin,zMax,LMin,LMax,My,tg,qg,m,f,v,u,Dp,DpZ,DpL,DpVer,DpGor,zMass,LMass);i:=1
to v doj:=1 to u
do.Series7.AddXYZ(DpVer[i],Dp[i,j],DpGor[j]);.Series4.AddXY(DpVer[i],DpL[i,1]);.Series5.AddXY(DpVer[i],DpL[i,2]);.Series6.AddXY(DpVer[i],DpL[i,3]);.Series1.AddXY(DpGor[j],DpZ[1,j]);.Series2.AddXY(DpGor[j],DpZ[2,j]);.Series3.AddXY(DpGor[j],DpZ[3,j]);;;.Series1.Title:='Знач.
кол-ва
катков:
'+FloatToStr(zMass[1]);.Series2.Title:='Знач.
кол-ва
катков:
'+FloatToStr(zMass[2]);.Series3.Title:='Знач.
кол-ва
катков:
'+FloatToStr(zMass[3]);.Series4.Title:='Знач.
базы
трактора:
'+FloatToStr(LMass[1])+' м';.Series5.Title:='Знач.
базы
трактора:
'+FloatToStr(LMass[2])+' м';.Series6.Title:='Знач.
базы
трактора:
'+FloatToStr(LMass[3])+' м';.ShowModal;;TForm2.N1Click(Sender:
TObject);.BitBtn1.Click;;TForm2.N2Click(Sender: TObject);.BitBtn4.Click;;TForm2.FormCreate(Sender:
TObject);:=BorderIcons-
[biSystemMenu];StringGrid1
do[0,0]:='L\z';;TForm2.BitBtn2Click(Sender:
TObject);WordApp,NewDoc,WordTable:OLEVariant;,iCols,iGridRows,jGridCols:integer;Form2.SaveDialog1.Execute=false
then exit;:=CreateOleObject('Word.Application');;:=WordApp.Documents.Add;:=Stringgrid1.ColCount;:=Stringgrid1.RowCount;:=NewDoc.Tables.Add(WordApp.Selection.Range,iRows,iCols);.Range.Font.Size:=8;iGridRows:=1
to iRows dojGridCols:=1 to iCols do.Cell(iGridRows,jGridCols).Range.Text:=Form2.Stringgrid1.Cells[jGridCols-1,iGridRows-1];.ActiveDocument.SaveAs(Form2.SaveDialog1.FileName);.Quit;:=Unassigned;:=Unassigned;:=Unassigned;;TForm2.BitBtn3Click(Sender:
TObject);XLApp,sheet,colum:variant;,j:integer;Form2.SaveDialog2.Execute=false then
exit;:=CreateOleObject('Excel.Application');;.Workbooks.Add(-4167);.Workbooks[1].WorkSheets[1].Name:='Результат';:=XLApp.Workbooks[1].WorkSheets['Результат'].Columns;:=StrToInt(Form1.LabeledEdit3.Text);:=StrToInt(Form1.LabeledEdit6.Text);i:=1
to v+1 do:=XLApp.Workbooks[1].WorkSheets['Результат'].Rows;.columns[1].Font.Bold:=true;.Rows[1].Font.Bold:=true;.Rows[1].Font.italic:=true;.Rows[2].Font.Bold:=true;:=XLApp.Workbooks[1].WorkSheets['Результат'];i:=0
to v doj:=0 to u do.Cells[j+2,i+1]:=Form2.Stringgrid1.Cells[i,j];
sheet.Cells[1,2]:='Требуемый диаметр
поддерживающего катка, м.';
XLApp.ActiveWorkbook.SaveAs(Form2.SaveDialog2.FileName);.Quit;;TForm2.MSWord1Click(Sender:
TObject);.BitBtn2.Click;;TForm2.MSExcel1Click(Sender:
TObject);.BitBtn3.Click;;TForm2.BitBtn6Click(Sender:
TObject);(Handle,'Help.hlp',sw_restore,3);;.Unit3;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, TeeSurfa,
TeEngine, Series, ExtCtrls,, Chart, ComCtrls, Menus, ComObj, TeeTools,
TeeComma;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;:
TChart;: TSurfaceSeries;: TBitBtn;: TBitBtn;: TPopupMenu;: TMenuItem;:
TMenuItem;: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TChart;:
TLineSeries;: TLineSeries;: TLineSeries;: TRotateTool;: TTeeCommander;:
TTeeCommander;: TTeeCommander;BitBtn1Click(Sender: TObject);N1Click(Sender:
TObject);FormCreate(Sender: TObject);BitBtn2Click(Sender: TObject);
{ Private declarations }
{ Public declarations };:
TForm3;Unit2;
{$R *.dfm}TForm3.BitBtn1Click(Sender:
TObject);.Series1.Clear;.Series2.Clear;.Series3.Clear;.Series4.Clear;.Series5.Clear;.Series6.Clear;.Series7.Clear;;;TForm3.N1Click(Sender:
TObject);.BitBtn1.Click;;TForm3.FormCreate(Sender: TObject);:=BorderIcons-
[biSystemMenu];;TForm3.BitBtn2Click(Sender:
TObject);(Handle,'Help.hlp',sw_restore,4);;.Unit4;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, ExtCtrls,
Math, Menus;= class(TForm): TBitBtn;: TBitBtn;: TImage;: TTimer;: TGroupBox;:
TGroupBox;: TPopupMenu;: TMenuItem;: TMenuItem;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;BitBtn1Click(Sender:
TObject);Timer1Timer(Sender: TObject);FormCreate(Sender:
TObject);ShowHint(Sender: TObject);BitBtn2Click(Sender: TObject);N1Click(Sender:
TObject);N2Click(Sender: TObject);
{ Private declarations }
{$R
*.dfm}TForm4.BitBtn1Click(Sender: TObject);;;TForm4.Timer1Timer(Sender:
TObject);;;;:=R2*cos(f*Pi/180);:=R2*sin(f*Pi/180);:=R3*sin(a*Pi/180);:=R3*cos(a*Pi/180);:=a+30;:=f+10;f=1200
then f:=0;;TForm4.FormCreate(Sender: TObject);.OnHint:=ShowHint;:=0;;TForm4.ShowHint(Sender:
TObject);.StatusBar1.SimpleText:=Application.Hint;;TForm4.BitBtn2Click(Sender:
TObject);(Handle,'Help.hlp',sw_restore,5);;TForm4.N1Click(Sender:
TObject);.Click;;TForm4.N2Click(Sender: TObject);.Click;;.Traktor; /DLL библиотека,;massive1=array[1..100]
of real;massive2=array[1..100,1..100] of
real;Diametr(zMin,zMax,LMin,LMax,My,tg,qg,m,f:real;v,u:integer;var
Dp,DpZ,DpL:massive2;var
DpVer,DpGor,zMass,LMass:massive1);dz,dL,z,L,dz1,dL1:real;,j:integer;:=(zMax-zMin)/(v-1);:=(LMax-LMin)/(u-1);:=zMin;i:=1
to v do[i]:=z;:=LMin;j:=1 to u
do[j]:=L;[i,j]:=(2*My*tg*(2+0.5*z))/(qg*L*(m-f));:=L+dL;;:=z+dz;;:=(zMax-zMin)/2;:=zMin;i:=1
to 3 do:=LMin;j:=1 to u
do[i]:=z;[i,j]:=(2*My*tg*(2+0.5*z))/(qg*L*(m-f));:=L+dL;;:=z+dz1;;:=(LMax-LMin)/2;:=zMin;i:=1
to v do:=LMin;j:=1 to 3
do[j]:=L;[i,j]:=(2*My*tg*(2+0.5*z))/(qg*L*(m-f));:=L+dL1;;:=z+dz;;;Diametr;
{$R *.res}
begin.
Похожие работы на - Расчет диаметра поддерживающего катка, в зависимости от общего количества поддерживающих катков и базы трактора
|