prompt()

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

prompt()

Post by SlashNet »

Как можно в prompt-е отследить или был нажат Esc. Так как для переменной пустое значение является допустимым.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

Но правильнее наверно как-то подкрутить prompt().
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

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

Post by SlashNet »

John Doe wrote:Альтернативно: удалять можно не при пустом значении, а при сигнальной строке типа "<del>".
На таком варианте пока что и остановился (только ключевым символом является пробел)
John Doe wrote:Но правильнее наверно как-то подкрутить prompt().
Конечно, удобнее было бы просто добавить ещё один флаг в prompt. Что-то типа: "при нажатии на Cancel/Escape тупо завершать работу макроса". Но он будет слишком уж выделяться на фоне других флагов...
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote:правильнее наверно как-то подкрутить prompt().
А позволяет ли макродвижок различить 0 и ""?
Если да, то при отмене можно было возвращать как раз 0.
SlashNet wrote:"при нажатии на Cancel/Escape тупо завершать работу макроса".
Ну уж только не так.
Можно было бы добавить ещё один параметр — какое значение возвращать при отмене. Тогда уже каждый макрос мог бы указать что-то достаточно уникальное.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Да (в большинстве случаев).
HaRT wrote:Можно было бы добавить ещё один параметр — какое значение возвращать при отмене.
Хороший вариант.
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

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

Post by SlashNet »

HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Главное чтоб было различие между 0 и "0"... (если я, конечно, глупость не сморозил)
HaRT wrote:Можно было бы добавить ещё один параметр — какое значение возвращать при отмене.
Это вполне приемлемый вариант.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

SlashNet wrote:
HaRT wrote:А позволяет ли макродвижок различить 0 и ""?
Главное чтоб было различие между 0 и "0"...
А вот с этим сложнее, т.к. при операциях сравнения оба значения приведутся к одному типу. Т.е. различие изчезнет.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: prompt()

Post by John Doe »

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

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

Я не одну такую тему разгрёб, и уверяю вас, не получил от этого никакого удовольствия.
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: prompt()

Post by Raistlin »

Верно ли я понимаю, что сейчас указание флага 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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: prompt()

Post by John Doe »

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

Но тогда всё усложняется: в писание придётся поместить примеры, демонстрирующие эту [не]последовательность фара в приведении типов.
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: prompt()

Post by Raistlin »

Magically yours
Raistlin
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: prompt()

Post by Raistlin »

John Doe wrote:Но тогда всё усложняется: в писание придётся поместить примеры, демонстрирующие эту [не]последовательность фара в приведении типов.
А где здесь непоследовательность? Функция возвращает строку, если нажали Enter, и 0, если нажали Esc. Согласен, не очень красиво, но... Коли не продумали с самого начала, что ж поделаешь теперь.
Magically yours
Raistlin
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: prompt()

Post by John Doe »

То что не продумали с самого начала вполне можно продумать потом.
А "непоследовательность" надо понимать в кавычках (в операциях сравнения "0" =0, а в логических "0"!=0).
Т.е. всё тут конечно правильно, но всё равно не мешает лишний раз подчеркнуть, ведь макросы не только программисты пишут.
User avatar
Raistlin
Posts: 750
Joined: Wed 16 Mar, 2005 16:01
Has thanked: 3 times
Been thanked: 1 time

Re: prompt()

Post by Raistlin »

А что тут можно придумать? По идее, надо возвращать и значение, и код ошибки, но это такой глобальный перекрой...
Magically yours
Raistlin
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: prompt()

Post by zg »

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

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