21:03 Скриптові функції - Кермування скриптом | |
Всі скриптові функції Digitals для зручності можна поділити на категорії, в залежності від того, які операції та над якими об'єктами виконує та чи інша функція. В даному розділі наведені функції, які є скелетом самого процесу як написання так і виконання скрипту, дозволяючи ним керувати. Прості повідомлення @Dialog.Message Text - виводить вікно з текстовим повідомленням @Dialog.Information Text - виводить повідомлення з інформацією @Dialog.Error Text - виводить вікно з повідомленням про момилку (з червоним хрестиком і відповідним звуком) @Dialog.Warning Text - те саме, що в попередньому пункті @Break Text - зупиняє роботу скрипту та виводить текстове повідомлення Text (замінити на своє) @Dialog.InfoBox DelayMS Text - виводить вікно з текстовим повідомленням і закриває його через задане число мілісекунд @Beep - подає звуковий сигнал @Dialog.ShowImage URL - виводить вікно із зображенням, отриманим із вказаного URL Діалогові вікна @Dialog.Ask Text [Default=Value Size=WidthInPixels] - виводить вікно з полем для введення тексту і повертає введений користувачем текст. Ключ Default дозволяє задати початкове значення тексту, а ключ Size - ширину вікна в пікселях @Dialog.Memo Header|Text > Text - виводить діалогове вікно для введення тексту (багаторядковий варіант), де Header - його заголовок @Dialog.Confirm Text - виводить діалог запиту підтвердження кнопками ОК і Відміна. Якщо ОК - повертає 1, якщо Отмена - 0. @Dialog.ListSelect Title|Text1|Text2|... - виводить вікно у вигляді списку з можливістю вибрати значення @Dialog.Select Title|Text1|Text2|... - виводить вікно з можливістю вибрати значення @Dialog.CheckList Text - виводить діалогове вікно з можливістю позначати декілька пунктів із списку @Dialog.EditFields Var1=Value:Name,... - виводить діалогове вікно для заповнення/редагування іменованих значень @Dialog.WaitBox Text - виводить немодальне вікно з повідомленням і призупиняє виконання скрипту. Повертає 1 - якщо натиснута клавіша "Продовжити" і 0 - якщо "Перервати". @Dialog.EditRoute Name - виводить спеціальне діалогове вікно для заповнення даних з теодоліта @SingleClickDialogs [1/0] - Умовні оператори та мітки @Goto %Label - передає виконання скрипту на рядок, який йде за вказаною міткою @If Умова then Результат чи дія else Інший результат чи дія - перевіряє чи виконується певна умова, і, якщо вона виконується, то виводить відповідний результат чи робить потрібну дію. @IterateObjects Scriptname - повторює скрипт для кожного об'єкта карти, передаючи його номер, як параметр @IterateSelectedObjects Scriptname - повторює скрипт для кожного виділеного об'єкта карти, передаючи його номер, як параметр @While - виконує в циклі блок команд до вказаної мітки, поки умова істинна
@BreakIf Condition - зупиняє роботу скрипту, якщо умова істинна (або пуста) @Return ResultValue - звершує роботу скрипту і виводить значення результату Прогрес виконання скрипту @Progress.Start Count Title - виводить вікно з індикатором прогресу виконання скрипту. Count - кількість частин прогресу. Title - назва @Progress.StepBy Increment - пересуває повзунок прогресу на величину Increment (по-замовчуванню = 1) @Progress.Canceled - повертає 1, якщо користувач перервав процес кнопкою Відмінити @Progress.Stop - закриває вікно з індикатором прогресу Пауза @Wait IntervalMS - призупиняє виконання скрипту на заданий в мілісекундах інтервал часу Перевірка скрипту @OpenLog - починає запис протоколу процедури виконання скрипту (лог-файл) @CloseLog [Filename] - завершує запис протоколу процедури виконання скрипту, зберігаючи протокол у файл @CheckErrors 0/1 - включає/відключає інтегрований обробник помилок (по-замовчуванню включений). Коли обробник помилок включений, то виконання скрипту буде перервано, як тільки в ньому буде знайдено помилку вхідних параметрів. Спосіб передачі інформації @Map.TempInteger [Value] - цілочислова перемінна, в яку можна записувати будь-яке, пов'язане з картою значення, для обміну між скриптами @Map.TempString [Text] - текстова перемінна, в яку можна записувати будь-яке, пов'язане з картою значення, для обміну між скриптами @ReportGenerator 0/1 - готує дані для Геренарота звітів і копіює в буфер (0 - не запускати генератор) Операції Undo @Map.Undo.StartOperationGroup - починає групу операцій Undo (@Map.Undo.Undo скасує всі операції з моменту початку групи) @Map.Undo.SaveObject Number - запам'ятовує поточну конфігурацію об'єкта в буфер Undo (виклик @Map.Undo.Undo поверне початковий стан після змін) @Map.Undo.SaveSelected - запам'ятовує поточну конфігурацію об'єктів, які виділені і повертає її після змін командою @Map.Undo @Map.Undo.SaveObjectParameters Number - запам'ятовує значення всіх параметрів об'єкта в буфер Undo (виклик @Map.Undo.Undo поверне початковий стан після змін) @Map.Undo.ContinueOperationGroup - продовжує групу операцій Undo (@Map.Undo.Undo скасує всі операції з моменту початку групи) @Map.Undo.Undo - скасовує останні зміни і повертає карту до стану останнього виклику @Map.Undo.StartOperationGroup Запуск у скрипті інших унікальних видів команд @SendChars Text<CR> - посилає текст і спеціальні символи наступному викликаному вікну діалогу
@Map.Object[N].CalculateFormula Formula - дозволяє використовувати в скрипті функції обробки параметрів, як в dmt-шаблонах, без їх створення.
@ExecuteMenu InternalName - виконує будь-який пункт меню чи команду по їх внутрішньому імені. Внутрішнє ім'я команди можна дізнатися, вибравши її у скриптовому вікні зліва. Наприклад, якщо вибрати Шаблон | Лінія, то в самому низу зліва побачимо ім'я цієї команди - TemplateLine. Перевагою використання цієї функції над просто командами є збереження команди для різних мов інтерфейсу програми.
@ExecuteDocument DMTTemplateName - формує звіт по DMT-шаблоні (аналогічно меню Сервіс/Документи). DMTTemplateName - назва шаблону в папці Digitals @SourceMap - повертає номер поточної карти для Сервіс/Документи @ExecuteDocumentFromFile DMTTemplateName - формує звіт по DMT-шаблоні з можливістю викликати шаблон, який знаходиться за межами самої програми. DMTTemplateName - повний шлях до розміщення шаблону @DocumentFromTemplate TemplateName|DocName|Options|Key1=Value1|... - створює документ за шаблоном та замінює змінні в ньому на потрібні значення @Run ExeFilename - запускає зовнішню програму (exe-файл) @RunControlScript Filename [/HIDE] [/SHOW] - запускає контроль карти (Карта - Контроль), використовуючи сценарій із файлу %Library.Name - виконує скрипт, який збережений у файл Name.dsf у папці Library. @DLLExec DLLPath.DLLFunction [Parameters] - виконує функцію користувача, яка може бути написана на будь-якій мові програмування, але повинна бути оголошена в бібліотеці як: F(S: PAnsiChar): PAnsiChar; stdcall; Всі параметри передаються в вигляді показчика на ANSI строку, результат роботи функції - також покажчик на строку однобайтних символів.
В даному прикладі із бібліотеки TestDLL викликається функція AddNumbers, яка сумує цілі чи дробові числа. При сумуванні дробових чисел, розділювач цілої і дробової частини повинен бути вказаний в системі Windows як точка. Для першого прикладу потрібно скачати програму, створену у Delphi і розпакувати на диск d. В динамічних бібліотеках можуть зберігатися форми. Це додаткова можливість створення вікон з необхідними елементами управління, які можуть бути викликані сприптами.
Для цього прикладу потрібно скачати програму, створену у Delphi і розпакувати на диск d.
SQL @SQLConnect ConnectionString - cтворює нове підключення на основі переданих параметрів і робить його активним. Повертає номер створеного підключення @SQLGetActiveConnection - повертає номер активного підключення @SQLExec Statement - виконує SQL-команду @SQLQuery Statement - виконує SQL запит (наприклад Select) використовуючи активне з'єднання @SQLForest [Parameters] - викликає діалог із SQLWod.dll @SQLGetConnectionCount - повертає кількість підключень @SQLSetActiveConnection ConnectionNum - встановлює активним задане підключення, використовуючи 0 для SQL підключення карти @SQLUsername - повертає назву користувача SQL-сервера @SQL.Table.Extract Tablename(field1,...) Condition - видобуває таблицю через SQL Інші функції @HELP - повертає список всіх доступних скриптових функцій @Thread ScriptCommand - запускає скрипт в одному з потоків процесора @ThreadActive Handle - активний потік процесора ПК @WaitForThread - чекає на активний потік процесора
Додаткова зовнішня інформація для скрипту @Computer.Name - повертає мережне ім'я комп'ютера @Computer.UserName - повертає поточне ім'я користувача Windows @Date - повертає поточну дату, встановлену на комп'ютері @DayOfWeek - повертає поточний номер дня тижня, починаючи від неділі @DecimalSeparator - повертає десятковий розділювач (крапка чи кома) із налаштувань Windows @ProgramFolder - повертає шлях до папки, де встановлена програма Digitals
Примітка: жирним шрифтом (напр.@ActivateMap) виділена назва функції, похилим шрифтом (напр.Number) перемінна функції, у квадратних скобках (напр.[MapNumber]) необов'язкова перемінна, яка може вказуватися, а може і не вказуватися.
| |
|
Всього коментарів: 29 | |
Відповідь: Якщо ви про те, як перевести у формат з нулями попереду точки межових знаків, то це можна зробити скриптом:
@Map.DeselectAll @Map.SelectLayer id70001 $NextSMZ=0 $NPP=0 %StartSelMZ $NextSMZ=@Map.NextSelected $NextSMZ @if $NextSMZ=0 then @Goto %EndRuchNum $NPP=$NPP+1 $RealN=@Map.Object[$NextSMZ].Parameter[id7000100] ;$RealN=$NPP $LNZP=@Calc Length("$RealN") $LNZP0=$LNZP @if $LNZP>5 then @Goto %RealN @if $LNZP=0 then $RealN=$NPP $LNZP=@Calc Length("$RealN") @if $LNZP=1 then $RealN=0000$RealN @if $LNZP=2 then $RealN=000$RealN @if $LNZP=3 then $RealN=00$RealN @if $LNZP=4 then $RealN=0$RealN @Map.Object[$NextSMZ].Parameter[ID7000100]=$RealN %RealN @Goto %StartSelMZ %EndRuchNum Якщо ж потрібно, щоб скрипт сам нумерував точки по порядку, то заберіть крапку з комою перед рядком: ;$RealN=$NPP
0
Спам
0
Спам
0
Спам
0
Спам
0
Спам
0
Спам
0
Спам
0
Спам
| |