Prompt: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == '''Prompt''' - оператор запроса ввода от пользователя. Запрашивает значения для с...»)
 
 
Строка 2: Строка 2:
 
== Описание ==
 
== Описание ==
 
'''Prompt''' - оператор запроса ввода от пользователя. Запрашивает значения для строки, массива или числа.
 
'''Prompt''' - оператор запроса ввода от пользователя. Запрашивает значения для строки, массива или числа.
<br>Для подсказки, содержащей больше одного слова, используйте кавычки.
+
<br>Для подсказки, содержащей больше одного слова, используйте кавычки.
&lt;br>Для строки: в переменную('''$a''') записывается введенная строка. Если выбор не был сделан (нажатие ок без ввода строки) - записывается пустая строка.
+
<br>Для строки: в переменную('''$a''') записывается введенная строка. Если выбор не был сделан (нажатие ок без ввода строки) - записывается пустая строка.
&lt;br>Для числа: в переменную('''#a''') записывается номер выбора. Если выбор не был сделан (нажатие ок без ввода строки) - записывается ноль.
+
<br>Для числа: в переменную('''#a''') записывается номер выбора. Если выбор не был сделан (нажатие ок без ввода строки) - записывается ноль.
&lt;br>Для массива: в массив('''%a''') записываются все значения для каждого элемента. Если элемент был выбран - единица, если нет - ноль.
+
<br>Для массива: в массив('''%a''') записываются все значения для каждого элемента. Если элемент был выбран - единица, если нет - ноль.
  
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
&lt;br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
  Prompt ([!caption] &lt;line1> [line2] [line3] [line4] [line5] ([timeout]))
+
  Prompt ([!caption] <line1> [line2] [line3] [line4] [line5] ([timeout]))
 
Где:
 
Где:
&lt;br>'''[!caption]''' - необязательный параметр. Подсказка, начинается с '!'.
+
<br>'''[!caption]''' - необязательный параметр. Подсказка, начинается с '!'.
&lt;br>'''&lt;line1> [line2] [line3] [line4] [line5]''' - набор значений для выбора. Одно или больше.
+
<br>'''<line1> [line2] [line3] [line4] [line5]''' - набор значений для выбора. Одно или больше.
&lt;br>'''([timeout])''' - таймаут (время для выбора значения), указывается в секундах в круглых скобках.
+
<br>'''([timeout])''' - таймаут (время для выбора значения), указывается в секундах в круглых скобках.
 
  set $a prompt (подсказка)   
 
  set $a prompt (подсказка)   
 
  set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)   
 
  set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)   
Строка 20: Строка 20:
  
 
'''set $a prompt''' - Запрос на ввод значения. Возвращает в переменную введенное значение.
 
'''set $a prompt''' - Запрос на ввод значения. Возвращает в переменную введенное значение.
&lt;br>'''set #b prompt''' - Запрос на выбор значения. возвращает номер выбранного значения, либо 0. Выбор подтверждается закрытием окна.
+
<br>'''set #b prompt''' - Запрос на выбор значения. возвращает номер выбранного значения, либо 0. Выбор подтверждается закрытием окна.
&lt;br>'''set %с prompt''' - Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0.  
+
<br>'''set %с prompt''' - Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0.  
&lt;br>
+
<br>
&lt;br>Положение окна функции 'prompt':
+
<br>Положение окна функции 'prompt':
 
  promptpos_x
 
  promptpos_x
 
  promptpos_y  
 
  promptpos_y  
Строка 84: Строка 84:
  
 
[[Hint]]
 
[[Hint]]
&lt;br>[[Promptpos x]]
+
<br>[[Promptpos x]]
  
 
== История развития ==
 
== История развития ==
  
 
'''2.14'''
 
'''2.14'''
&lt;br>Добавил возможность из скрипта запросить значение у пользователя.  
+
<br>Добавил возможность из скрипта запросить значение у пользователя.  
  'set $a prompt (&lt;подсказка>)'
+
  'set $a prompt (<подсказка>)'
 
Запрос на ввод значения. возвращает в переменную введенное значение.  
 
Запрос на ввод значения. возвращает в переменную введенное значение.  
  'set #b prompt (&lt;выбор1> &lt;выбор2> [выбор3] [выбор4] [выбор5])'
+
  'set #b prompt (<выбор1> <выбор2> [выбор3] [выбор4] [выбор5])'
 
Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна..
 
Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна..
  
 
'''2.20'''
 
'''2.20'''
&lt;br>Поправил внешний вид формочки 'prompt' и добавил кнопочку 'Ок'.
+
<br>Поправил внешний вид формочки 'prompt' и добавил кнопочку 'Ок'.
&lt;br>Поправил 'prompt' на предмет соответствия заявленному функционалу, и добавил возможность выбора нескольких значений:
+
<br>Поправил 'prompt' на предмет соответствия заявленному функционалу, и добавил возможность выбора нескольких значений:
 
  set $a prompt (подсказка)
 
  set $a prompt (подсказка)
 
Запрос на ввод значения. возвращает в переменную введенное значение.  
 
Запрос на ввод значения. возвращает в переменную введенное значение.  
Строка 111: Строка 111:
  
 
'''2.21'''
 
'''2.21'''
&lt;br>Добавил в 'prompt' таймаут ожидания в секундах. Указывается после всех параметров в круглых скобках:
+
<br>Добавил в 'prompt' таймаут ожидания в секундах. Указывается после всех параметров в круглых скобках:
 
  'set #b prompt (ch1 ch2 ch3 [(таймаут)])'
 
  'set #b prompt (ch1 ch2 ch3 [(таймаут)])'
 
Исправил незначительную ошибку в функции 'prompt'. Не обнулялся массив результатов.
 
Исправил незначительную ошибку в функции 'prompt'. Не обнулялся массив результатов.
  
 
'''2.27.2'''
 
'''2.27.2'''
&lt;br>Слегка подправил команду 'prompt':
+
<br>Слегка подправил команду 'prompt':
&lt;br>Исправил вывод подсказки при запросе текстового значения
+
<br>Исправил вывод подсказки при запросе текстового значения
&lt;br>Добавил закрытие диалогового окна по клавише 'Enter'
+
<br>Добавил закрытие диалогового окна по клавише 'Enter'
&lt;br>Добавил закрытие диалогового окна при выборе значения мышкой
+
<br>Добавил закрытие диалогового окна при выборе значения мышкой
&lt;br>Добавил возможность указать многострочный комментарий с помощью '/n' при запросе строкового значения
+
<br>Добавил возможность указать многострочный комментарий с помощью '/n' при запросе строкового значения
&lt;br>Добавил возможность простого выбора числового ответа с клавиатуры
+
<br>Добавил возможность простого выбора числового ответа с клавиатуры
&lt;br>Снял ограничение на 5 элементов выбора
+
<br>Снял ограничение на 5 элементов выбора
&lt;br>Исправил отображение указанного таймаута ожидания в виде дополнительного пункта
+
<br>Исправил отображение указанного таймаута ожидания в виде дополнительного пункта
&lt;br>Немного косметики
+
<br>Немного косметики
&lt;br>Если диалоговое окно закрылось по таймауту и в нем ничего не выбрано, то возвращается 0 или пустая строка, иначе - выбранный пункт
+
<br>Если диалоговое окно закрылось по таймауту и в нем ничего не выбрано, то возвращается 0 или пустая строка, иначе - выбранный пункт
&lt;br>Кнопка 'Ок' играет еще более символическую роль чем раньше
+
<br>Кнопка 'Ок' играет еще более символическую роль чем раньше
  
 
'''2.29'''
 
'''2.29'''
&lt;br>Подправил малость 'prompt'.
+
<br>Подправил малость 'prompt'.
&lt;br>Подправил 'prompt', при остановке скрипта открытое окно промпта закрывается.
+
<br>Подправил 'prompt', при остановке скрипта открытое окно промпта закрывается.
  
 
'''2.32'''
 
'''2.32'''
&lt;br>Исправил ошибку в команде 'prompt', из-за которой все, что шло после пустых переменных игнорировалось.
+
<br>Исправил ошибку в команде 'prompt', из-за которой все, что шло после пустых переменных игнорировалось.
&lt;br>Исправил ошибку повторного вызова команды 'prompt', после остановки скрипта с активным окном промпта.
+
<br>Исправил ошибку повторного вызова команды 'prompt', после остановки скрипта с активным окном промпта.
&lt;br>Добавил в 'prompt' возможность выводить не нажимающиеся строки (без чекбоксов) с помощью восклицательного знака в начале строки.
+
<br>Добавил в 'prompt' возможность выводить не нажимающиеся строки (без чекбоксов) с помощью восклицательного знака в начале строки.
 
  set #s prompt (!Test ! Passed)
 
  set #s prompt (!Test ! Passed)
 
Добавил в 'prompt' возможность выводить свой заголовок с помощью восклицательного знака, указанного в начале первой строки.
 
Добавил в 'prompt' возможность выводить свой заголовок с помощью восклицательного знака, указанного в начале первой строки.
  
 
'''2.36.2'''
 
'''2.36.2'''
&lt;br>Добавил переменные положения окна функции 'prompt': 'promptpos_x', 'promptpos_y'. Значения изменяются только для текущего скрипта.
+
<br>Добавил переменные положения окна функции 'prompt': 'promptpos_x', 'promptpos_y'. Значения изменяются только для текущего скрипта.
  
 
'''2.37'''
 
'''2.37'''
&lt;br>Починил чтение 'promptpos_x' и 'promptpos_y'.
+
<br>Починил чтение 'promptpos_x' и 'promptpos_y'.
  
 
'''2.39'''
 
'''2.39'''
&lt;br>Исправил ошибку, возникающую при отсутствии пробела перед скобкой в команде 'prompt'.
+
<br>Исправил ошибку, возникающую при отсутствии пробела перед скобкой в команде 'prompt'.
  
 
'''2.41'''
 
'''2.41'''
&lt;br>Расширил до 16к строку параметров передаваемую в команду 'prompt'.
+
<br>Расширил до 16к строку параметров передаваемую в команду 'prompt'.
&lt;br>Сделал автоматическое определение ширины окна команды 'prompt'.
+
<br>Сделал автоматическое определение ширины окна команды 'prompt'.
 
[[Категория:Прочее]]
 
[[Категория:Прочее]]

Текущая версия на 11:03, 28 августа 2019

Описание

Prompt - оператор запроса ввода от пользователя. Запрашивает значения для строки, массива или числа.
Для подсказки, содержащей больше одного слова, используйте кавычки.
Для строки: в переменную($a) записывается введенная строка. Если выбор не был сделан (нажатие ок без ввода строки) - записывается пустая строка.
Для числа: в переменную(#a) записывается номер выбора. Если выбор не был сделан (нажатие ок без ввода строки) - записывается ноль.
Для массива: в массив(%a) записываются все значения для каждого элемента. Если элемент был выбран - единица, если нет - ноль.

Синтаксис

Привязка к окну: нет.
Работа со свернутым окном: да.

Prompt ([!caption] <line1> [line2] [line3] [line4] [line5] ([timeout]))

Где:
[!caption] - необязательный параметр. Подсказка, начинается с '!'.
<line1> [line2] [line3] [line4] [line5] - набор значений для выбора. Одно или больше.
([timeout]) - таймаут (время для выбора значения), указывается в секундах в круглых скобках.

set $a prompt (подсказка)   
set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)  
set %с prompt (выбор1 выбор2 выбор3 выбор4 выбор5)  

set $a prompt - Запрос на ввод значения. Возвращает в переменную введенное значение.
set #b prompt - Запрос на выбор значения. возвращает номер выбранного значения, либо 0. Выбор подтверждается закрытием окна.
set %с prompt - Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0.

Положение окна функции 'prompt':

promptpos_x
promptpos_y 

Примеры

// Пример 1
set #a prompt (первый "второй выбор" третий)
msg #a
// Пример 2
set $a prompt (Введите значение)  // Может быть как строкой, так и числом
msg Введено: $a 
// Пример 3
set %a prompt (первый "второй выбор" третий)
    // если выбрано 1, иначе 0
msg %a[1]      // все значения в одну строку
    // значения отдельно 
