- •1. Переменные 5
- •2. Массивы 6
- •3. Автономно запрограммированная процедура 6
- •Постановка задачи
- •Инструкция по пользованию программой
- •1. Переменные
- •2. Массивы
- •3. Автономно запрограммированная процедура
- •Описание программы
- •Листинг программы приведен ниже.
- •Последовательность выполнения программы.
- •Процедура ogr
- •Процедура mcch
- •Процедура ctatobr
- •Описание работы с программой
- •В каждом из файлов – даётся краткая характеристика закона распределения
- •Использование буфера обмена (бо)
- •Пояснение как создать необходимый exe-файл к программе «Оболочка» прилагается папка «Создание ехе Процесс».
- •Как создать ProjectOfflineProcess.
- •Файл typedata.Pas
- •Литература
- •Скриншоты программы
Использование буфера обмена (бо)
Обмен данными с внешней процедурой происходит через буфер обмена БО. Порядок обмена происходит по следующей схеме.
За один цикл – одна реализация входного вектора
Пояснения к рисунку.
В программе ОБОЛОЧКА сформированный вектор входных параметров запоминается в БО. Внешняя процедура (счёт процесса) считывает данные из БО, производит расчёт и данные расчёта в виде выходного вектора снова записывает в БО. В программе ОБОЛОЧКА данные из БО считываются и обрабатываются.
Для обмена с БО используется файл CopyToClipboardTextQN.pas. Он содержит процедуры:
procedure TextCopyToClipbrdQ( BXStatProm:raX0_101); // копирование в буфер
procedure TextCopyFromClipbrdN(var BUX:raX); // копирование из буфера
Без ошибок обмен проходит только с использованием задержки. Она формируется в процедуре procedure Delay(Value: Cardinal); - входит в CopyToClipboardTextQN. Pas.
Для задания задержки используется переменная delayZ (описана в unit Global_ID_Data;).
Величина задержки была подобрана опытным путём и равна delayZ = 45;//задержка в 45 миллисекунд для обмена с буфером. При меньших значениях возникают сбои обмена (счёт просто не идёт). В случае возникновения сбоев (на другом компьютере), значение delayZ можно увеличить.
//Пример использования: Delay(delayZ );
//Delay(1000); //Задержка на одну секунду
Пояснение как создать необходимый exe-файл к программе «Оболочка» прилагается папка «Создание ехе Процесс».
В этой папке находятся файлы программы - program ProjectOfflineProcess;
Первое, что надо сделать – создать пустую папку. В папку помещаем
program ProjectOfflineProcess;
uses
Winapi.Windows,
Clipbrd,
Winapi.Messages,
System.SysUtils,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.Buttons,
shellAPi,
System.Math,
System.IOUtils,
Vcl.Grids,
Vcl.StdCtrls,
Vcl.ComCtrls,
Vcl.ExtCtrls,
System.Variants,
typeDATA,
Global_ID_Data,
OfflineProcess,
vektor,
CopyToClipboardTextQN ;
begin
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера
ShetModeli(BXStat ,BUX);
TextCopyToClipbrdN(BUX); // копирование в буфер
end.
Как создать ProjectOfflineProcess.
Запускаем программу (например LAZARUS) и открываем OfflineProcess.PAS. Корректируем этот файл «под себя». Файл содержит три процедуры (пример )
procedure ShetModeli(BX:raX; var BUX:raX );
(вспомогательные procedure ShetRami( BX:raX; var Rr :vekt);
procedure ShetShini(BX:raX; Rressor:vekt; var Rs :vekt);)
Главная – это- procedure ShetModeli(BX:raX; var BUX:raX );
Остальные – вспомогательные, количество их - не ограничено. Они используются в основной procedure ShetModeli. Структура procedure ShetModeli(BX:raX; var BUX:raX ); может быть различной, главное – НАЗВАНИЕ и ПАРАМЕТРЫ ИЗМЕНЯТЬ НЕЛЬЗЯ.
Что касается unit typeDATA; и unit Global_ID_Data. Первая – содержит описания типов переменных, вторая – понятно из названия - названия глобальных переменных. Можно их менять? Можно, желательно добавлять своими, не удаляя , которые есть.
Сохраняем.
Program ProjectOfflineProcess; Сама программа содержит 3 процедуры:
……..
begin
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера
ShetModeli(BXStat ,BUX);
TextCopyToClipbrdN(BUX); // копирование в буфер
end.
(Здесь - число входов Q; число выходов Nvux;)
Как видим, процедура счёта процесса ShetModeli(BXStat ,BUX);
входит в program ProjectOfflineProcess;
Кладём в папку подготовленные файлы
Название папки результатов счёта.rtf
Название входного вектора.rtf
Название выходного вектора.rtf
пусто.rtf
Равномерный шаг.rtf
Равномерное распределение.rtf
Нормальный закон.rtf
beta-распределение.rtf
Гамма-распределение.rtf
Кладём файлы
TYPEDATA.PAS ,
VEKTOR.PAS, (содержит процедуры для работы с векторами и матрицами)
Global_ID_Data.pas,
OfflineProcess.PAS (счёт модели).
Компилируем и создаём EXE – файл.
Листинг program ObchijSTATModeling
program ObchijSTATModeling;
uses
Vcl.Forms,
VEKTOR in 'VEKTOR.PAS',
TYPEDATA in 'TYPEDATA.PAS',
Global_ID_Data in 'Global_ID_Data.pas',
ServisProcess in 'ServisProcess.PAS',
Unit1graf in 'Unit1graf.pas' {Form1Graf},
STATUNITProcess in 'STATUNITProcess .PAS',
Start in 'Start.pas' {Form1Start},
Strexplode in 'Strexplode.pas',
ProOtladka in 'ProOtladka.PAS',
Unit1TT in 'Unit1TT.pas' {Form1},
CopyToClipboardTextQN in 'CopyToClipboardTextQN.pas',
MainStatProcess in 'MainStatProcess.pas' {IdStatMode};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1Start, Form1Start);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm1Graf, Form1Graf);
Application.CreateForm(TIdStatMode, IdStatMode);
Application.Run;
end.