Не печатает по русски!

Страница 2 из 3 Предыдущий  1, 2, 3  Следующий

Предыдущая тема Следующая тема Перейти вниз

Re: Не печатает по русски!

Сообщение  Eric-S в Ср Окт 15, 2008 9:33 am

Графический режим, это screen 13?

А с cp866 у меня номер не прошел!

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Ср Окт 15, 2008 9:40 am

Это все скрины, кроме нулевого

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Ср Окт 15, 2008 9:51 am

Eric-S пишет:А с cp866 у меня номер не прошел!
С wstring действительно не проходит. А со string и zstring * 20 работает.
PS: Пробовал тебе в ответ по мылу сбросить мой исходник и скомпилированную прогу, но почему то письмо не прошло...

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Ср Окт 15, 2008 9:55 am

DoReMi пишет:Скажете, вордом... SciTE или другой какой редактор надо.
Есть же FBIDE и FBedit - зачем ещё что-то пользовать? Кстати, вот и мысль о дальнейшем развитии - добавить в FBedit поддержку юникода в редакторе

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Eric-S в Чт Окт 16, 2008 6:10 am

Спросил на главном форуме
http://www.freebasic.net/forum/viewtopic.php?p=108751#108751

Суть сводиться к тому, что в консоль можно печатать юникод.
А в графическом режиме нельзя.
Вы были правы про шрифты.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Вс Окт 19, 2008 8:50 am

А проблема-то, оказывается, стара как мир Wink Я тут потихоньку для оn-line book пишу главу про графику, и внимательно вчитался в книгу Д. Грайса Графические средства персонального компьютера. И хотя она написана ещё во времена DOS 2.0 и BASICA, эта проблема в ней упомянута и... решена просто и изящно Wink Суть проблемы в том, что в консоли все Бейсики для полатформы IBM PC выводят текст через ДОС/Виндовс - а для них то есть консольные руссификаторы, тогда как в графичиеских режимах вывод текстов ведётся через БИОС, в знакогенераторе которого русских символов нет. Поэтому какого бы типа строка небыла и в какой кодировке не набиралась бы - результат будет одинаково плачевным. Грайс предлагает такое решение (код привожу уже адаптированным под FB):
Код:

' Меняем вектора знакогенератора для BIOS
' В оригинале здесь был ещё DEF SEG = 0
' как я понимаю, в нулевом сегменте адреса менять не надо
' поэтому дальше идут оригинальные...
POKE &h7F, &h17
POKE &h7E, &h00
POKE &h7D, &h00
POKE &h7C, &h00
' Дальше в оригинале DEF SEG = &h1700
' это начало сегмента, куда от нулевого смещения
' BLOAD загружает знакогенератор.
' Тут я плаваю, поэтому поправьте как правильно
' задать адрес загрузки...
DIM key_buffer AS BYTE PTR = &h1700
DIM result AS INTEGER
result = BLOAD ("russian.key", key_buffer)
IF result <> 0 THEN ERROR
Файл russian.key должен содержать 128 8-ми байтовых образа русских символов, каждый байт которого представляет собой битовый образ точек одной строки знакоместа 8х8. После изменения вектора и загрузки знакогенератора можно печатать по русски в графических режимах обычным оператором PRINT точно так же, как и в консоли.

PS: пока не проверил как это работает в FB так как руки не доходят нарисовать знакогенератор... Если кто проверит, плиз, отпишитесь здесь.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  tux в Вс Окт 19, 2008 2:37 pm

Интересно, интересно... Да для проверки мона взять ваще какуюнить от балды бмп-шку, просто хотябы посмотреть на результат, но мне кажется винда не даст писать в произвольный адрес напрямую, и интересно как это скажется на остальные программы.
К сожалению проверить тоже пока нет водможности
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Вс Окт 19, 2008 10:19 pm

tux пишет:Интересно, интересно... Да для проверки мона взять ваще какуюнить от балды бмп-шку
Ну и получишь другую абракодабру Wink
мне кажется винда не даст писать в произвольный адрес напрямую
Позволяет, если это не адрес, занятый самой Виндой или программой со статусом выше твоей. Но по идее область до 100Н не должна ни чем заниматься - значит писать в неё вполне законно...

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  tux в Пн Окт 20, 2008 8:41 am

Ну и получишь другую абракодабру Wink
ну и пусть, главное посмотреть будет ли она похожа на нечто нарисованное тобой
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Gena в Сб Ноя 08, 2008 8:29 pm

Я тоже решал эту проблему.
В виндоусе 98 русский текст есть - так вот там я запустил эту прогу и отсканировал шрифт(надеюсь понятно, как из файла буквы доставать) Так же я сделал прогу, которая читает виндовский блокнотный текст и отображает его в ACSII (не помню где тот код, при желание могу переделать - там просто)

screen 13
open "fnt13.fnt" for random as #1 len = 128
for sim = 1 to 255
locate 1,1:print chr$(sim)
text$=""
for x = 0 to 8
for y = 0 to 8
text$=text$+chr$(point(x,y))
next
next
put #1, text$
next
close '(с) =)

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 24
Откуда : Москва

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Freebasic_ru_admin в Пн Дек 22, 2008 6:20 pm

Что-то не получается ничего. Crying or Very sad С горя склипал прогу для русского текста. Кривовато, но смысл , я думаю, понятен. русские буквы.

Freebasic_ru_admin

Сообщения : 17
Дата регистрации : 2008-12-15
Откуда : Украина, Донбасс

Посмотреть профиль http://freebasic.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  DEPOzit в Вт Дек 23, 2008 3:59 pm

Freebasic_ru_admin пишет:Что-то не получается ничего. Crying or Very sad С горя склипал прогу для русского текста. Кривовато, но смысл , я думаю, понятен. русские буквы.

Есть один плюс - скорость. Но я больше склоняюсь к созданию русских букв через операторы bload и Put - гимора меньше, да и покрасивше будет...
Кстати урлы твоего сайта с php помоему это обычный html)))) geek

DEPOzit

Сообщения : 113
Дата регистрации : 2008-05-15
Возраст : 36
Откуда : Смоленская обл.

Посмотреть профиль http://freebasic.ru/

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Freebasic_ru_admin в Пт Дек 26, 2008 9:12 pm

Да мне всё равно, какого они формата. Просто мне так удобней Cool

Freebasic_ru_admin

Сообщения : 17
Дата регистрации : 2008-12-15
Откуда : Украина, Донбасс

Посмотреть профиль http://freebasic.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Eric-S в Ср Мар 18, 2009 1:18 pm

Только что в консоли windows XP вбил
graftabl /?
И получил очень интересный ответ




C:\>graftabl /?
Выбор кодовой страницы для отображения символов национальных алфавитов
в графическом режиме.

GRAFTABL [xxx]
GRAFTABL /STATUS

xxx Номер кодовой страницы.
/STATUS Вывод номера текущей кодовой страницы.


Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  justar в Вт Мар 24, 2009 12:38 pm

Не в ту степь. Команды консоли распространяются только на то консольное окно, в котором они исполняются. А FB по команде screen открывает вообще не консоль. Для проверки (если я правильно понял твою идею) написал:
Код:
screen 1
shell "gtaftable cp866"
print "Здравствуй, мир"
sleep
и получил обычные кракозябры.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Eric-S в Вт Мар 24, 2009 10:27 pm

Ясненько.
Тогда мне вообще не понятно, для чего нужна эта команда.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  vbman в Сб Май 02, 2009 5:03 pm

http://freebasic.justforum.net/forum-f5/tema-t176-15.htm#1591

Тут пример как можно вывести в консоль кириллицу... Работает и в полноэкранном режиме и в окне...
avatar
vbman

Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 35
Откуда : Украина, Кировоград

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  valdimir в Чт Июл 29, 2010 10:06 pm

Тоже сталкивался с такой проблемой, для ее решения написал простую функцию, через которую и вывожу текст в консоль:
Код:
Function win2dos(ByVal stroka As String) As String  ' возвращает строку в кодировке DOS
   For i As Integer = 0 To Len(stroka)-1
     Select Case stroka[i]
         Case 192 To 239
           stroka[i]=stroka[i]-64
         Case 240 To 255
           stroka[i]=stroka[i]-16
     End Select
   Next:Return stroka 
End Function
Print win2dos ("Морковка")
Sleep


Последний раз редактировалось: valdimir (Вт Фев 19, 2013 11:13 pm), всего редактировалось 4 раз(а)

valdimir

Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Анатолий в Сб Ноя 20, 2010 7:06 pm

Доброго времени суток. Вот у меня не выводит в файл на кириллице, в консоле нормально, печать на принтер тоже, а вот в файл никак, вместо каждого кириллического символа знак вопроса: "???????? ?? ?????." - вот-так. что-бы это значило, и как с этим бороться, подскажите.

Анатолий

Сообщения : 4
Дата регистрации : 2010-11-17
Возраст : 42
Откуда : Енакиево, Донбасс

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  trew в Сб Ноя 20, 2010 9:53 pm

Анатолий пишет:Доброго времени суток. Вот у меня не выводит в файл на кириллице, в консоле нормально, печать на принтер тоже, а вот в файл никак, вместо каждого кириллического символа знак вопроса: "???????? ?? ?????." - вот-так. что-бы это значило, и как с этим бороться, подскажите.

Здравствуйте! Вы бы хоть код выложили(или часть кода). Не факт конечно, что помощь будет 100%, но уже все же попроще будет... А так, как на кофейной гуще гадать.

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Анатолий в Пн Ноя 22, 2010 12:16 pm

trew пишет:

Здравствуйте! Вы бы хоть код выложили(или часть кода). Не факт конечно, что помощь будет 100%, но уже все же попроще будет... А так, как на кофейной гуще гадать.
Виноват. Моя оплошность. Вот он:
Код:
Cls
 Print "Привет Мир."
   # define unicode
   #Include "windows.bi"
      MessageBox NULL, "Привет Мир.", "ПРИВЕТСТВИЕ", MB_ICONASTERISK
      Open "test.txt" For Output As #1
      Print #1, "Привет Мир."
      Print #1, "hello world."
      Close #1
А вот результат:
?????? ???.
hello world.


А в консоле и окне сообщений нормально.
З.Ы. Сохраняю в юникоде.

Анатолий

Сообщения : 4
Дата регистрации : 2010-11-17
Возраст : 42
Откуда : Енакиево, Донбасс

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Саня в Пн Ноя 22, 2010 1:45 pm

хе, а фря то считает, что это в аскии, поэтому и переводит превед, в аскии сначала, потом пишет в файл, а т.к. в аски нет символов для кириллицы, то и заменяются они вопросом

Cls
Print "Привет Мир."
# define unicode
#Include "windows.bi"
MessageBox NULL, "Привет Мир.", "ПРИВЕТСТВИЕ", MB_ICONASTERISK
Open "test.txt" For Output Encoding "utf18" as # 1
Print #1, "Привет Мир."
Print #1, "hello world."
Close #1
avatar
Саня

Сообщения : 65
Дата регистрации : 2010-04-28
Возраст : 23
Откуда : Екатеринбург

Посмотреть профиль http://vkontakte.ru/id30561430#/id57547166

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Анатолий в Чт Дек 23, 2010 7:44 pm

Спасибо, теперь все получается. Понял в чем дело.

Анатолий

Сообщения : 4
Дата регистрации : 2010-11-17
Возраст : 42
Откуда : Енакиево, Донбасс

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  ap в Пн Янв 17, 2011 12:16 pm

Анатолий пишет:Спасибо, теперь все получается. Понял в чем дело.

а вот у меня пока ни чего не получается.
По ходу у всех в консоли высвечиваются русские буквы кроме как у меня.
Программа из предыдущего примера также выдает абракадабру и в консольном окне и в диалоговом.
Народ, помогите. Мне детишек в школе программировать надо учить.
Установлена FBIde 0.4.6
В тексте программы с русским все нормально.
Собственно вопрос:
как из программы типа:

cls
print "Привет"
sleep

- получить в консоли слово Привет, а не абракадабру?

ap

Сообщения : 2
Дата регистрации : 2011-01-17

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Саня в Пн Янв 17, 2011 2:07 pm

ну, к сожалению, для этого нужно сначала сохранить её в уникоде, потом она и будет показывать "привет". Для всех прог, в тексте которых есть символы кириллицы или спецсимволы нужно сохранять в уникоде, вот мой совет.
Насчет кракозябр... у меня этот же пример выдал "яЁштхЄ", я посмотрел - это кодировка 866 OEM, русская. Во всех аски-подобных кодировках латиница размещена ниже 127 места, и имеют постоянные номера. Значит, если проги не имеют спецсимволов, то будут парситься нормально пчти в любой кодировке, и выдавать верных результат, иначе придется в уникоде. как-то так вродь.

Программа из предыдущего примера также выдает абракадабру и в консольном окне и в диалоговом.
это из моего что ли? ээ у мя там небольшая такая ошибка вместо "utf18" нужно "utf8", описался.
в папке компилятора есть папка Examples - в ней примеры и к мануалам, и библиотекам, и к использованию уникода. сам особо не проверял, но должны быть работающими. вот на них и учить. Кстати, просьба у меня - учите, пожалуйста, ещё оформлению и стилю кода, так как у меня в школе особо не рассказывали, а приучать к порядку желательно сразу, имхо.
avatar
Саня

Сообщения : 65
Дата регистрации : 2010-04-28
Возраст : 23
Откуда : Екатеринбург

Посмотреть профиль http://vkontakte.ru/id30561430#/id57547166

Вернуться к началу Перейти вниз

Re: Не печатает по русски!

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Страница 2 из 3 Предыдущий  1, 2, 3  Следующий

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения