purebasic.info

PureBasic forum
Текущее время: Вт апр 24, 2018 1:53 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Ср дек 27, 2017 4:52 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Я тут решил попробовать сэкономить себе немного времени и бросить переписывать часто встречающуюся в моих сырках функцию Instr, переделав её с помощью macro в FindString.

Но вот засада. Написал:
Код:
1
2
3
Macro Instr(StartPos,MainString,Substring)
    FindString(MainString,Substring,StartPos)
EndMacro



Работает везде, кроме случаев, когда в InStr() не учитывается StartPos. У freebasic синтаксис
Цитата:
first = InStr( [ start, ] str, [ Any ] substring )

Parameters
str The string to be searched.
substring The substring to find.
start The position in str at which the search will begin. The first character starts at position 1.


И как результат, ПЕРВЫЙ параметр - стартовая позиция поиска - может быть опущен.
Как я понимаю, у PureBasic невозможно задать первый или первые параметры как дефолтные, только пихать их в конец списка.
Из-за этого пришлось везде прописать первую позицию в лоб. Но всё равно гораздо легче стало, чем менять последовательность параметров.

Вопрос к аудитории - это максимум, что я смог сделать макросом или может есть ещё более удобный вариант?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Ср дек 27, 2017 11:37 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 567
Благодарил (а): 2 раз.
Поблагодарили: 31 раз.
Пункты репутации: 9
А если не одним макросом а двумя пользоваться? :roll:
Код:
1
2
3
4
5
6
7
8
 
Macro Instr(StartPos,MainString,Substring)
    FindString(MainString,Substring,StartPos)
EndMacro
Macro Instr0(MainString,Substring)
    FindString(MainString,Substring,StartPos=0)
EndMacro
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Переезд с FB на PB не легок
СообщениеДобавлено: Чт дек 28, 2017 12:09 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт апр 16, 2013 2:00 pm
Сообщений: 45
Откуда: Волгодонск
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Пункты репутации: 5
Примерно то же самое - или вбить в каждый Instr единичку-запятую как первый параметр везде, или название функции исправить.

У фрибейсика ещё есть несколько таких вариантов - разные наборы параметров разных типов, компилятор по количеству параметров и их типам определяет, какой из вариантов вызова одной и той же функции будет использован. Не рискну ругать или хвалить такую реализацию, но так уж получилось.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB