Необязательные параметры функций

Здесь обсуждается всё, что касается макросов.
User avatar
HaRT
Moderator
Posts: 8682
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 78 times
Been thanked: 145 times

Необязательные параметры функций

Post by HaRT » Sun 04 May, 2008 16:15

Skirda wrote:
HaRT wrote:PS Легко ли в макроязыке реализовывать необязательные параметры (хотя бы только в конце списка)?
уже, начиная с 2340
Есть предложение сделать необязательным второй параметр функции clip (значение по умолчанию — пустая строка), а то ведь бессмысленно его туда передавать, когда он заведомо будет проигнорирован.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Sun 04 May, 2008 17:17

HaRT wrote:Есть предложение сделать необязательным второй параметр функции clip (значение по умолчанию — пустая строка), а то ведь бессмысленно его туда передавать, когда он заведомо будет проигнорирован.
Нарисуй на мантис, чтобы не забылось :-)
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Sun 04 May, 2008 17:53

Skirda wrote:Нарисуй на мантис, чтобы не забылось
№ 526.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Необязательные параметры функций

Post by HaRT » Mon 05 May, 2008 16:51

Предлагаю сделать необязательным параметр функции WaitKey; значение по умолчанию — 0 (ждать неограниченно долго).

Мантис: № 527.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Tue 06 May, 2008 14:01

HaRT wrote:Предлагаю сделать необязательным параметр функции WaitKey; значение по умолчанию — 0 (ждать неограниченно долго).

Мантис: № 527.
Я там личин... запись оставил :crazy:
просьба проверить макросы
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Fri 09 May, 2008 12:14

Skirda wrote:просьба проверить макросы
Пользуюсь той сборкой — вроде никаких новых проблем.

Кстати, хорошо бы задокументировать необязательность параметра функции GetHotkey.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Необязательные параметры функций

Post by HaRT » Fri 04 Jul, 2008 18:35

Skirda
Есть предложение изменить значение по умолчанию второго (а заодно и первого) параметра функции MsgBox с 0 на "", чтобы вызов, например, “MsgBox ( "Fail" )” не выводил “0” в качестве сообщения. А пока приходится это обходить явным дописыванием “""” в качестве второго параметра.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Sun 06 Jul, 2008 16:21

HaRT, не понял.
ты хочешь у MsgBox... чтобы все параметры были...

Code: Select all

N=msgbox(["Title"[,"Text"[,flags]]])
Так?
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Mon 07 Jul, 2008 08:57

Skirda wrote:Так?
Не совсем. Я предлагаю вот что:
1. Чтобы все параметры были необязательными — это уже и сейчас есть.
2. Чтобы параметры Title и Text по умолчанию были не 0 (число ноль), а "" (пустая строка), а то сейчас вызов MsgBox() (т.е. без параметров) выдаёт

Code: Select all

+= 0 ==+
|  0   |
|  Ok  |
+======+ 
А хочется

Code: Select all

+======+
|  Ok  |
+======+ 
Это нужно для того, чтобы любой из них можно было оставить пустым и не получить ненужных артефактов.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Необязательные параметры функций

Post by HaRT » Wed 16 Jul, 2008 19:36

Skirda
Обнаружилась какая-то странность с функцией GetHotkey.
Вызываю из панелей поочерёдно два макроса:

Code: Select all

F12 $If ( "0" == GetHotkey() ) Esc Y $Else Esc N $End
и
F12 %h = GetHotkey(); $If ( "0" == %h ) Esc Y $Else Esc N $End
Ожидаю в обоих случаях получить Y. На деле же первый из них даёт N, а второй — Y. Если использовать GetHotkey(0), то всё в порядке в обоих случаях.
Что там на самом деле происходит и зачем так?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Sat 19 Jul, 2008 12:26

HaRT wrote:Что там на самом деле происходит и зачем так?
ну как бы у GetHotkey не может быть парамерта по умолчанию, соответственно в стеке мусор и...
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Mon 21 Jul, 2008 09:44

Skirda wrote:у GetHotkey не может быть парамерта по умолчанию
Тогда прошу сделать по умолчанию 0, т.к. это как раз означает “текущий элемент”.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Mon 21 Jul, 2008 11:07

HaRT, сделал.
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Mon 21 Jul, 2008 11:17

Skirda
Спасибо. После какого номера сборки проверять?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Необязательные параметры функций

Post by Skirda » Mon 21 Jul, 2008 11:30

2416/532
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Необязательные параметры функций

Post by HaRT » Mon 04 Aug, 2008 16:02

Skirda wrote:2416/532
Смотрю на сборке 2421+ (m581.2) — там непорядок: значение возвращается правильное, а вот стек, судя по всему, портится. Пример: выполняю “F11 PgDn MsgBox ( "", GetHotkey() )” — тело сообщения правильное, а в заголовке — 0 (вместо пустой строки).

Кстати, какая резолюция по MsgBox?

И ещё одно:
Использую substr(s,n1,n2) в цикле, где n2 уменьшается с N до 0 включительно. Т.е. беру подстроку длины N, длины N-1, …, длины 2, длины 1, длины 0 — на последнем проходе ожидаю получить пустую строку. Однако в силу того, что значение 0 наделено специальным смыслом (“взять до конца строки”), получается облом.
Сложно ли сделать так, чтобы значением по умолчанию для третьего параметра было -1 (т.к. подстрока длины 0 — вполне осмысленная вещь)?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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