purebasic.info

PureBasic forum
Текущее время: Вт июл 07, 2020 5:47 am

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Ср июн 24, 2020 12:31 pm 
Не в сети
доцент

Зарегистрирован: Чт авг 20, 2015 5:20 pm
Сообщений: 25
Откуда: CCCP
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
В данном случае каждый вызов макроса добавит в исполняемый файл строку Debug текст или PrintN(""+текст)

Об этом и спрашиваю - зачем в код добавлять множество этих строк, если можно просто вызывать одну процедуру с параметрами.
Думаю, следует всем новичкам знать, что PrintN(""+текст) - это не ошибка и не описка, а в случае Debug(""+что-нибудь) - отличный лайфхак. Таким чудным образом 1) для PrintN указываем, что передаём строку; 2) для Debug избавление от проблемы вывода значений в Hex. Кто не в курсе - можете сравнить: Debug (33) и Debug("" + 33) - в первом случае выведется "21" (и если не знать о проблеме, можно не обратить внимание и полагать, что это десятичное значение, мало ли, функция отрабатывает и выводит какое-то число - а оно, внезапно, в hex, и ни одной буквы a..f, а только цифры - и всё, попали), во втором случае выведется верно - "33". Так это такой "лайфхак". Спасибо, Пётр, что написал именно таким образом. Когда-то я тоже сталкивался с этой проблемой, и подсказать было некому.

Пётр писал(а):
CompilerIf выполняется при компиляции.

Тут вопросов, думаю, ни у кого не должно возникать.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср июн 24, 2020 12:51 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11705
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
destiny писал(а):
Об этом и спрашиваю - зачем в код добавлять множество этих строк
После компиляции от вызова макроса останется одна строка. Должно работать даже быстрее чем с процедурой.

destiny писал(а):
для Debug избавление от проблемы вывода значений в Hex.
Это задается в настройках отладчика и можно отключить.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2020 7:38 am 
Не в сети
доцент

Зарегистрирован: Чт авг 20, 2015 5:20 pm
Сообщений: 25
Откуда: CCCP
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
destiny писал(а):
для Debug избавление от проблемы вывода значений в Hex.
Это задается в настройках отладчика и можно отключить.

Значит я неверно понял, для чего конструкция PrintN("" + text) вместо PrintN(text), расскажи пожалуйста?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2020 8:25 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 648
Благодарил (а): 45 раз.
Поблагодарили: 81 раз.
Пункты репутации: 2
>для чего конструкция PrintN("" + text) вместо PrintN(text), расскажи

Наверно чтобы число не выдало ошибку, сложилось со строкой и стало строкой


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2020 1:37 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11705
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
destiny писал(а):
Значит я неверно понял, для чего конструкция PrintN("" + text)
Для автоматического преобразования в строку если передано число.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2020 3:23 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6647
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
destiny писал(а):
Значит я неверно понял, для чего конструкция PrintN("" + text) вместо PrintN(text)

В программировании это называется неявное преобразование типов, когда компилятор автоматически конвертирует один фундаментальный тип данных в другой.

_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт июн 26, 2020 3:38 pm 
Не в сети
доцент

Зарегистрирован: Чт авг 20, 2015 5:20 pm
Сообщений: 25
Откуда: CCCP
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
destiny писал(а):
Таким чудным образом 1) для PrintN указываем, что передаём строку;

В таком случае я всё же понял правильно, и новички, читающие эту тему, не потеряют нить, ок. Меня просто смутил первый ответ от Пётр на это сообщение, где шла речь о выводе hex, возник вопрос, я решил уточнить. Вопрос в этой части снят, всем спасибо.


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

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


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

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


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

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