Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
особенность функции VAL https://zx.oberon.org/forum/viewtopic.php?f=34&t=438 |
Страница 1 из 1 |
Автор: | budden [ 29 окт 2018, 23:30 ] |
Заголовок сообщения: | особенность функции VAL |
В BlackBoxComponentBuilder функция VAL(INTEGER,"a") возвращает код буквы а, т.е. 97. Для строчки VAL(INTEGER,"ab") вернётся 256*97+98. Где-нибудь описано такое поведение? Ааа, хотя это всего лишь интерпретации первых букв строки как значение типа INTEGER при определённом порядке байт... А я-то пытался из этого вывести что-то про особый способ кодировки коротких строчек ![]() |
Автор: | Zorko [ 30 окт 2018, 17:58 ] |
Заголовок сообщения: | Re: особенность функции VAL |
budden, функция SYSTEM.VAL обозначает "интерпретировать содержимое куска памяти по такому-то адресу как значение такого-то типа". Ваше "а" размещается в памяти в виде строки: код символа "a" и завершающий строку нуль. Если "a" это короткий однобайтовый символ, то Вы пытаетесь получить 4-байтовое число из двухбайтовой строки в памяти. То есть число будет состоять из двух байт строки и двух байт мусора. |
Автор: | budden [ 06 ноя 2018, 13:31 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Код на это не похож. Вот ссылка на кусок, который делает (он в нашей слегка переименованной копии, но не суть). https://gitlab.com/budden/nkp/blob/master/k/Ня/Mod/Д.kp#L1697 (ссылки с кириллицей на вашем движке не работают). Вот для справки ссылка на оригинальный код: https://gitlab.com/budden/nkp/blob/mast ... B.kp#L1692 |
Автор: | Zorko [ 06 ноя 2018, 16:01 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Что Вы хотите этим сказать? Что VAL(INTEGER,"a") трактует "a" как символ и константный литерал, а не как строку? (тут вспоминается Patrik Reali с его критикой такой неоднозначности) Ссылки кириллицей — да, много где не поддерживаются. Форумный движок же буржуйский. |
Автор: | budden [ 06 ноя 2018, 20:30 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Разврат мозга (т.е. отладчик) показывает, что "a" - это константа типа char8, а "аа" как раз попадает в указанную мной ветку. Как обрабатывается char8 - я пока не понял. Последняя версия движка ПШПББ поддерживает урлы в кириллице. |
Автор: | budden [ 10 ноя 2018, 19:57 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Тема ещё не была раскрыта. Она понимает юникод: Код: "OBERON"
|
Автор: | SovietPony [ 11 ноя 2018, 00:46 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Вроде всё логично, если строка из одного символа интерпретируется как [SHORT]CHAR. Неоднозначность можно было бы решить если разрешить использование $ к константам. Но не знаю насколько это нужно. Где ещё такая неоднозначность может вылезти? В gpcp вообще нет SYSTEM, а мой компилятор Оберона для jvm вообще генерирует инвалидный код для данного случая, гыг. |
Автор: | ivan_denisov [ 23 ноя 2018, 05:47 ] |
Заголовок сообщения: | Re: особенность функции VAL |
Ссылки Кириллицей вполне возможно вставлять, если пользоваться тегом URL и копировать после url= ссылку из строки браузера с процентиками (в Firefox она именно с процентиками копируется). https://gitlab.com/budden/nkp/blob/master/k/Ня/Mod/Д.kp#L1697 |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |