Board.KolibriOS.org

Official KolibriOS board
It is currently Sun May 26, 2019 8:32 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 63 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
 Post subject: Re: SysFn 4
PostPosted: Tue Oct 17, 2017 12:20 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Мда.. как всё запущено-то, а!!!

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

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

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Oct 17, 2017 9:28 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
А что, есть смысл в строках не asciiz ?


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Oct 17, 2017 9:33 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 455
Siemargl wrote:
А что, есть смысл в строках не asciiz ?

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

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Wed Oct 18, 2017 1:37 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
0CodErr
Не, так я ж не против - исправляй. Просто у меня сейчас времени нет, вот и говорю, что проблема не серьёзная.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Thu Oct 19, 2017 7:46 pm 
Offline

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Fri Oct 20, 2017 1:56 am 
Offline
Mentor/Kernel Developer
User avatar

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Fri Oct 20, 2017 1:30 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
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, то есть, так, как сейчас работает для вообще всех случаев.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Fri Oct 20, 2017 7:03 pm 
Offline

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sat Oct 21, 2017 1:39 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Надейся, я тоже каждый раз надеялся...

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

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sat Oct 21, 2017 6:07 am 
Offline

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

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sun Oct 22, 2017 12:49 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Если обратишь внимание на код, то увидишь что символ №0 в шрифте 8x16 используется для всех символов юникода, которых в шрифте нет.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sun Oct 22, 2017 11:02 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Думаю, было бы лучше, чтобы символы выглядели одинаково как в обоих шрифтах, так и в консоли.
По-моему лучший вариант — как они выглядят в консоли
Image


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sun Oct 22, 2017 11:17 am 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
Это вообще cp437, там все символы имеют конкретный вид, а системная у нас cp866.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sun Oct 22, 2017 11:43 am 
Offline

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


Top
   
 Post subject: Re: SysFn 4
PostPosted: Sun Oct 22, 2017 5:16 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Thu Mar 26, 2015 5:16 pm
Posts: 1262
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
Использовать их для чего-либо - плохая идея.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 63 posts ]  Go to page Previous 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited