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

Здесь обсуждается всё, что касается макросов.
User avatar
CrOm
Posts: 1428
Joined: Tue 02 Aug, 2005 21:02
Location: Омск
Been thanked: 1 time

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

Post by CrOm »

Latest post of the previous page:

trim(s,",0) будет убирать кавычки
FARFlipper, FARdroid, qPlayEx, Mr.Ripper
User avatar
HaRT
Moderator
Posts: 10800
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 219 times
Been thanked: 357 times

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

Post by HaRT »

Skirda wrote:на счет whitespace на ходу придумал
Нет, мой Trim изначально обладал такой возможностью.
Skirda wrote:где реально подобный Трим ты используешь
Сейчас проверил — получилось, что в Фаре нигде. В профессиональной деятельности где-то точно использовал.

CrOm
Только тогда вторым параметром надо "\"", да и убирать он их будет все, вне зависимости от их сбалансированности.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

HaRT, давай пока ограничимся тем, что :) - т.е. пробелы, табы, EOL`ы. А там видно будет...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

CrOm wrote:trim(s,",0) будет убирать кавычки
Это уже не trim, а unquote 8)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10800
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 219 times
Been thanked: 357 times

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

Post by HaRT »

Skirda wrote:пробелы, табы, EOL`ы. А там видно будет
Угу. А кому надо больше, будут использовать мою подпрограмму. :)
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

HaRT wrote:2. Чтобы параметры Title и Text по умолчанию были не 0 (число ноль), а "" (пустая строка), а то сейчас вызов MsgBox() (т.е. без параметров) выдаёт

Code: Select all

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

Code: Select all

+======+
|  Ok  |
+======+ 
Это нужно для того, чтобы любой из них можно было оставить пустым и не получить ненужных артефактов.
А вот здесь у нас появилась проблема :?
Для конструкции msgbox(1,2) ожидаем появление диалога с кнопкой ок, тайтлом = "1" и body = "2", но выдает пустой месаг с кнопкой ок.
Нужно делать исключение для нуля. Т.е. если нужен ноль, то будем писать msgbox("0",2) - т.е. в ноль кавычках.
пока так.
устроит?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

пробуем вариант http://ifolder.ru/7607818
здесь:
- функция "s=trim(s[,n])" - удаляет все пробельные символы (пробелы, табуляции, переводы строк и возвраты каретки) из строки s снаружи (n=0 или не указан), слева (n=1) или справа (n=2)
- для msgbox - если нужен ноль, то будем писать msgbox("0",2) - т.е. в ноль кавычках.
- уточнение substr (про последний параметр)

если все нормально - коммичу.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10800
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 219 times
Been thanked: 357 times

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

Post by HaRT »

Skirda wrote:Нужно делать исключение для нуля. Т.е. если нужен ноль, то будем писать msgbox("0",2) - т.е. в ноль кавычках.
Жить можно, но выглядит дико.
И вообще меня уже некоторое время занимает идеология типизации в макро-языке. Чуть позже (надеюсь, сегодня) заведу об этом отдельную тему.
Кстати, вот тут описан проверенный временем подход, который к тому же удобен и стандартизован: http://www.gnu.org/software/gawk/manual ... Comparison. Его применение как раз позволило бы избежать обсуждаемых тут проблем с substr и msgbox.
Skirda wrote:пробуем вариант
Надеюсь, сегодня попробую, но позже.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13792
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 424 times
Contact:

Re: Работа с диалогами

Post by John Doe »

http://api.farmanager.com/ru2/macro/macrocmd/prop_func/dialog.html#Dlg.GetValue wrote:dlg.getvalue(Pos,Type)
Получить различные значения текущего диалога.
  • Pos - номер элемента диалога (0 - само диалоговое окно).
    Type - тип получаемой информации, зависит от типа элемента.
Предлагаю сделать параметры функции Dlg.GetValue() опциональными.
По умолчанию Type=0 (DLGGETVALUE_VALUE), а Pos = Dlg.CurPos.

Т.е. Dlg.GetValue() без параметров будет возвращать Текст/Значение/Состояние активного элемента.

P.S.
Mantis:1483
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

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

Post by Wave »

О! А тут очень согласен. Утром делал макрос, задолбался, пока нашёл, какой номер у чекбокса. А так вполне можно по хоткею переместиться в нужный чекбокс, после чего и проверить его состояние, и если в не том состоянии, то всего лишь его переключить.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13792
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 424 times
Contact:

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

Post by John Doe »

1. Можно переключить в нужное и не выясняя в каком он находится.
2. Выяснить можно и с помощью Dlg.GetValue(Dlg.CurPos,DLGGETVALUE_VALUE), просто лишней писанины много.
А так будет по типу Menu.GetValue(), и остальных *Value
User avatar
SUSim
Posts: 1632
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

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

Post by SUSim »

Last edited by SUSim on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: оффтопик
SimSU ··· ·· -- ··· ··-
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

SUSim wrote:PS: Я правда не понимаю: зачем именно гуид, простого ид вполне бы хватило и в конст его прописать...
плагины.
User avatar
John Doe
Бюрократ
Posts: 13792
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 424 times
Contact:

Re: Работа с диалогами

Post by John Doe »

John Doe wrote:Предлагаю сделать параметры функции Dlg.GetValue() опциональными.
По умолчанию Type=0 (DLGGETVALUE_VALUE), а ID = Dlg.CurPos.
Имеет смысл поменять местами параметры: тогда можно будет указывать только один параметр - тип запрашиваемой информации (для текущего элемента).
Post Reply

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