prompt()

Здесь обсуждается всё, что касается макросов.
User avatar
SlashNet
Posts: 591
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 3 times

prompt()

Post by SlashNet » Thu 28 Apr, 2011 18:26

Как можно в prompt-е отследить или был нажат Esc. Так как для переменной пустое значение является допустимым.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: вопросы и хотелки

Post by John Doe » Fri 29 Apr, 2011 09:34

В случае пустого значения можно дополнительно спрашивать у юзера чего он хочет.

Альтернативно: удалять можно не при пустом значении, а при сигнальной строке типа "<del>".

Но правильнее наверно как-то подкрутить prompt().

User avatar
SlashNet
Posts: 591
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 3 times

Re: вопросы и хотелки

Post by SlashNet » Fri 29 Apr, 2011 09:45

John Doe wrote:Альтернативно: удалять можно не при пустом значении, а при сигнальной строке типа "<del>".
На таком варианте пока что и остановился (только ключевым символом является пробел)
John Doe wrote:Но правильнее наверно как-то подкрутить prompt().
Конечно, удобнее было бы просто добавить ещё один флаг в prompt. Что-то типа: "при нажатии на Cancel/Escape тупо завершать работу макроса". Но он будет слишком уж выделяться на фоне других флагов...
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ

User avatar
HaRT
Moderator
Posts: 8645
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 142 times

Re: вопросы и хотелки

Post by HaRT » Fri 29 Apr, 2011 09:50

John Doe wrote:правильнее наверно как-то подкрутить prompt().
А позволяет ли макродвижок различить 0 и ""?
Если да, то при отмене можно было возвращать как раз 0.
SlashNet wrote:"при нажатии на Cancel/Escape тупо завершать работу макроса".
Ну уж только не так.
Можно было бы добавить ещё один параметр — какое значение возвращать при отмене. Тогда уже каждый макрос мог бы указать что-то достаточно уникальное.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: вопросы и хотелки

Post by John Doe » Fri 29 Apr, 2011 09:56

HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Да (в большинстве случаев).
HaRT wrote:Можно было бы добавить ещё один параметр — какое значение возвращать при отмене.
Хороший вариант.

User avatar
SlashNet
Posts: 591
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 3 times

Re: вопросы и хотелки

Post by SlashNet » Fri 29 Apr, 2011 09:58

HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Главное чтоб было различие между 0 и "0"... (если я, конечно, глупость не сморозил)
HaRT wrote:Можно было бы добавить ещё один параметр — какое значение возвращать при отмене.
Это вполне приемлемый вариант.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: вопросы и хотелки

Post by John Doe » Fri 29 Apr, 2011 10:38

SlashNet wrote:
HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Главное чтоб было различие между 0 и "0"...
А вот с этим сложнее, т.к. при операциях сравнения оба значения приведутся к одному типу. Т.е. различие изчезнет.

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: prompt()

Post by John Doe » Fri 29 Apr, 2011 10:50

Тему отделил от исходной.

Внимание:
Это очень плохая практика — смешивать абсолютно разные вопросы в одной теме.
В результате получачаются "мусорные" темы, в которых потом ничего невозможно найти.
(Есть у нас один пользователь, любит такие создавать)

Я не одну такую тему разгрёб, и уверяю вас, не получил от этого никакого удовольствия.

User avatar
Raistlin
Posts: 676
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 11:50

Верно ли я понимаю, что сейчас указание флага 0x01 в prompt() ни на что не влияет? Тоже уткнулся в неразличение пустого значения и нажатия Esc.
John Doe wrote:
SlashNet wrote:Главное чтоб было различие между 0 и "0"...
А вот с этим сложнее, т.к. при операциях сравнения оба значения приведутся к одному типу. Т.е. различие изчезнет.
Ну, не все так безнадежно, ибо

Code: Select all

%s=0; $If (%s) msgbox("1") $End
и

Code: Select all

%s="0"; $If (%s) msgbox("1") $End
работают по-разному, а дальше уж - дело техники. Голосую за возврат числового значения 0 при закрытии диалога prompt() по Esc. На Мантисе есть?
Magically yours
Raistlin

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: prompt()

Post by John Doe » Tue 23 Aug, 2011 12:10

Raistlin wrote:Голосую за возврат числового значения 0 при закрытии диалога prompt() по Esc.
Да, это лучше чем сейчас ("").

Но тогда всё усложняется: в писание придётся поместить примеры, демонстрирующие эту [не]последовательность фара в приведении типов.

User avatar
Raistlin
Posts: 676
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 12:19

Magically yours
Raistlin

User avatar
Raistlin
Posts: 676
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 12:22

John Doe wrote:Но тогда всё усложняется: в писание придётся поместить примеры, демонстрирующие эту [не]последовательность фара в приведении типов.
А где здесь непоследовательность? Функция возвращает строку, если нажали Enter, и 0, если нажали Esc. Согласен, не очень красиво, но... Коли не продумали с самого начала, что ж поделаешь теперь.
Magically yours
Raistlin

User avatar
John Doe
Бюрократ
Posts: 12192
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 31 times
Been thanked: 159 times

Re: prompt()

Post by John Doe » Tue 23 Aug, 2011 12:33

То что не продумали с самого начала вполне можно продумать потом.
А "непоследовательность" надо понимать в кавычках (в операциях сравнения "0" =0, а в логических "0"!=0).
Т.е. всё тут конечно правильно, но всё равно не мешает лишний раз подчеркнуть, ведь макросы не только программисты пишут.

User avatar
Raistlin
Posts: 676
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 12:41

А что тут можно придумать? По идее, надо возвращать и значение, и код ошибки, но это такой глобальный перекрой...
Magically yours
Raistlin

User avatar
zg
zero-gravity
Posts: 5540
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

Re: prompt()

Post by zg » Tue 23 Aug, 2011 12:46

в первом символе строки возвращайте статус :roll:

User avatar
Raistlin
Posts: 676
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 12:49

Это как? Если надо различить пустое значение и Esc? То есть, по сути, Enter и Esc?
Magically yours
Raistlin

Post Reply

Return to “Обсуждение макросов”