purebasic.info
http://purebasic.info/phpBB3ex/

Переезд с FB на PB не легок
http://purebasic.info/phpBB3ex/viewtopic.php?f=1&t=4029
Страница 2 из 2

Автор:  doremi [ Ср дек 27, 2017 4:52 pm ]
Заголовок сообщения:  Re: Переезд с FB на PB не легок

Я тут решил попробовать сэкономить себе немного времени и бросить переписывать часто встречающуюся в моих сырках функцию 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 невозможно задать первый или первые параметры как дефолтные, только пихать их в конец списка.
Из-за этого пришлось везде прописать первую позицию в лоб. Но всё равно гораздо легче стало, чем менять последовательность параметров.

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

Автор:  Сергейчик [ Ср дек 27, 2017 11:37 pm ]
Заголовок сообщения:  Re: Переезд с FB на PB не легок

А если не одним макросом а двумя пользоваться? :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
 


Автор:  doremi [ Чт дек 28, 2017 12:09 pm ]
Заголовок сообщения:  Re: Переезд с FB на PB не легок

Примерно то же самое - или вбить в каждый Instr единичку-запятую как первый параметр везде, или название функции исправить.

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

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/