msg %a[1 1]    // первое значение 
msg %a[1 2]    // второе
msg %a[1 3]    // третье
// Пример 4
set promptpos_x 100    //установить координату 'Х' для окна Prompt
set promptpos_y 100    //установить координату 'Y' для окна Prompt
set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)
msg #b
// Пример 5
// Prompt из массива
set %a [1] 123
set %a [2] 456
set %a [3] 789
set %a [4] abc
set %a [5] def

set $a         //очищаем строку
for #i 1 size(%a)
    set $a $a %a[#i]       //создаём строку из всех элементов массива
end_for

set $b "prompt ($a ())"
set %b [1] "#a"          
eval (set %b[1] $b)              //выводим prompt
msg #a
End_script 
// Пример 6
// Вывод Prompt с подсказкой 
set $str "Выбрать одно из значений:"       // подсказка
set #a prompt (!$str Один Два Три)
msg #a
// Пример 7
// Вывод Prompt с таймаут
set $str "Выбрать одно из значений:"
set #a prompt (!$str Один Два Три (5))    // на выбор значения 5 секунд, если выбор не сделан вернёт в переменную '#a' 0.
msg #a

Смотрите также

Hint
Promptpos x

История развития

2.14
Добавил возможность из скрипта запросить значение у пользователя.

'set $a prompt (<подсказка>)'

Запрос на ввод значения. возвращает в переменную введенное значение.

'set #b prompt (<выбор1> <выбор2> [выбор3] [выбор4] [выбор5])'

Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна..

2.20
Поправил внешний вид формочки 'prompt' и добавил кнопочку 'Ок'.
Поправил 'prompt' на предмет соответствия заявленному функционалу, и добавил возможность выбора нескольких значений:

set $a prompt (подсказка)

Запрос на ввод значения. возвращает в переменную введенное значение.

set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)

Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна.

set %с prompt (выбор1 выбор2 выбор3 выбор4 выбор5)

Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0 Пример:

set %s prompt (ch1 ch2 ch3 ch4 ch5)
set #a size (%s [ 1 ]) // строка всегда одна, но в ней несколько столбцов
set #b %s [ 1 #a ] // последний элемент
set $c %s [ 1 ] // получим чтото типа 10010, т.е. все элементы сразу.

2.21
Добавил в 'prompt' таймаут ожидания в секундах. Указывается после всех параметров в круглых скобках:

'set #b prompt (ch1 ch2 ch3 [(таймаут)])'

Исправил незначительную ошибку в функции 'prompt'. Не обнулялся массив результатов.

2.27.2
Слегка подправил команду 'prompt':
Исправил вывод подсказки при запросе текстового значения
Добавил закрытие диалогового окна по клавише 'Enter'
Добавил закрытие диалогового окна при выборе значения мышкой
Добавил возможность указать многострочный комментарий с помощью '/n' при запросе строкового значения
Добавил возможность простого выбора числового ответа с клавиатуры
Снял ограничение на 5 элементов выбора
Исправил отображение указанного таймаута ожидания в виде дополнительного пункта
Немного косметики
Если диалоговое окно закрылось по таймауту и в нем ничего не выбрано, то возвращается 0 или пустая строка, иначе - выбранный пункт
Кнопка 'Ок' играет еще более символическую роль чем раньше

2.29
Подправил малость 'prompt'.
Подправил 'prompt', при остановке скрипта открытое окно промпта закрывается.

2.32
Исправил ошибку в команде 'prompt', из-за которой все, что шло после пустых переменных игнорировалось.
Исправил ошибку повторного вызова команды 'prompt', после остановки скрипта с активным окном промпта.
Добавил в 'prompt' возможность выводить не нажимающиеся строки (без чекбоксов) с помощью восклицательного знака в начале строки.

set #s prompt (!Test ! Passed)

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

2.36.2
Добавил переменные положения окна функции 'prompt': 'promptpos_x', 'promptpos_y'. Значения изменяются только для текущего скрипта.

2.37
Починил чтение 'promptpos_x' и 'promptpos_y'.

2.39
Исправил ошибку, возникающую при отсутствии пробела перед скобкой в команде 'prompt'.

2.41
Расширил до 16к строку параметров передаваемую в команду 'prompt'.
Сделал автоматическое определение ширины окна команды 'prompt'.