Конвертирование исходного текста программ для станков с ЧПУ из одной системы программирования в другую

Разработка системы автоматического конвертирования исходного текста программ для станков с ЧПУ. Обоснование целесообразности создания такой системы. Критерии экономической эффективности ее функционирования. Оценка безопасности и экологичности проекта.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 23.06.2008
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

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

– относительная влажность воздуха не превышает 75%;

– нет токопроводящей пыли;

– температура не превышает длительное время 30 °С;

– отсутствует возможность одновременного прикосновения человека с имеющими соединение с землей металлическими конструкциями;

– отсутствие доступа к токоведущим частям оборудования;

– нет токопроводящих полов.

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

4.4. Требования к освещению рабочего места и его расчет

4.4.1. Требования к освещению рабочего места

К современному освещению помещений, где работают с вычислительной техникой, предъявляют высокие требования как гигиенического, так и технического характера. Правильно спроектированное и выполненное освещение обеспечивает высокий уровень работоспособности, оказывает положительное психологическое воздействие, способствует повышению производительности труда. Условия деятельности пользователя в системе "человек-машина" связаны с явным преобладанием зрительной информации - до 90% общего объема.

В помещениях с компьютерной техникой применяется совмещенная система освещения/17/. К таким системам предъявляют следующие требования:

– соответствие уровня освещенности рабочих мест характеру выполняемых зрительных работ;

– достаточно равномерное распределение яркости на рабочих поверхностях и в окружающем пространстве;

– отсутствие резких теней, прямой и отраженной блеклости;

– постоянство освещенности во времени;

– оптимальная направленность излучаемого осветительными приборами светового потока;

– долговечность, экономичность, электро- и пожаробезопасность, эстетичность, удобство и простота эксплуатации.

Для искусственного освещения помещений с вычислительной техникой следует использовать главным образом люминесцентные лампы, у которых высокая световая отдача (до 75 лм/Вт и более); продолжительный срок службы (до 10 000 ч), малая яркость светящейся поверхности, близкий к естественному спектр излучения, что обеспечивает хорошую цветопередачу. Наиболее приемлемыми являются люминесцентные лампы белого света и тепло-белого света мощностью 20, 40, 80 Вт.

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

Рекомендуемая освещенность для работы с экраном дисплея составляет 150 лк, а при работе с экраном в сочетании с работой над документами - 300 лк. Рекомендуемая яркость в поле зрения программиста должна лежать в пределах 1:5-1:10.

4.4.2. Расчет освещенности рабочего места

Расчет освещенности рабочего места сводится к выбору системы освещения, определению необходимого числа светильников, их типа и размещения. Процесс работы программиста в таких условиях, когда естественное освещение недостаточно или отсутствует. Исходя из этого, рассчитаем параметры искусственного освещения.

Расчет освещения производится для комнаты площадью 42 м2: длина - 7 м, ширина - 6 м, высота - 3 м. Равномерное освещение горизонтальной рабочей поверхности достигается при определенных отношениях расстояния между центрами светильников L, м (L=1,75*Н) к высоте их подвеса над рабочей поверхностью Н, м (в расчетах Н=Н).

L = 1,75*Н = 1,75*3 = 5,25 м.

Число светильников с люминесцентными лампами (ЛЛ)

, (4.1)

где S - площадь помещения, м;

М - расстояние между параллельными рядами, м.

М0,6 Н

М0,6*3=1,8 принимаем М=2;

;

Для достижения равномерной горизонтальной освещенности светильники с ЛЛ рекомендуется располагать сплошными рядами, параллельно стенам с окнами или длинным сторонам помещения.

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

Для определения количества светильников определим световой поток, падающий на поверхность по формуле:

, (4.2)

где Fp - рассчитываемый световой поток, Лм;

Еn - нормированная минимальная освещенность, Лк (определяется по таблице). Работу программиста, в соответствии с этой таблицей, можно отнести к разряду точных работ, следовательно, минимальная освещенность будет Е = 300 Лк при газоразрядных лампах;

S - площадь освещаемого помещения ( в нашем случае S = 42 м2 );

Z - отношение средней освещенности к минимальной (обычно принимается равным 1.1-1.2 , пусть Z = 1.1);

К - коэффициент запаса, учитывающий уменьшение светового потока лампы в результате загрязнения светильников в процессе эксплуатации (его значение определяется по таблице коэффициентов запаса для различных помещений и в нашем случае К = 1.5);

з - коэффициент использования, (выражается отношением светового потока, падающего на расчетную поверхность, к суммарному потоку всех ламп и исчисляется в долях единицы; зависит от характеристик светильника, размеров помещения, окраски стен и потолка, характеризуемых коэффициентами отражения от стен (Рс) и потолка (Рп)), значение коэффициентов Рс и Рп определим по таблице зависимостей коэффициентов отражения от характера поверхности: Рс=30%, Рп=50%. Значение з определим по таблице коэффициентов использования различных светильников. Для этого вычислим индекс помещения по формуле:

, (4.3)

где S - площадь помещения, S = 42 м2;

h - расчетная высота подвеса, h = 3 м;

A - ширина помещения, А = 6 м;

В - длина помещения, В =7 м.

Подставив значения получим:

Зная индекс помещения I, Рс и Рп, по таблице находим з = 0.3

Подставим все значения в формулу для определения светового потока F:

Лм

Учитывая, что в светильнике по 4 лампы, световой поток одной лампы будет равен . Для освещения выбираем люминесцентные лампы типа ЛБ20, световой поток которых Fл = 1180 Лм.

(i) Рассчитываем потребляемую мощность осветительной установки в соответствии с формулой:

, (4.4)

где р - мощность лампы, Вт;

N - число светильников, шт. N=4;

n - число ламп в светильнике; для ЛЛ n=4.

P=20*4*4=320 Вт=0,32 кВт.

Рассчитаем действительное освещение.

В рабочем помещении имеется 4 светильников, в каждом из которых используется по 4 лампы ЛДЦ20. Рассчитаем световой поток:

Ф= 820*4*4 = 3280 лк;

Рассчитаем значение нормированной освещенности:

Е = (Ф*N*з)/(S*Z*K) = 227 лк ? 300 лк.

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

4.5. Параметры микроклимата, загрязнение воздуха рабочей зоны вредными веществами

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

Температура воздуха является одним из основных параметров, характеризующих тепловое состояние микроклимата. Суммарное тепловыделение в помещении поступает от следующих источников:

– ЭВМ;

– вспомогательного оборудования;

– приборов освещения;

– людей;

– внешних источников.

Наибольшее количество теплоты выделяют ЭВМ и вспомогательное оборудование. Средняя величина тепловыделения от компьютеров колеблется до 100 Вт/м2 . Тепловыделения от приборов освещения также велики. Удельная величина их составляет 35 Вт/м2. При этом, чем больше уровень освещенности, тем выше удельные величины тепловыделений. Количество теплоты от обслуживающего персонала незначительно. Оно зависит от числа работающих в помещении, интенсивности работы, выполняемой человеком.

К внешним источникам поступления теплоты относят теплоту, поступающую через окна от солнечной радиации, приток теплоты через непрозрачные ограждения конструкций. Интенсивность этих источников зависит от расположения здания, ориентации по частям света, цветовой гаммы и прочее/15/.

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

Таблица 4.4

Параметры микроклимата производственных помещений

Параметры

Значения параметров

оптимальные

допустимые

Температура

20-22 °С

17-22 °С

Относительная влажность

40-60 %

до 75%

Скорость движения воздуха

0,1 м/с

не более 0,3 м/с

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

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

4.6. Пожаробезопасность при работе с компьютером

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

Пожары в помещении, в котором находится ЭВМ, представляют особую опасность, так как сопряжены с большими материальными потерями. Площадь помещения, в котором ведется проектирование, невелика и составляет 8 м2. Как известно пожар может возникнуть при взаимодействии горючих веществ, окисления и источников зажигания. В помещении присутствуют все три основные фактора, необходимые для возникновения пожара. Горючими компонентами являются: строительные материалы для акустической и эстетической отделки помещений, двери, полы, бумага, изоляция кабелей и др.

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

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

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

Одной из наиболее важных задач пожарной защиты является защита строительных помещений от разрушений и обеспечение их достаточной прочности в условиях воздействия высоких температур при пожаре. Учитывая высокую стоимость электронного оборудования, а также категорию его пожарной опасности, здания, в которых предусмотрено размещение ЭВМ, должны быть 1 и 2 степени огнестойкости.

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

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

Помещение, в котором производится разработка данного проекта, необходимо оборудовать средствами оповещения о пожаре, а также средствами для тушения пожара.

Электрические установки представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведении профилактических работ человек может коснуться частей, находящихся под напряжением. Специфическая опасность электроустановок: токоведущие проводники, корпуса стоек ЭВМ и прочего оборудования, оказавшегося под напряжением в результате повреждения (пробоя) изоляции, не подают каких-либо сигналов, которые предупреждают человека об опасности. Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека. Разрядные токи статического электричества чаще всего возникают при прикосновении к любому из элементов ЭВМ. Такие разряды опасности для человека не представляют, но кроме неприятных ощущений они могут привести к выходу из строя ЭВМ. Для снижения величины возникающих зарядов статического электричества покрытие технологических полов следует выполнить из однослойного поливинилхлоридного антистатического линолеума.

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

ЗАКЛЮЧЕНИЕ

В ходе дипломной работы было разработано ПО, позволяющее решать задачу автоматизированного пересчёта программного кода для станков с ЧПУ с использованием различных систем программирования. Программа была написана на языке высокого уровня Object Pascal в среде разработки Borland Delphi 7.

В процессе разработки были досконально исследованы системы программирования станков с ЧПУ, такие как (Вм, Маяк, Sinumerik). Результаты тестирования показали что, программа верно пересчитывает программный код в различные системы программирования при этом устраняет ошибки допущенные программистом, а так же имеет много вспомогательных настроек. Что значительно упрощает человеко-машинное взаимодействие и повышает время разработки программного кода и ввод его в эксплуатацию.

СПИСОК ЛИТЕРАТУРЫ

1. Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. - М.: Наука, 1979. - 720с.

2. Никита Культин Delphi 6. Программирование на Object Pascal. - СПб.: БХВ - Петербург, 2002. - 528 с.: ил.

3. http://tnr.kulichki.com/techedit/te.html - TechEdit 2.1.1 относится к разряду специального ПО. С его помощью можно автоматизировать процесс разработки программ для ЧПУ.

4. Гофман В. Э., Хомоненко А. Д. Delphi 6. - СПБ.: БХВ - Петербург, 2002. - 1152 с.: ил

5. ГОСТ 12.0.002-80. Система стандартов безопасности труда. Термины и определения. - М.: ИПК Издательство стандартов, 2002

6. СанПиН 2.2.4. 548 - 96. Гигиенические требования к микроклимату производственных помещений. - М.: Госкомсанэпиднадзор, 1996.

7. ГОСТ 12.1.006-84. ССБТ. Электромагнитные поля радиочастот. Допустимые уровни на рабочих местах и требования к проведению контроля - М.: Издательство стандартов, 1985.

8. СанПиН 2.2.2. 542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы. - М.: Госкомсанэпиднадзор, 1996.

9. ГОСТ 12.1.038-83. Система стандартов безопасности труда. Электробезопасность. Термины и определения. - М.: Издательство стандартов, 1983.

10. ГОСТ 12.1.004-91. Система стандартов безопасности труда. Пожарная безопасность. Общие положения. - М.: Издательство стандартов, 1991.

11. ГОСТ 12.1.003-83. ССБТ. Шум. Общие требования безопасности (с изменениями по И-1-III-89).

12. Почерняев С.В., Килин И.В., Сенилов М.А. Методические указания по дипломному проектированию. - Ижевск: Издательство ИжГТУ, 1994.

13. ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. - М.: Издательство стандартов, 1991

14. ГОСТ 19.105-78 ЕСПД. Общие требования к программным документам. - М.: Издательство стандартов, 1988

15. ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению. - М.: Издательство стандартов, 1988

16. ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению. - М.: Издательство стандартов, 1988

17. ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению. - М.: Издательство стандартов, 1988

18. ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению. - М.: Издательство стандартов, 1988

ПРИЛОЖЕНИЕ 1

ТЕКСТ ПРОГРАММЫ

Файл Project1.dpr

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {AboutBox},

Unit5 in 'Unit5.pas' {Form5},

Unit6 in 'Unit6.pas' {Form6};

{$R *.res}

begin

Application.Initialize;

Application.Title := 'Наладчик 1.6.1';

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TForm6, Form6);

Form1.Label3.Caption:= 'Всего строк';

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TAboutBox, AboutBox);

Application.Run;

end.

Файл Unit1.pas

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Menus, ExtCtrls, ToolWin, ComCtrls, ImgList, Printers,

DBCtrls, Registry, IniFiles;

type

TForm1 = class(TForm)

memo1: TMemo;

MainMenu1: TMainMenu;

OpenDialog1: TOpenDialog;

FontDialog1: TFontDialog;

PrinterSetupDialog1: TPrinterSetupDialog;

PrintDialog1: TPrintDialog;

fayl: TMenuItem;

Nastroyki: TMenuItem;

fond: TMenuItem;

Printery: TMenuItem;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ImageList1: TImageList;

Parametry: TMenuItem;

ToolButton2: TToolButton;

SaveDialog1: TSaveDialog;

ToolButton3: TToolButton;

Label1: TLabel;

Help: TMenuItem;

Versia: TMenuItem;

Vyhod: TMenuItem;

Save: TMenuItem;

Open: TMenuItem;

Print: TMenuItem;

ToolButton4: TToolButton;

ToolButton6: TToolButton;

NomerKadra: TCheckBox;

Probel: TCheckBox;

Pustostr: TCheckBox;

PanelSostoyaniya: TStatusBar;

Indikator: TProgressBar;

ToolButton9: TToolButton;

ReplaceDialog1: TReplaceDialog;

Cancel: TButton;

Obrabotka: TButton;

Label2: TLabel;

Label3: TLabel;

Panel1: TPanel;

Panel2: TPanel;

ToolButton5: TToolButton;

ToolButton8: TToolButton;

procedure ButPrinterClick(Sender: TObject);

procedure ButPechatClick(Sender: TObject);

procedure fondClick(Sender: TObject);

procedure PrinteryClick(Sender: TObject);

procedure PechatClick(Sender: TObject);

procedure ButParametrClick(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure FormCreate(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure ParametryClick(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure VersiaClick(Sender: TObject);

procedure VyhodClick(Sender: TObject);

procedure SaveClick(Sender: TObject);

procedure OpenClick(Sender: TObject);

procedure PrintClick(Sender: TObject);

procedure CancelClick(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject);

procedure ReplaceDialog1Replace(Sender: TObject);

procedure ObrabotkaClick(Sender: TObject);

procedure memo1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

st = ' Параметры: '; // текст в строке состояния + в модуле 2

Code_Begin = 100;

var

Form1: TForm1;

Code_My, nach, oshibka, m, uslovie: Integer;

Code_Reg: longint;

proverka_sushesvovania_ini: byte;

reestra, reestrc, reestrb, reestrMy_Code, reestrReg_Code: integer;

reestrversia: string[20];

nach_period, Hac: integer;

Stroka: TStrings;

memo1mod: boolean;

I, J, I_sled, J_sled: real;

X_nast, X_pred, X_sled, Y_nast, Y_pred, Y_sled: real;

Z, A, Uvmmayak, K : real;

implementation

uses Unit2, Unit3, Unit5;

{$R *.dfm}

procedure TForm1.ButPrinterClick(Sender: TObject);

begin

PrinterSetupDialog1.Execute

end;

procedure TForm1.ButPechatClick(Sender: TObject);

begin

PrintDialog1.Execute

end;

procedure TForm1.FondClick(Sender: TObject);

begin

if FontDialog1.Execute then

Memo1.Font:= FontDialog1.Font;

end;

procedure TForm1.PrinteryClick(Sender: TObject);

begin

PrinterSetupDialog1.Execute

end;

procedure TForm1.PechatClick(Sender: TObject);

begin

ToolButton3Click(Sender);

end;

procedure TForm1.ButParametrClick(Sender: TObject);

begin

Form2.ShowModal;

end;

Procedure TForm1.FormResize( Sender: TObject); // Изменение размера формы

begin

Memo1.Left:= 10; // Положение слева

Memo1.Top:= 60; // Положение сверху

Memo1.Width:= Form1.ClientWidth-130; // Ширина

Memo1.Height:= Form1.ClientHeight-100; // Высота

NomerKadra.Left:= Form1.ClientWidth-15-NomerKadra.Width;

Probel.Left:= Form1.ClientWidth-15-Probel.Width;

Pustostr.Left:= Form1.ClientWidth-15-Pustostr.Width;

Cancel.Left:= Form1.ClientWidth-20-Cancel.Width;

Obrabotka.Left:= Form1.ClientWidth-20-Obrabotka.Width;

Label2.Left:= Form1.ClientWidth-40-Cancel.Width;

Label3.Left:= Form1.ClientWidth-40-Cancel.Width;

Panel1.Left:= Form1.ClientWidth-18-Panel1.Width;

Panel2.Left:= Form1.ClientWidth-18-Panel2.Width;

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if Memo1mod then // Если поле Мемо1 изменилось

begin

CanClose:= MessageDlg(' Содержимое редактора изменилось '#10#13' Хотите сохранить данные?', mtConfirmation,[mbYes, mbNo], 0) = mrYes;

if CanClose then ToolButton2Click(Sender);

CanClose:= true;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

const

Reg_Code = 1234567890;

My_Code = 469103;

var

RegIni: TRegistry;

Ini: TIniFile;

data: TDatetime;

begin

DateSeparator:= '.';

DecimalSeparator:= '.';

ShortDateFormat:= 'dd/mm/yyyy';

memo1mod:= false;

reestrMy_Code:= 0;

reestrReg_Code:= 0;

data:= Date; // получаем сегодняшнюю дату

nach_period:= Trunc(data);

Ini:= TIniFile.Create('Nal.ini');

proverka_sushesvovania_ini:= Ini.ReadInteger('START', 'CountStart', 0);

if proverka_sushesvovania_ini = 0 then

begin

ini.WriteInteger('START', 'CountStart', 1);

ini.WriteDate('DateBegin', 'DateBegin', data); //в формате дд.мм.гггг

ini.WriteDate('DateEnd', 'DateEnd', data + 30); //в формате дд.мм.гггг

ini.WriteString('Versia', 'Versia', Application.Title);

ini.WriteInteger('CodeBegin', 'CodeBegin', Code_Begin);

ini.WriteInteger('Hac','Hac', nach_period);

end

else

begin

Code_My:= ini.ReadInteger('Code_My', 'Code_My', 0);

Code_Reg:= ini.ReadInteger('Code_Reg', 'Code_Reg', 0);

Hac:= Ini.ReadInteger('Hac','Hac',0);

end;

Ini.Free;

Form1.Caption:= Application.Title;

Form1.memo1.Clear;

Form1.PanelSostoyaniya.Panels[0].Text:= st + ' Не обрабатывать ';

Form1.Panel1.Caption:= '0';

Form1.Panel2.Caption:= '0';

RegIni:= TRegistry.Create;

RegIni.RootKey:= HKEY_LOCAL_MACHINE;

RegIni.OpenKey('Software\Naladchik', true);

if not RegIni.KeyExists('a') then // Если нет этого ключа то прописываем.

begin

RegIni.CreateKey('a');

RegIni.WriteInteger('a', 100);

RegIni.WriteString('Versia', Application.Title);

RegIni.WriteInteger('b', nach_period); // в формате 00000

RegIni.WriteInteger('c', nach_period + 30); // в формате 00000

RegIni.CloseKey;

RegIni.Free;

end;

RegIni:= TRegistry.Create;

RegIni.RootKey:= HKEY_LOCAL_MACHINE;

RegIni.OpenKey('Software\Naladchik', false);

reestra:= RegIni.ReadInteger('a');

reestrversia:= RegIni.ReadString('Versia');

reestrb:= RegIni.ReadInteger('b');

reestrc:= RegIni.ReadInteger('c');

if proverka_sushesvovania_ini = 2 then

begin

reestrMy_Code:= RegIni.ReadInteger('d');

reestrReg_Code:= RegIni.ReadInteger('e');

end;

RegIni.CloseKey;

RegIni.Free;

if Hac > nach_period then nach_period:= Hac // защита от перевода даты

else Hac:= nach_period;

Ini:= TIniFile.Create('Nal.ini');

ini.WriteInteger('Hac', 'Hac', Hac);

ini.Free;

// Code_My и Code_Reg из ini файла

if (Code_My = My_Code) and (Code_Reg = Reg_Code) and (reestrMy_Code = My_Code) and (reestrReg_Code = Reg_Code)

then Form1.Caption:= Application.Title + '(Зарегистрированная версия)'

else

begin

if reestrc > nach_period then

Form1.Caption:= Application.Title + ' (Осталось '+IntToStr(reestrc - nach_period)+' дней)';

if reestrc <= nach_period then

begin

ShowMessage('Демонстрационный период закончен' + #13 + 'За регистрацией обратитесь к разработчику'+#13'dimasoft1@mail.ru');

Halt(1);

end;

end;

end;

procedure TForm1.ToolButton1Click(Sender: TObject);

var

kol: integer;

begin

Indikator.Position:= 0;

Form1.PanelSostoyaniya.Panels[1].Text:= '';

Memo1.Clear;

if OpenDialog1.Execute then

begin

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

label1.Caption:= OpenDialog1.FileName;

kol:= Memo1.Lines.Count;

Panel2.Caption:= '0';

Panel1.Caption:= IntToStr(kol - 1);

end;

Form2.PC_VM.Enabled:= true;

Form2.PC_MAYAK.Enabled:= true;

Form2.VM_MAYAK.Enabled:= true;

Form2.MAYAK_VM.Enabled:= true;

Form2.FormActivate(Sender);

end;

procedure TForm1.ParametryClick(Sender: TObject);

begin

Form2.ShowModal;

end;

procedure TForm1.ToolButton2Click(Sender: TObject);

begin

if SaveDialog1.Execute then

begin

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

Memo1.Modified:= false;

end;

end;

procedure TForm1.ToolButton3Click(Sender: TObject); // Печать

var

line: System.TextFile;

i: integer;

begin

if PrintDialog1.Execute then

begin

AssignPrn(line);

rewrite(line);

Printer.Canvas.Font:= Memo1.Font;

for i:= 0 to memo1.Lines.Count-1 do writeln(line,' ', Memo1.Lines[i]);

System.CloseFile(line);

end;

end;

procedure TForm1.VersiaClick(Sender: TObject);

begin

AboutBox.ShowModal;

end;

procedure TForm1.VyhodClick(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.SaveClick(Sender: TObject);

begin

ToolButton2Click(Sender);

end;

procedure TForm1.OpenClick(Sender: TObject);

begin

ToolButton1Click(Sender);

end;

procedure TForm1.PrintClick(Sender: TObject);

begin

ToolButton3Click(Sender);

end;

procedure TForm1.CancelClick(Sender: TObject);

begin

Form1.Close;

end;

procedure NaytiKoordinatu(kadr: string; koordinata: char; var poluchenaya: string);

var

p : integer;

poz_10: string[100];

per : string[10];

r: real;

begin

per:=' ';

kadr:= Concat(kadr, ' ');

nach:= pos(koordinata,kadr);

nach:= Succ(nach);

poz_10:= copy(kadr, nach, 100);

val(poz_10,r,oshibka);

for p:=1 to oshibka - 1 do

per[p]:= poz_10[p];

if poz_10 = ' ' then oshibka:= 1;

poluchenaya:= TrimRight(per);

end;

function DobavitTochku( f: string): string; // Добавляет точку, если её нет

begin

if pos('.', f) = 0

then f:= Concat(f, '.');

Result:= f;

end;

procedure Podhod_G41_G42_radius;

begin // Х и Y уже найдены

if pos('G3', Stroka.Strings[Succ(m)]) <> 0 then

begin

if (I > 0) and (J >= 0) then

begin

I_sled:= 1;

J_sled:= -1;

exit;

end;

if (I < 0) and (J <= 0) then

begin

I_sled:= -1;

J_sled:= 1;

exit;

end;

if (I <= 0) and (J > 0) then

begin

I_sled:= 1;

J_sled:= 1;

exit;

end;

if (I >= 0) and (J < 0) then

begin

I_sled:= -1;

J_sled:= -1;

exit;

end;

end;

if pos('G2', Stroka.Strings[Succ(m)]) <> 0 then

begin

if (I >= 0) and (J > 0) then

begin

I_sled:= -1;

J_sled:= 1;

exit;

end;

if (I <= 0) and (J < 0) then

begin

I_sled:= 1;

J_sled:= -1;

exit;

end;

if (I < 0) and (J >= 0) then

begin

I_sled:= -1;

J_sled:= -1;

exit;

end;

if (I > 0) and (J <= 0) then

begin

I_sled:= 1;

J_sled:= 1;

exit;

end;

end;

end;

// Преобразует строку, удаляет и вставляет подстроку ВМ

function preobrazovanieVM( vhod_v_preobrazovanie: real ;var kadr: string): string;

var

stroka: string[10];

begin

delete(kadr,nach,oshibka-1);

stroka:= FloatToStr(vhod_v_preobrazovanie); // Преобразуем в число строку

insert(stroka, kadr, nach);

end;

// Преобразует строку, удаляет и вставляет подстроку МАЯК

function preobrazovanieMAYAK( vhod_v_preobrazovanie: real ;var kadr: string): string;

var

stroka: string[10];

begin

delete(kadr,nach,oshibka-1);

if vhod_v_preobrazovanie <> 0 then

begin

stroka:= FloatToStrF(vhod_v_preobrazovanie, fffixed, 12, 3); // Преобразуем в число строку

vhod_v_preobrazovanie:= StrToFloat(stroka); // Был глюк при конвертации

stroka:= FloatToStr(vhod_v_preobrazovanie); // Сейчас вроде работает

stroka:= DobavitTochku(stroka); // Добавляет точку, если её нет

end

else stroka:= '0'; // вставляем без точки

insert(stroka, kadr, nach);

end;

procedure Podhod_G41_G42_line;

var

str: String;

begin

str:= stroka.Strings[Succ(m)];

if Pos('X', str) <> 0 then

begin

NaytiKoordinatu(str, 'X', str);

X_sled:= StrToFloat(str);

end

else

begin

if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then

X_sled:= X_nast / 1000

else

X_sled:= X_nast;

end;

str:= stroka.Strings[Succ(m)];

if Pos('Y', str) <> 0 then

begin

NaytiKoordinatu(str, 'Y', str);

Y_sled:= StrToFloat(str);

end

else

begin

if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then

Y_sled:= Y_pred / 1000

else

Y_sled:= Y_nast;

end;

if (Form2.PC_VM.Checked) or (Form2.MAYAK_VM.Checked) then

begin

X_sled:= X_sled * 1000;

Y_sled:= Y_sled * 1000;

X_sled:= X_sled - X_nast;

Y_sled:= Y_sled - Y_nast;

end

else

begin

X_sled:= X_sled - X_nast;

Y_sled:= Y_sled - Y_nast;

end;

end;

function FindVstavki(koordinata: char; kadr: string): integer;

begin

case koordinata of

'X': begin

if pos('Y', kadr) <> 0 then Result:= pos('Y', kadr)

else if pos('I', kadr) <> 0 then Result:= pos('I', kadr)

else if pos('J', kadr) <> 0 then Result:= pos('J', kadr)

else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

else Result:= Length(kadr) + 1;

end;

'Y': begin

if pos('I', kadr) <> 0 then Result:= pos('I', kadr)

else if pos('J', kadr) <> 0 then Result:= pos('J', kadr)

else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

else Result:= Length(kadr) + 1;

end;

'I': begin

if pos('J', kadr) <> 0 then Result:= pos('J', kadr)

else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

else Result:= Length(kadr) + 1;

end;

'J': begin

if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

else Result:= Length(kadr) + 1;

end;

else

Result:= Length(kadr) + 1;

end;

end;

procedure TForm1.ObrabotkaClick(Sender: TObject);

label

metka;

var

kol, buf: integer;

Proc, proci, u: integer;

vyh: string;

PolChisla_1Proc, uvel: real;

bufer: string;

Priz_pusto_memo: boolean;

procedure DelProbel(var kadr: string); // Удаление пробелов

var

k: integer;

begin

while pos(' ', kadr) <> 0 do

begin

k:= pos(' ', kadr);

delete(kadr, k, 1);

end;

end;

procedure pustostroka;

begin

stroka.Delete(m); // Удаляем пустую строку

Dec(kol); // Уменьшаем кол-во строк на 1

Dec(m); // Уменьшаем на одну стороку

end;

procedure nomerkadra(var kadr: string);

var

error, nach, x: integer;

poz_N7: string [10];

begin

poz_N7:= ' ';

nach:= pos('N',kadr); // Номер позиции 'N'

if nach <> 0 then // Позиция найдена

begin

Inc(nach); // Наращиваем на 1

poz_N7:= copy(kadr, nach, 10);

val(poz_N7,x,error); // проверяем на ошибку

if error = 1 then

else

begin

delete(kadr,nach,error-1); // Удаляем старое значение

Inc(buf); // Наращиваем кадр на 1

insert(IntToStr(buf), kadr, nach); // Вставляем новое число

end;

end;

end;

Procedure PC_MAYAK(var kadr: string);

var

I_est: boolean;

st: string;

s: string[10];

begin

if (pos('%', kadr) <> 0) or (pos('$', kadr) <> 0) then exit;

I_est:= False;

if (pos('I',kadr) <> 0) or (pos('J',kadr) <> 0) then I_est:= true;

if pos('X',kadr) <> 0 then

begin

NaytiKoordinatu(kadr,'X', vyh);

if oshibka <> 1 then

begin

X_nast:= StrToFloat(vyh);

PreobrazovanieMayak(X_nast, kadr); // не было точки

end;

end

else

if I_est then // Добавление Х Если нет

begin

uslovie:= FindVstavki('X', kadr);

s:= FloatToStr(X_nast);

if X_nast <> 0 then s:= DobavitTochku(s);

insert(Concat('X', s), kadr, uslovie);

end;

if pos('Y',kadr) <> 0 then

begin

NaytiKoordinatu(kadr,'Y', vyh);

if oshibka <> 1 then

begin

Y_nast:= StrToFloat(vyh);

PreobrazovanieMayak(Y_nast, kadr) // не было точки

end;

end

else

if I_est then // Добавление Y Если нет

begin

uslovie:= FindVstavki('Y', kadr);

s:= FloatToStr(Y_nast);

if Y_nast <> 0 then s:= DobavitTochku(s);

insert(Concat('Y',s), kadr, uslovie);

end; // Подходы

if (pos('G42', kadr) <> 0) or (pos('G41', kadr) <> 0) then

begin

try

s:= Stroka.Strings[Succ(m)]; // ошибка нет строки вообще

except // так не должно быть это ошибка оператора

on EStringListError do // добавляем пустую строку и исключаем ошибку

stroka.Add('');

end;

if pos('X', kadr) = 0 then

begin // Вставка Х и Y если нет

uslovie:= FindVstavki('X', kadr);

s:= FloatToStr(X_nast); // В позиции X Y I J F M

if X_nast <> 0 then s:= DobavitTochku(s);

Insert('X' + s, kadr, uslovie);

end;

if pos('Y', kadr) = 0 then

begin

uslovie:= FindVstavki('Y', kadr);

s:= FloatToStr(Y_nast);

if Y_nast <> 0 then s:= DobavitTochku(s);

Insert('Y' + s, kadr, uslovie);

end;

if (pos('I', Stroka.Strings[Succ(m)]) <> 0) and (pos('J', Stroka.Strings[Succ(m)]) <> 0)

then

begin

Naytikoordinatu(Stroka.Strings[Succ(m)], 'I', st);

I:= StrToFloat(st);

Naytikoordinatu(Stroka.Strings[Succ(m)], 'J', st);

J:= StrToFloat(st);

Podhod_G41_G42_radius;

J:= J + Y_nast;

if (I_sled = -1) and (J > 0) then J:= -J; // ЛОГИЧЕСКИЙ ПЕРЕСЧЁТ

if (I_sled = 1) and (J < 0) then J:= -J;

I:= I + X_nast;

if(J_sled = -1) and (I > 0) then I:= -I;

if(J_sled = 1) and (I < 0) then I:= -I;

if pos('J', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieMayak(I, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(I), kadr, uslovie);

end;

if pos('I', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieMayak(J, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(J), kadr, uslovie);

end;

X_pred:= X_nast;

Y_pred:= Y_nast;

exit;

end

else

begin

Podhod_G41_G42_line; // ЛИНЕЙНЫЕ ПОДХОДЫ РАСЧЁТ

if pos('I', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieMayak(X_sled, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(X_sled) + '.', kadr, uslovie);

end;

if pos('J', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieMayak(Y_sled, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(Y_sled) + '.', kadr, uslovie);

end;

exit;

end;

end;

uslovie:= pos('I',kadr); // расчёт радиусов

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'I',vyh);

if oshibka = 1 then

else

begin

I:= StrToFloat(vyh);

I:= X_pred + I;

preobrazovanieMAYAK(I,kadr);

end;

end;

uslovie:= pos('J',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'J',vyh);

if oshibka = 1 then

else

begin

J:= StrToFloat(vyh);

J:= Y_pred + J;

preobrazovanieMAYAK(J,kadr);

end;

end;

X_pred:= X_nast;

Y_pred:= Y_nast;

end;

Function VM_MAYAK(var kadr: string): string;

var

I_est: boolean;

s, st: string;

begin

if (pos('%', kadr) <> 0) or (pos('$', kadr) <> 0) then exit;

I_est:= False;

if (pos('I',kadr) <> 0) or (pos('J',kadr) <> 0) then I_est:= true;

uslovie:= pos('X',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'X', vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

X_nast:= StrToFloat(vyh) / 1000;

preobrazovanieMAYAK(X_nast,kadr);

end;

end

else

if I_est = true then // Добавление Х Если нет

begin

uslovie:= pos('Y',kadr);

insert('X'+ vyh, kadr, uslovie);

end;

uslovie:= pos('Y',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'Y', vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

Y_nast:= StrToFloat(vyh) / 1000;

preobrazovanieMAYAK(Y_nast,kadr);

end;

end

else

if I_est = true then // Добавление Y Если нет

begin

uslovie:= pos('I',kadr);

insert('Y' + vyh, kadr, uslovie);

end;

if (pos('G42', kadr) <> 0) or (pos('G41', kadr) <> 0) then

begin

try

s:= Stroka.Strings[Succ(m)]; // ошибка нет строки вообще

except

on EStringListError do // добавляем пустую строку и исключаем ошибку

stroka.Add('');

end;

if pos('X', kadr) = 0 then

begin // Вставка Х и Y если нет

uslovie:= FindVstavki('X', kadr);

s:= FloatToStr(X_nast); // В позиции X Y I J F M

if X_nast <> 0 then s:= DobavitTochku(s);

Insert('X' + s, kadr, uslovie);

end;

if pos('Y', kadr) = 0 then

begin

uslovie:= FindVstavki('Y', kadr);

s:= FloatToStr(Y_nast);

if Y_nast <> 0 then s:= DobavitTochku(s);

Insert('Y' + s, kadr, uslovie);

end;

if (pos('I', Stroka.Strings[Succ(m)]) <> 0) and (pos('J', Stroka.Strings[Succ(m)]) <> 0)

then

begin

Naytikoordinatu(Stroka.Strings[Succ(m)], 'I', st);

I:= StrToFloat(st);

Naytikoordinatu(Stroka.Strings[Succ(m)], 'J', st);

J:= StrToFloat(st);

Podhod_G41_G42_radius;

J:= J / 1000;

J:= J + Y_nast;

if (I_sled = -1) and (J > 0) then J:= -J;

if (I_sled = 1) and (J < 0) then J:= -J;

I:= I / 1000;

I:= I + X_nast;

if(J_sled = -1) and (I > 0) then I:= -I;

if(J_sled = 1) and (I < 0) then I:= -I;

if pos('J', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieMayak(I, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(I), kadr, uslovie);

end;

if pos('I', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieMayak(J, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(J), kadr, uslovie);

end;

X_pred:= X_nast;

Y_pred:= Y_nast;

exit;

end

else

begin // Линейный подход

st:= Stroka.Strings[Succ(m)];

uslovie:= Pos('X', st);

if uslovie <> 0 then

begin

NaytiKoordinatu(st, 'X', st);

X_sled:= StrToFloat(st) / 1000;

X_sled:= X_sled - X_nast;

end

else X_sled:= 0; // Если нет в кадре то 0

st:= stroka.Strings[Succ(m)];

uslovie:= Pos('Y', st);

if uslovie <> 0 then

begin

NaytiKoordinatu(st, 'Y', st);

Y_sled:= StrToFloat(st) / 1000;

Y_sled:= Y_sled - Y_nast;

end

else Y_sled:= 0;

if pos('I', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieMayak(X_sled, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(X_sled) + '.', kadr, uslovie);

end;

if pos('J', kadr) <> 0 then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieMayak(Y_sled, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(Y_sled) + '.', kadr, uslovie);

end;

exit;

end;

end;

uslovie:= pos('Z',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'Z', vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

Z:= StrToFloat(vyh) / 1000;

preobrazovanieMAYAK(Z,kadr);

end;

end;

uslovie:= pos('I',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'I',vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

I:= StrToFloat(vyh) / 1000;

I:= X_pred + I;

preobrazovanieMAYAK(I,kadr);

end;

end;

uslovie:= pos('J',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'J',vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

J:= StrToFloat(vyh) / 1000;

J:= Y_Pred + J;

preobrazovanieMAYAK(J,kadr);

end;

end;

uslovie:= pos('U',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'U', vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

Uvmmayak:= StrToFloat(vyh) / 1000;

preobrazovanieMAYAK(Uvmmayak,kadr);

end;

end;

uslovie:= pos('K',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'K', vyh);

if oshibka = 1 then

else

begin

vyh:= TrimRight(vyh); // Удаляем лишние пробелы справа

K:= StrToFloat(vyh) / 1000;

preobrazovanieMAYAK(K,kadr);

end;

end;

X_pred:= X_nast;

Y_pred:= Y_nast;

end;

Function MAYAK_VM(var kadr: string): string;

var

I_est: boolean;

uslovie: integer;

strok: string[10];

s, st: string;

begin

if pos('%', kadr) <> 0 then exit;

if pos('$', kadr) <> 0 then exit;

I_est:= False;

uslovie:= pos('I',kadr);

if uslovie <> 0 then I_est:= true;

uslovie:= pos('X',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'X',vyh);

if oshibka = 1 then

else

begin

X_nast:= StrToFloat(vyh) * 1000;

X_nast:= Int(X_nast); // Отбрасываем дробную часть

preobrazovanieVM(X_nast,kadr);

end;

end

else

if I_est then

begin

uslovie:= pos('Y',kadr);

strok:= FloatToStr(X_pred); // Преобразуем в число строку

insert('X' + strok, kadr, uslovie);

end;

uslovie:= pos('Y',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'Y',vyh);

if oshibka = 1 then

else

begin

Y_nast:= StrToFloat(vyh) * 1000;

Y_nast:= Int(Y_nast); // Отбрасываем дробную часть

preobrazovanieVM(Y_nast,kadr);

end;

end

else

if I_est then

begin

uslovie:= pos('I',kadr);

strok:= FloatToStr(Y_pred); // Преобразуем в число строку

insert('Y' + strok, kadr, uslovie);

end;

if (pos('G42', kadr) <> 0) or (pos('G41', kadr) <> 0) then

begin

try

s:= Stroka.Strings[Succ(m)]; // ошибка нет строки вообще

except

on EStringListError do // добавляем пустую строку и исключаем ошибку

stroka.Add('');

end;

if pos('X', kadr) = 0 then

begin // Вставка Х и Y если нет

uslovie:= FindVstavki('X', kadr); // В позиции X Y I J F M

Insert('X' + FloatToStr(X_nast), kadr, uslovie);

end;

if pos('Y', kadr) = 0 then

begin

uslovie:= FindVstavki('Y', kadr);

Insert('Y' + FloatToStr(Y_nast), kadr, uslovie);

end;

if (pos('I', Stroka.Strings[Succ(m)]) <> 0) and (pos('J', Stroka.Strings[Succ(m)]) <> 0)

then

begin

Naytikoordinatu(Stroka.Strings[Succ(m)], 'I', st);

I:= StrToFloat(st);

Naytikoordinatu(Stroka.Strings[Succ(m)], 'J', st);

J:= StrToFloat(st);

J:= J * 1000;

I:= I * 1000;

I:= I - X_nast;

J:= J - Y_nast;

Podhod_G41_G42_radius;

if (I_sled = -1) and (J > 0) then J:= -J;

if (I_sled = 1) and (J < 0) then J:= -J;

if(J_sled = -1) and (I > 0) then I:= -I;

if(J_sled = 1) and (I < 0) then I:= -I;

if pos('J', kadr) <> 0

then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieVM(I, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(I), kadr, uslovie);

end;

if pos('I', kadr) <> 0

then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieVM(J, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(J), kadr, uslovie);

end;

X_pred:= X_nast;

Y_pred:= Y_nast;

exit;

end

else

begin

Podhod_G41_G42_line;

if pos('I', kadr) <> 0

then

begin

NaytiKoordinatu(kadr, 'I', st);

PreobrazovanieVM(X_sled, kadr);

end

else

begin

uslovie:= FindVstavki('I', kadr);

Insert('I' + FloatToStr(X_sled), kadr, uslovie);

end;

if pos('J', kadr) <> 0

then

begin

NaytiKoordinatu(kadr, 'J', st);

PreobrazovanieVM(Y_sled, kadr);

end

else

begin

uslovie:= FindVstavki('J', kadr);

Insert('J' + FloatToStr(Y_sled), kadr, uslovie);

end;

exit;

end;

end;

uslovie:= pos('I',kadr);

if uslovie <> 0 then

begin

NaytiKoordinatu(kadr,'I',vyh);


Подобные документы

  • Модели конвертирования образовательного контента. Основные объекты разрабатываемой автоматизированной системы. Диаграмма деятельностей для прецедента "Извлечение структуры документа". Структурная модель системы конвертирования контента, модель интерфейса.

    реферат [3,6 M], добавлен 30.03.2011

  • Особенности графической среды разработки и Visual C++. Разработка проекта с использованием функций библиотеки MFC для удаления комментариев из текстов программ, автоматического выбора языка, на котором написана утилита и сохранения результата в файл.

    курсовая работа [22,7 K], добавлен 07.11.2010

  • Классификация программ обработки текстовых документов. Общие принципы оформления издания. Правила набора текста. Системы распознавания текста (OCR). Комплекс программного обеспечения для настольных издательских систем. Примеры текстовых редакторов.

    презентация [75,0 K], добавлен 13.08.2013

  • Цели, задачи и виды, методы и направления обработки информации, современные системы. Проблемы, связанные с компьютерными способами обработки информации. Конвертирование текста из DJVU в PDF, преобразование из PDF в WORD, редактирование полученного текста.

    дипломная работа [1,8 M], добавлен 18.06.2011

  • Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.

    курсовая работа [63,7 K], добавлен 12.12.2010

  • Построение компилятора с языка высокого уровня как одного из элементов системы программирования. Разработка компилятора ассемблера, модификация базы данных исходного макета. Загрузчик, эмулятор, отладчик. Использование Flex и Bison для программирования.

    курсовая работа [599,0 K], добавлен 04.11.2014

  • Обзор существующих моделей параллельного программирования, основные средства отладки эффективности MPI-программ, общие проблемы всех средств трассировки. Создание экспериментальной системы отладки эффективности MPI-программ, этапы работы анализатора.

    дипломная работа [767,2 K], добавлен 14.10.2010

  • Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.

    отчет по практике [1,3 M], добавлен 19.04.2016

  • Степень переносимости исходного кода между различными платформами. Первый язык программирования высокого уровня, имеющий транслятор. Программа Fortran, ее версии, отличия от других программ. Составление программ на языке программирования Fortran.

    курсовая работа [45,5 K], добавлен 04.06.2014

  • Перевод - процесс создания на основе исходного текста на одном языке равноценного ему в коммуникативном отношении текста на другом языке, требования к обеспечению его эквивалентности. Машинные технологии перевода; характеристика систем Translation Memory.

    презентация [347,8 K], добавлен 06.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.