Board.KolibriOS.org
https://board.kolibrios.org/

SysFn 4
https://board.kolibrios.org/viewtopic.php?f=36&t=2252
Page 4 of 5

Author:  0CodErr [ Tue Oct 17, 2017 12:20 pm ]
Post subject:  Re: SysFn 4

Мда.. как всё запущено-то, а!!!

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

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

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

Author:  Siemargl [ Tue Oct 17, 2017 9:28 pm ]
Post subject:  Re: SysFn 4

А что, есть смысл в строках не asciiz ?

Author:  GerdtR [ Tue Oct 17, 2017 9:33 pm ]
Post subject:  Re: SysFn 4

Siemargl wrote:
А что, есть смысл в строках не asciiz ?

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

Author:  Pathoswithin [ Wed Oct 18, 2017 1:37 am ]
Post subject:  Re: SysFn 4

0CodErr
Не, так я ж не против - исправляй. Просто у меня сейчас времени нет, вот и говорю, что проблема не серьёзная.

Author:  0CodErr [ Thu Oct 19, 2017 7:46 pm ]
Post subject:  Re: SysFn 4

Я пробовал сделать так(font.inc) https://pastebin.ca/3891972
Но похоже, заголовки выводятся как-то по-особенному
Spoiler: Show
Attachment:
1.PNG
1.PNG [ 19.17 KiB | Viewed 2032 times ]
Непонятно, почему там ограничение на количество символов для ASCIIZ(сейчас 256, раньше было 255).
Кажется, было бы лучше, если символ #0 выглядел бы одинаково в обоих шрифтах.
Лучше как у 6x9, например, в похожем случае http://websvn.kolibrios.org/filedetails ... m#line-405 это было бы удобно, если не хочется перед выводом текста принудительно закрашивать предыдущую надпись.

Author:  Pathoswithin [ Fri Oct 20, 2017 1:56 am ]
Post subject:  Re: SysFn 4

Посмотри в window.inc - window._.draw_window_caption.dodraw
В кодировке ASCII первые 32 символа вообще не должны как-то выглядеть, в том числе символ #0.

Author:  0CodErr [ Fri Oct 20, 2017 1:30 pm ]
Post subject:  Re: SysFn 4

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

Author:  0CodErr [ Fri Oct 20, 2017 7:03 pm ]
Post subject:  Re: SysFn 4

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

Author:  Pathoswithin [ Sat Oct 21, 2017 1:39 am ]
Post subject:  Re: SysFn 4

Надейся, я тоже каждый раз надеялся...

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

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

Author:  0CodErr [ Sat Oct 21, 2017 6:07 am ]
Post subject:  Re: SysFn 4

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

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

Author:  Pathoswithin [ Sun Oct 22, 2017 12:49 am ]
Post subject:  Re: SysFn 4

Если обратишь внимание на код, то увидишь что символ №0 в шрифте 8x16 используется для всех символов юникода, которых в шрифте нет.

Author:  0CodErr [ Sun Oct 22, 2017 11:02 am ]
Post subject:  Re: SysFn 4

Думаю, было бы лучше, чтобы символы выглядели одинаково как в обоих шрифтах, так и в консоли.
По-моему лучший вариант — как они выглядят в консоли
Image

Author:  Pathoswithin [ Sun Oct 22, 2017 11:17 am ]
Post subject:  Re: SysFn 4

Это вообще cp437, там все символы имеют конкретный вид, а системная у нас cp866.

Author:  0CodErr [ Sun Oct 22, 2017 11:43 am ]
Post subject:  Re: SysFn 4

Вообще-то ссылку я тебе давал уже https://en.wikipedia.org/wiki/Code_page_866
Pathoswithin wrote:
системная у нас cp866
, которая как раз и основана на CP437. Нижняя часть таблицы осталась такой же
Image

Author:  Pathoswithin [ Sun Oct 22, 2017 5:16 pm ]
Post subject:  Re: SysFn 4

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

Page 4 of 5 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/