Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

inf_meth_Delphi

.pdf
Скачиваний:
2
Добавлен:
12.05.2015
Размер:
1.55 Mб
Скачать

Rtemp,Dtemp,Btemp,Ltemp,L1temp,L2temp:real;

i,j:integer;

. . . . . . . . . . . . .

begin

L:=180;

R:=60;

D:=130;

B:=100;

L1:=120; L2:=sqrt(sqr(L-R)+sqr(L1));

end.

Rocker position function

Функция положения коромысла

Rocker position angle can be identified using the following parameters:

crank rotation angle– ;

crank radius– R;

distance between supports – L;

rocker length– L1;

connecting rod length – L2.

Для однозначного определения углаположения коромысла функция должна получать для расчета такие параметры:

угол поворота кривошипа – ;

радиус кривошипа – R;

расстояние между опорами – L;

длину коромысла – L1;

длину шатуна – L2.

 

 

 

 

 

 

 

 

 

R

 

FFi

 

 

L

 

 

L1

 

 

 

 

L2

 

 

 

 

 

 

 

 

Fig. 2.4. Structure of

 

 

Рис. 2.4. Структура функции

rocker position function

 

 

 

положения коромысла

Caption of rocker position function should be described in interface section of Main unit, and function should be described in implementation section.

Заголовок функции положения коромысла должен быть описан в интерфейсной секции модуля Main, а сама функция – в секции реализации.

interface

function Ffi(alfa,R,L,L1,L2:real):real; implementation

function Ffi(alfa,R,L,L1,L2:real):real; begin

Lk:=sqrt(sqr(R)+sqr(L)-2*R*L*cos(alfa)); Ffi:=Pi-(arcsin(R*sin(alfa)/Lk)+

arccos((sqr(L1)+sqr(Lk)-sqr(L2))/(2*L1*Lk)));

end;

Function parameters allow determining rocker position (rotation angle). First function line is assigned to calculate Lk value, and the second one is assigned to determine function value. After creating a function one should specify input parameter and result units. In this case angular values (alfa) are set in radians and linear values (R,L,L1,L2) are set in millimeters. Function result (fi) is an angular value in radians.

В функцию передаются параметры, позволяющие однозначно определить положение (угол поворота) коромысла. Первой строкой функции рассчитывается значение Lk, а второй – непосредственно значение функции. При создании функции обязательно следует четко определить, в каких единицах передаются значения параметров в нее, и в каких единицах функция выдает результат. В нашем случае угловые величины (alfa) передаются в радианах, линейные (R,L,L1,L2 – в мм). Результат функции (fi) – угловая величина в радианах.

21

Transmission ratio function

To identify the transmission ratio u the function should receive the same parameters as rocker position function. Schematically the function can be displayed as follows.

Функция передаточного отношения

Для однозначного определения передаточного отношения u функция должна получать такие же параметры, как и функции положения коромысла. Схематически функцию можно отобразить так.

 

 

 

 

 

 

 

 

 

 

 

R

 

FU

 

 

 

L

 

 

 

u

L1

 

 

 

 

 

L2

 

 

 

 

 

 

 

 

 

 

Fig. 2.5. Structure of

 

 

Рис. 2.5. Структура функции

transmission ratio function

 

 

передаточного отношения

Caption of rocker position function should be described in interface section of Main unit, and function is described in implementation section.

Заголовок функции положения коромысла должен быть описан в интерфейсной секции модуля Main, а сама функция – в секции реализации.

interface

function Fu(alfa,R,L,L1,L2:real):real; implementation

function Fu(alfa,R,L,L1,L2:real):real; begin

Lk:=sqrt(sqr(R)+sqr(L)-2+R*L*cos(alfa)); mju:=arctan(-R*sin(alfa)/(L-R*cos(alfa))+

arccos((sqr(L1)+sqr(Lk)-sqr(L2))/(2*L1*Lk))); Fu:=R*sin(alfa-mju)/(L1*sin(Ffi(alfa,R,L,L1,L2)-mju));

end;

Transmission ratio function requires the same parameters as the previous one which is invoked inside the function body. Transmission ratio has no dimension.

Функция передаточного отношения требует передачи в нее тех же параметров, что и предыдущая функция, вызов которой, кстати, происходит внутри тела функции. Передаточное отношение не имеет размерности.

Structure of main menu

Solution of the second task should result in creating simple menu system which allows invoking single system units of main program.

Menu structure is described in fig. 2.6:

Структура главного меню

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

Предлагается следующая структура меню (рис. 2.6).

 

Calculation

 

 

Sketches

 

 

Simulation

 

Diagrams

 

 

Help

 

Exit

 

Расчеты

 

 

Эскизы

 

 

Движение

 

Движение

 

 

Помощь

 

Выход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Data Input

 

 

 

 

Simplified

 

 

 

 

 

 

 

About Program

 

Исходные данные

 

 

 

 

Упрощенный

 

 

 

 

 

 

О программе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Results

 

 

 

 

Full

 

 

 

 

 

 

 

About Author

 

Результаты

 

 

 

 

Полный

 

 

 

 

 

 

 

Об авторе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fig. 2.6. Structure of main menu

 

 

 

Рис. 2.6. Структура главного меню

22

It is necessary to place component

MainMenu1 of TMainMenu on Delphi form for making menu structure (fig. 2.6).

Further, one should go to menu creation mode by double clicking of left button and input caption of corresponding items (Caption property).

To add icons to menu items, you should create image collection (ImageList1), attach it with main menu (Images) and point out the image which should be inserted to corresponding menu item.

For procesing of event of choosing a determine point of menu, item requires double click of left button on this menu item that results in generating program code fragment. The form of a specific unit shoud be invoked between operators “begin” and “end” as follows:

Для создания приведенной на рис. 2.6 структуры меню в среде Delphi необходимо на форме разместить компонент MainMenu1

класса TMainMenu.

Далее двойным нажатием левой кнопки мышки следует перейти в режим создания меню и ввести надписи соответствующих пунктов (свойство Caption).

При желании добавить к соответствующим пунктам меню пиктограммы, следует сначала создать коолекцию катринок (компонент ImageList1), подсоединить ее к главному меню (свойство Images) и указать какую катринку следует поставить в соответствие каждому из пунктов меню.

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

procedure TfmMain.N2Click(Sender: TObject); begin

fmInputData.ShowModal;

end;

 

Procedure can be “read” in the following

«Прочитать» процедуру можно так.

way: clicking of item 2 of main menu (N2) on

Нажатие (Click) пункта 2 главного меню (N2)

main form (TfmMain) will result in displaying of

на главной форме (TfmMain) приведет к

form (ShowModal) for data input (fmInputData).

отображению (ShowModal) формы для ввода

 

данных (fmInputData).

2.4.3 Design of unit “DataInput”

DataInput unit is assigned to provide correct data input. There are two types of data: values typed with the keyboard (L, R, B, L1) and calculated value (D, L2). After all data are input and processed checking information is output on the screen. Operation is completed by saving both new and previous values.

English interface of input data unit is introduced in fig. 9.

Input data unit should process some independent events:

Form activation (during calling from main unit);

Pressing button “Update checking information” (BitBtn1);

Pressing button “Apply new parameters” (BitBtn2);

Pressing button “Exit without saving values” (BitBtn3);

2.4.3 Проектирование модуля

DataInput

Основное назначение модуля DataInput

– обеспечить удобный и безошибочный ввод исходных данных. Отметим, что данные разделяются на такие, которые следует вводить (L, R, B, L1) и такие, которые рассчитываются (D, L2). После ввода и расчета всех данных на экран следует вывести контрольную информацию. Завершение работы возможно с принятем новых знaчений и с сохранением предыдущих.

Интерфейс английского варианта модуля ввода данных представлен на рис. 9.

Модуль ввода данных должен обрабатывать несколько независимых событий:

Активизация формы (при вызове из главного модуля);

Нажатие на кнопку «Обновить контрольную информацию» (BitBtn1);

Нажатие на кнопку «Принять новые параметры» (BitBtn2);

Нажатие на кнопку «Выйти без сохранения значений» (BitBtn3);

23

Fig. 2.7. Interface of data input

Рис. 2.7. Интерфейс ввода данных

Form activation event

Событие активизации формы

Form activation procedure code is stated

Ниже приведен код процедуры

активизации формы:

below:

 

procedure TfmInputData.FormActivate(Sender: TObject); begin

Rtemp:=R; RestoreDefaultR; Dtemp:=D;

Btemp:=B; RestoreDefaultB;

Ltemp:=L; RestoreDefaultL;

L1temp:=L1; RestoreDefaultL1; L2temp:=L2;

end;

First, when a form appears, temporary

При появлении

перед

пользоателем

variables (Rtemp, Dtemp, Btemp, Ltemp, L1temp,

формы сначала

во временных переменных

L2temp) save current values of corresponding

(Rtemp, Dtemp, Btemp, Ltemp, L1temp, L2temp)

parameters. For those parameters which values

сохраняются

текущие

значения

соот-

are entered from a keyboard, embedded

ветствующих

параметров.

Для

тех

procedure of restoring default values is applied

параметров, значения которых вводятся с

(RstoreDefault…). Default value restoring

клавиатуры, применяется вложеная процеду-

procedure code for variable L and comments are

ра восстановления значений

по умолчнию

listed below.

(RestoreDefault…). Ниже приведен код проце-

 

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

 

для переменной L и комментарии к ней.

 

procedure RestoreDefaultL; begin

L:=Ltemp; fmInputData.Edit1.Text:=FloatToStr(L); end;

Procedure provides identity of current and temporary value of parameters and after that it is displayed in a suitable form component

(Edit1.Text).

Процедура обеспечивает идентичность текущего и временного значений параметров, после чего отображает его в соответствующем компоненте формы (Edit1.Text).

24

Input data update

Обновление введенной информации

 

Event of input data update takes place when pressing button BitBth1. Before checking information output it is necessary to examine it (procedure CheckData), recalculate all values (procedure RecalculateData) and clean a form (Memo1.Lines.Clear).

Full English text of input data update procedure is listed below.

Событие обновления введенной информации возникает при нажатии на кнопку BitBth1. Перед непосредственным выводом контрольной информации ее необходимо проверить (процедура CheckData), пересчитать все значения (процедура RecalculateData) и очистить поле вывода от предыдущих результатов (Memo1.Lines.Clear)

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

procedure TfmInputData.BitBtn1Click(Sender: TObject); begin

CheckData;

RecalculateData;

Memo1.Lines.Clear; Memo1.Lines.Add('Checking information:');

Memo1.Lines.Add('Distantion between axis L = '+ FloatToStrF(L,ffFixed,6,2)+' mm');

Memo1.Lines.Add('Height of supports location  = '+

FloatToStrF(B,ffFixed,6,2)+' mm'); Memo1.Lines.Add('Crank radius R = '+

FloatToStrF(R,ffFixed,6,2)+' mm'); Memo1.Lines.Add('Crank diameter D = '+

FloatToStrF(D,ffFixed,6,2)+' mm'); Memo1.Lines.Add('Rocker length L1 = '+

FloatToStrF(L1,ffFixed,6,2)+' mm'); Memo1.Lines.Add('Connecting rod length L2 = '+

FloatToStrF(L2,ffFixed,6,2)+' mm');

end;

Procedure CheckData consists of four equal blocks, each block controls correct input of one variable. English text of such block is listed below.

try

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

L:=StrToFloat(fmInputData.Edit1.text); if (L<100) or (L>250)

then begin

ShowMessage(' L must be in 100...250 mm'); RestoreDefaultL;

end except

ShowMessage('Input number!'); RestoreDefaultL;

end;

Structure try…except…end allows correct data input (between try and except) and displaying a message of incorrect data input (Input number!). Structure try…except…end allows control type mapping only but not range of values. Therefore, the final control block contains the following operations.

Структура try…except…end; позволяет попробовать корректно ввести данные (часть между try и except) и выдать сообщение о некорректном вводе (Input number!). Отметим, что структура try…except…end; позволяет проконтролировать только соответствие типов, но не контроллировать диапазон значений. Поэтому окончательно блок Контроля вода содержит следующие действия.

25

First variable L attempts to set component Edit1 value of input data form. In case of a successful input we check a range of input value, and if input value exceeds the bounds of this range, the following message is displayed (' L must be in 100...250 mm') and default value is restored. If user tried to input data which are not a number, other message will be displayed ('Input number!') and default value will be restored.

Procedure RecalculateData is responsible for transferring values of forming components to corresponding variables and calculating dependent values. Procedure text is stated below.

Сначала значению переменной L предпринимается попытка присвоить значение компонента Edit1 формы ввода данных. Если эта попытка выявилась удачной (пользователь ввел число, а не просто набор символов) мы контролируем диапазон введенного значения и, если введенное значение выходит за пределы этого диапазона, выдаем на экран соответсвующее сообщение (' L must be in 100...250 mm') и

восстанавливаем значение по умолчанию. Если же пользователь пытался ввести совсем не число, будет выведено другое сообщение ('Input number!') и также восстановлено значение по умолчанию.

Процедура RecalculateData представляет собой передачу значений от элементов формы ввода соответствующим переменным и расчет зависимых значений. Текст процедуры приведен ниже.

procedure RecalculateData; begin

L:= StrToFloat(fmInputData.Edit1.text); B:= StrToFloat(fmInputData.Edit3.text); R:= StrToFloat(fmInputData.Edit2.text); D:=2*R+10;

L1:= StrToFloat(fmInputData.Edit4.text); L2:=sqrt(sqr(L-R)+sqr(L1));

end;

Reception of input data

Принятие введенной информации

 

Event of input data reception takes place when pressing button BitBth2 and consists of invoking of two procedured previously described

– input data checkup (procedure CheckData) and recalculation (procedure RecalculateData).

Procedure code is listed below.

Событие принятия введенной информации возникает при нажатии на кнопку BitBth2 и состоит в вызове двух ранее описанных процедур – проверки введенных значений (процедура CheckData) и пересчета

(процедура RecalculateData).

Код процедуры принятия введенной информации приведен ниже.

procedure TfmInputData.BitBtn2Click(Sender: TObject); begin

CheckData;

RecalculateData; end;

Input data failure

Отказ от введенной информации

Событие отказа от введенной

Event of input data failure takes place

when pressing button BitBth3 and consists of

информации возникает при нажатии на

кнопку BitBth3 и состоит в восстановлении

restoring of current values using temporary ones.

текущих значений по временным.

 

Procedure code is listed below.

Код процедуры отказа от введенной

информации приведен ниже.

 

procedure TfmInputData.BitBtn3Click(Sender: TObject); begin

R:=Rtemp;

D:=Dtemp;

B:=Btemp;

L:=Ltemp;

L1:=L1temp;

L2:=L2temp; end;

26

Thus, DataInput unit elements allow organizing correct data input for a specific task.

Таким образом, совокупность элементов модуля DataInput позволяет организовать кооректный ввод исходных данных для рассматриваемого варината задания.

2.4.4 Design of unit ”OutputResult”

Unit OutputResult is assigned for output of information about mechanism elements using 12 points (in 30 degrees of crank rotation), calculation and output of boundary values of mechanism parameters, saving results to text file.

English interface of result output unit is shown on fig. 2.8.

Fig. 2.8. Interface of result output

2.4.4 Проектирование модуля

OutputResult

Назначение модуля OutputResult – обеспечить вывод на форму информации об элементах механизма по 12 точкам (через 30 градусов вращения кривошипа), расчет и вывод предельных значений параметров механизма, запись результов в текстовый файл.

Интерфейс английского варианта модуля вывода резльтатов представлен на рис. 2.8.

Рис. 2.8. Интерфейс вывода результатов

Result output unit should process several independent events:

Form activation (when it is invokedg in main unit);

Pressing button BitBth1 Save results to file and exit”;

Pressing button BitBth2 Exit wothout saving

Form activation event

Form activation procedure code is listed below:

Модуль вывода результатов должен обрабатывать несколько независимых событий:

Активизация формы (при вызове из главного модуля);

Нажатие на кнопку «Сохранить результаты в файле и выйти» (BitBtn1);

Нажатие на кнопку «Выход без сохранения» (BitBtn2);

Событие активизации формы

Ниже приведен код процедуры активизации формы:

procedure TfmOutputResult.FormShow(Sender: TObject); var

i:integer;

27

begin

{1}

with StringGrid1 do begin

Cells[0,0]:=' Alfa'; Cells[1,0]:=' Fi'; Cells[2,0]:=' U'; for i:=0 to 12 do begin

alfa:=i*30;

Cells[0,i+1]:=FloatToStrF(alfa,ffFixed,6,2);

fi:=FFi(alfa*Pi/180,R,L,L1,L2)*180/Pi;

Cells[1,i+1]:=FloatToStrF(fi,ffFixed,6,2); u := FU(alfa*Pi/180,R,L,L1,L2);

Cells[2,i+1]:=FloatToStrF(u,ffFixed,6,2); end; {for} end; {with}

{2}

with StringGrid2 do begin

ColWidths[0]:=220;

CalcMinMax;

Cells[0,0]:=' Crank rotation angle - alfa'; Cells[0,1]:=' - minimal (degrees) '; Cells[1,1]:=FloatToStrF(alfaMin,ffFixed,6,2); Cells[0,2]:=' - maximal (degrees) '; Cells[1,2]:=FloatToStrF(alfaMax,ffFixed,6,2); Cells[0,3]:=' Rocker rotation angle - fi'; Cells[0,4]:=' - minimal (degrees) '; Cells[1,4]:=FloatToStrF(fiMin*180/Pi,ffFixed,6,2); Cells[0,5]:=' - maximal (degrees) '; Cells[1,5]:=FloatToStrF(fiMax*180/Pi,ffFixed,6,2); Cells[0,6]:=' Transmission ratio - u'; Cells[0,7]:=' - minimal '; Cells[1,7]:=FloatToStrF(uMin,ffFixed,6,2); Cells[0,8]:=' - maximal '; Cells[1,8]:=FloatToStrF(uMax,ffFixed,6,2);

end;{with}

end;{ procedure TfmOutputResult.FormShow }

First, one should fill in a table in the left corner of a form. There is a cycle (parameter i) responsible for output of numerical values, in which a value of crank rotation angle (alfa) is calculated, further the value of rocker rotation angle (fi) and transmission ratio (u) is calculated. The variable values after conformance of dimensions (degrees-radians) and transformation into values of string type, are transferred to corresponding cells (Cells) of the table (StringGrid1).

The second part of procedure consists of output of boundary values in the table in the right corner of the form (StringGrid12). Before being output boundary values should be determined (internal procedure CalcMinMax, procedure code is listed below).

Draw attention that maximum values on the right of a table can slightly exceed the values on the left of a table, and minimum values can be rather less respectively. This can take place if only extreme(s) of a function conforms to crank rotation angle, not divisible by 30.

При появлении перед пользователем формы сначала происходит заполнение таблицы в левой части формы. Основу вывода численных значений составляет цикл (параметр i), в котором рассчитывается значение угла поворота кривошипа (alfa), затем рассчитывается значение угла поворота коромысла (fi) и передаточного отношения (u). Значения этих переменных после согласования размерностей (градусырадианы) и преобразования в строковые значения, передаются соответствующим ячейкам (Cells) такблицы (StringGrid1).

Вторая часть процедуры предсталяет собой вывод предельных значений в таблицу в правой части формы (StringGrid12). Однако перед выводом предельных значений следует их найти (внутренняя процедура CalcMinMax) код которой приведен ниже.

Обратите внимание на то, что максимальные значения в таблице справа могут несколько превышать, а минимальные значения быть меньшими результатов, которые отображаются в таблице слева. Это может быть лишь в том случае, если экстремум (-мы) функции соответствуют углу поворота кривошипа, не кратным 30.

28

procedure CalcMinMax; var i:integer;

begin

alfaMin:=0; alfaMax:=360; fiMin:=9999; fiMax:=-9999; uMin:=9999; uMax:=-9999; for i:= 0 to 360 do begin

alfa:=i;

fi:=FFi(alfa*Pi/180,R,L,L1,L2); if fi<fiMin then fiMin:=fi;

if fi>fiMax then fiMax:=fi;

u := FU(alfa*Pi/180,R,L,L1,L2); if u<uMin then uMin:=u;

if u>uMax then uMax:=u; end;

end;

Boundary

values

are

determined

Расчет предельных значений выпол-

according to the scheme, first primary boundary

няется по схеме, когда сначала инициируются

values are determined, and current values of

начальные предельные значения, а дальше в

correspondent parameters are calculated and

цикле рассчитываются текущие

значения

compared to boundary values afterwards.

соответствующих величин и проводится их

However, if a current value is less the minimum

сравнивание с предельными. В случае, когда

or more than maximum boundary value, it value

текущее значение

оказывается

меньшим

becomes minimum or maximum value

минимального

или

больше максимального

respectively. Algorithm of

boundary values

предельного

значения,

соответствующим

search is stated in fig. 2.9.

 

 

предельным

значением

присваиваются

 

 

 

 

текущие значения. На рис. 2.9 приведен

 

 

 

 

алгоритм поиска предельных значений.

Initiation

Min, Max,uMin,uMax

Cycle from 0 to

360; iteration is 1

Forming of array elements

ZnAlfa, ZnFi, ZnU

< Min

Yes

 

 

Min :=

 

No

 

 

 

 

 

 

 

 

 

 

 

 

 

< Max

Yes

Max :=

 

No

 

 

 

 

 

 

 

 

 

 

 

 

u < uMin

Yes

uMin := u

 

No

 

 

 

 

 

 

 

 

 

 

 

 

u < uMax

Yes

uMax := u

 

 

 

 

 

No

Fig. 2.9. Algorithm of deterimination of boundary values

Saving results to file

Results are saved to text file by pressing button “Save results to file and exit” (BitBtn1).

English code variant procedure which describes event of pressing button BitBtn1 is stated below.

Инициирование

Min, Max,uMin,uMax

Цикл от 0 до 360

с шагом 1

Формирование элементов массивов ZnAlfa, ZnFi, ZnU

 

 

 

 

< Min

Да

Min :=

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

< Max

Да

Max :=

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

u < uMin

Да

uMin := u

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

u < uMax

Да

uMax := u

 

 

 

 

 

Нет

Рис. 2.9. Алгоритм нахождения предельных значений

Сохранение результатов в файле

Действия, приводящие к сохранению результатов в текстовом файле, возникают при нажатии на кнопку «Сохранить результаты в файле и выйти» (BitBtn1).

Код английского варианта процедуры обработки события нажатия клавиши BitBtn1.

29

procedure TfmOutputResult.BitBtn1Click(Sender: TObject); var

t:TextFile; i:integer; begin

if SaveDialog1.Execute then begin AssignFile(t,SaveDialog1.FileName); Rewrite(t);

writeln(t,'Checking information:'); writeln(t,'Distantion between axis L = '+

FloatToStrF(L,ffFixed,6,2)+' ìì'); writeln(t,'Height of supports location  = '+

FloatToStrF(B,ffFixed,6,2)+' ìì'); writeln(t,'Crank radius R = '+

FloatToStrF(R,ffFixed,6,2)+' ìì'); writeln(t,'Crank diameter D = '+

FloatToStrF(D,ffFixed,6,2)+' ìì'); writeln(t,'Rocker length L1 = '+

FloatToStrF(L1,ffFixed,6,2)+' ìì'); writeln(t,'Connecting rod length L2 = '+

FloatToStrF(L2,ffFixed,6,2)+' ìì');

writeln(t,' Mechanizm parameters per 30 degrees'); writeln(t,' alfa fi u');

for i:=0 to 12 do begin alfa:=i*30;

fi:=FFi(alfa*Pi/180,R,L,L1,L2)*180/Pi; u := FU(alfa*Pi/180,R,L,L1,L2);

writeln(t,FloatToStrF(alfa,ffFixed,6,2),' ', FloatToStrF(fi,ffFixed,6,2),' ', FloatToStrF(u,ffFixed,6,2));

end; {for}

writeln(t,' Limits of mechanizm parameters '); writeln(t,' Crank rotation angle - alfa'); writeln(t,' - minimal (degrees) ',

FloatToStrF(alfaMin,ffFixed,6,2)); writeln(t,' - maximal (degrees) ',

FloatToStrF(alfaMax,ffFixed,6,2)); writeln(t,' Rocker rotation angle - fi'); writeln(t,' - minimal (degrees) ',

FloatToStrF(fiMin*180/Pi,ffFixed,6,2)); writeln(t,' - maximal (degrees) ',

FloatToStrF(fiMax*180/Pi,ffFixed,6,2)); writeln(t,' Transmission ratio - u');

writeln(t,' - minimal ',FloatToStrF(uMin,ffFixed,6,2)); writeln(t,' - maximal ',FloatToStrF(uMax,ffFixed,6,2)); CloseFile(t)

end;

end;

To make a dialog for data saving it is necessary to place the component SaveDialog1 in a form. Logic condition of dialog (SaveDialog1.Execute) execution can be processed at the beginning of procedure; file variable t is linked with file name (SaveDialog1.FileName) and the file is opened for information rewrite.

Further procedures of information saving to file take place (writeln(t,…);) which conform to checking information output blocks of input data procedure, value table output blocks in every 30 degrees, and a table with boundary values of result output procedure.

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

сохранения файла, связать файловую переменную t с именем файла, возвращенным в результате диалога (SaveDialog1.FileName)

и открыть указанный файл для записи информации (rewrite).

Далее следуют процедуры записи информации в файл (writeln(t,…);), которые по своей структуре соответствуют блокам

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]