Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс ноя 19, 2017 3:10 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу Пред. 1 2 3 4 5 След.
Автор Сообщение
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вт окт 17, 2017 12:20 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Мда.. как всё запущено-то, а!!!

Pathoswithin писал(а):
Ну так это ты специально такую строку сделал.
Да, чтобы продемонстрировать баг, а иначе как это по-твоему сделать?
Pathoswithin писал(а):
В текстовых строках нулей быть не должно.
Читай предыдущее сообщение внимательней.
0CodErr писал(а):
в этом случае происходит вывод не zero-terminated строки, то, соответственно, ноль не может считаться признаком конца строки, а, значит, строка не должна обрываться на символе с кодом 0.

А зачем по-твоему тогда такое разделение строк? Для прикола что ли? :mrgreen:
Ты давай не прикидывайся, свои ошибки надо уметь признавать.

Или давайте тогда может заодно в консоли write_string "исправим"? Ну а что, она ведь работает точно таким же образом.
И SysFn4 раньше тоже работала правильно.
GerdtR писал(а):
Обычно, правда, всё таки при ошибках программы. Или попытках открыть подбитый txt файл.
Ну в KolibriOS это не ошибки вовсе, а оно так и задумано было.
GerdtR писал(а):
Считаю, что если надо вывести строку из 10 байт, значит вывести все 10 байт. И плевать, какие они.
Да, абсолютно согласен, именно так оно раньше и работало.
Иначе просто нет смысла делить строки на ASCIIZ и не ASCIIZ.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вт окт 17, 2017 9:28 pm 
Не в сети

Зарегистрирован: Вт мар 08, 2016 11:00 pm
Сообщения: 269
А что, есть смысл в строках не asciiz ?


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вт окт 17, 2017 9:33 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 439
Siemargl писал(а):
А что, есть смысл в строках не asciiz ?

без них hex редактор не сможет вывести многие символы средствами ОС. Также будет невозможно использовать строки в модулях, компилированых Паскалем. Многие строки там не заканчивается нулем.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Ср окт 18, 2017 1:37 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
0CodErr
Не, так я ж не против - исправляй. Просто у меня сейчас времени нет, вот и говорю, что проблема не серьёзная.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Чт окт 19, 2017 7:46 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Я пробовал сделать так(font.inc) https://pastebin.ca/3891972
Но похоже, заголовки выводятся как-то по-особенному
Спойлер: Показать
Вложение:
1.PNG
1.PNG [ 19.17 КБ | 180 просмотров ]
Непонятно, почему там ограничение на количество символов для ASCIIZ(сейчас 256, раньше было 255).
Кажется, было бы лучше, если символ #0 выглядел бы одинаково в обоих шрифтах.
Лучше как у 6x9, например, в похожем случае http://websvn.kolibrios.org/filedetails ... m#line-405 это было бы удобно, если не хочется перед выводом текста принудительно закрашивать предыдущую надпись.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Пт окт 20, 2017 1:56 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Посмотри в window.inc - window._.draw_window_caption.dodraw
В кодировке ASCII первые 32 символа вообще не должны как-то выглядеть, в том числе символ #0.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Пт окт 20, 2017 1:30 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Pathoswithin писал(а):
В кодировке ASCII первые 32 символа вообще не должны как-то выглядеть, в том числе символ #0.
Насчёт всех 32-ух не согласен https://en.wikipedia.org/wiki/Code_page_866
Но вот символ #0 в шрифте 8x16 в данный момент всё-таки "как-то" выглядит.
Pathoswithin писал(а):
Посмотри в window.inc - window._.draw_window_caption.dodraw
Если сделать перед вызовом dtext
Код:
or      ecx, 0x80000000
то работает, но бывает так, что надпись ещё больше наезжает на кнопки в заголовке.
Наверное, лучше заголовок выводить не как ASCIIZ, но предварительно определив длину строки.
Однако, судя по коду, кодировка может быть разной, значит, нужны разные StrLen функции.
Ну или пока что сделать только для CP866.
Другой вариант — для заголовка завести отдельный флаг: выводить либо esi символов, либо до первого попавшегося символа #0, то есть, так, как сейчас работает для вообще всех случаев.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Пт окт 20, 2017 7:03 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
#7103
Ну, в общем, я решил сделать
0CodErr писал(а):
для заголовка завести отдельный флаг: выводить либо esi символов, либо до первого попавшегося символа #0
Надеюсь, ничего больше не поломалось :)
Осталось теперь это
0CodErr писал(а):
Но вот символ #0 в шрифте 8x16 в данный момент всё-таки "как-то" выглядит.
А в 6x9 — нормально, никак не выглядит.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Сб окт 21, 2017 1:39 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Надейся, я тоже каждый раз надеялся...

Тут надо понимать разницу между "выглядеть как ничего" и "не выглядеть никак": символ №32 всегда выглядит как ничего, а символы №0 - №31 не обязаны выглядеть как-то конкретно, потому могут выглядеть как угодно и рассчитывать на них не желательно.

А откуда у тебя в коде столько пробелов в конце строк?


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Сб окт 21, 2017 6:07 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Pathoswithin писал(а):
Тут надо понимать разницу между "выглядеть как ничего" и "не выглядеть никак": символ №32 всегда выглядит как ничего, а символы №0 - №31 не обязаны выглядеть как-то конкретно, потому могут выглядеть как угодно и рассчитывать на них не желательно.
Ну было бы удобно, если #0 выглядел бы как #32 в обоих шрифтах. Это можно как-то поправить?

Pathoswithin писал(а):
А откуда у тебя в коде столько пробелов в конце строк?
О, вот это не знаю даже, как так получилось. Может после копипаста откуда-то вставились.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вс окт 22, 2017 12:49 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Если обратишь внимание на код, то увидишь что символ №0 в шрифте 8x16 используется для всех символов юникода, которых в шрифте нет.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вс окт 22, 2017 11:02 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Думаю, было бы лучше, чтобы символы выглядели одинаково как в обоих шрифтах, так и в консоли.
По-моему лучший вариант — как они выглядят в консоли
Изображение


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вс окт 22, 2017 11:17 am 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Это вообще cp437, там все символы имеют конкретный вид, а системная у нас cp866.


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вс окт 22, 2017 11:43 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1080
Вообще-то ссылку я тебе давал уже https://en.wikipedia.org/wiki/Code_page_866
Pathoswithin писал(а):
системная у нас cp866
, которая как раз и основана на CP437. Нижняя часть таблицы осталась такой же
Изображение


Вернуться к началу
 Заголовок сообщения: Re: SysFn 4
СообщениеДобавлено: Вс окт 22, 2017 5:16 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1194
Wikipedia писал(а):
the first half (code points 0–127) being the same as ASCII
Тоже самое касается юникода. Идём сюда -> https://en.wikipedia.org/wiki/ASCII
Wikipedia писал(а):
ASCII reserves the first 32 codes (numbers 0–31 decimal) for control characters
Использовать их для чего-либо - плохая идея.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу Пред. 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB