On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 13
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 27.02.13 08:59. Заголовок: Вывод на экран сообщений на русском в консоле


Консольная программа, а если точнее - утилита командной строки
Выполняет кое-какие действия, по ходу работы выводит на экран сообщения на русском языке
Исходный PRG-файл в кодировке WIN-1251 - так уж сложилось,
менять кодировки не хочется, - там просто вывод сообщений на экран ч/з QOUT
Т.к. кроме консольной программы, есть еще и GUI программа (MiniGUI), то обычно
скачиваю очередной релиз "Harbour MiniGUI Extended" и использую
Harbour из этого дистрибутива. Собираю утилитой HBMK2

До версии HMG 2.1.1 вывод сообщений на экран был таким:

QOUT(hb_AnsiToOem("Ошибка - отсутствует файл: ") + cFileName)

После установки HMG 2.1.1 получил "крякозябриков", убрал hb_AnsiToOem(),
все стало нормально вплоть до установки версии HMG 2.2.0 (на HMG 2.1.9 - все нормально)

Попробовал снова использовать hb_AnsiToOem() - снова все сообщения нормально читаются
Как я понимаю - HMG здесь не причем - это Harbour
Или все-таки утилита HBMK2 ? В ней столько новых опций появилось

Подскажите, что можно сделать чтобы и оставить исходный файл в кодировке
WIN-1251 и более не заморачиваться с функциями hb_AnsiToOem()


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]





Пост N: 731
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 27.02.13 11:58. Заголовок: Andrey_IV пишет: Ил..


Andrey_IV пишет:

 цитата:
Или все-таки утилита HBMK2 ? В ней столько новых опций появилось

Она тут ни причем.

Andrey_IV пишет:

 цитата:
Подскажите, что можно сделать чтобы и оставить исходный файл в кодировке
WIN-1251 и более не заморачиваться с функциями hb_AnsiToOem()



 
REQUEST HB_CODEPAGE_UA1251
func main()
hb_cdpSelect("UA1251")
if !hb_FileExists("ququ.txt")
?"Файл не знайдено"
endif
return


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 27.02.13 12:56. Заголовок: AlexMyr пишет: RE..


AlexMyr пишет:


 цитата:
REQUEST HB_CODEPAGE_UA1251
func main()
hb_cdpSelect("UA1251")
if !hb_FileExists("ququ.txt")
?"Файл не знайдено"
endif
return



У меня сейчас в программе так:

REQUEST HB_CODEPAGE_RU1251
REQUEST HB_LANG_RUWIN

FUNCTION Main( ... )

LOCAL cFileName := "ququ.txt"

hb_SetCodepage("RU1251")
hb_LangSelect("RUWIN")

IF !FILE(cFileName)
QOUT(Ошибка - отсутствует файл: " + cFileName)
ENDIF

RETURN

На Harbour, что шел с дистрибутивами HMG 2.1.8 и HMG 2.1.9 -
все нормально выводится - проверял сегодня

А вот после установки HMG 2.2.0 вместо русского получаю "крякозябры"

Использование функции hb_AnsiToOem() все исправляет

Так что дело все-таки в Harbour новой сборки (наверное). Собственно исправить код
исходника проблемы никакой нет. Но интересно: это уже насовсем так Harbour работать будет ?
Или снова какой подвох ждать ? Ведь именно так Harbour выводил текст в кодировке WIN-1251
до мая прошлого года. Потом поведение изменилось. Теперь снова возврат к старому ?



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2699
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.02.13 13:00. Заголовок: Andrey_IV пишет: hb..


Andrey_IV пишет:

 цитата:
hb_SetCodepage("RU1251")



Это точно Harbour ? Эта функция давно переименована в hb_cdpSelect

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 27.02.13 14:04. Заголовок: Pasha пишет: Это т..


Pasha пишет:


 цитата:
Это точно Harbour ? Эта функция давно переименована в hb_cdpSelect



Harbour MiniGUI Extended Edition 2.1.9 - 2013.01.22

Harbour Version: 3.2.0dev
Built on: 2013-01-21
Last ChangeLog entry: 2013-01-21 16:36 UTC+0100 Przemyslaw Czerpak
Changelog version: 18767

далее - см. Файл C:\MiniGUI\Harbour\Include\hbcompat.ch

#ifdef __XHARBOUR__
#xtranslate hb_cdpSelect( [<x,...>] ) => hb_SetCodepage( <x> )
#else
#xtranslate hb_SetCodepage( [<x,...>] ) => hb_cdpSelect( <x> )
#endif

строка
#include hbcompat.ch
у меня в исходник включена, и по версию HMG 2.1.9 все отрабатывалось нормально
по крайней мере - никаких ошибок при компиляции не было

Возможно, что в Harbour с HMG 2.2.0 что-то поменялось, но ошибок тоже не было
Буду разбираться...

Всем спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2700
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.02.13 16:49. Заголовок: Andrey_IV пишет: Во..


Andrey_IV пишет:

 цитата:
Возможно, что в Harbour с HMG 2.2.0 что-то поменялось, но ошибок тоже не было
Буду разбираться...



Может быть, это не уникодная сборка ? Для уникодной достаточно указать кодовую страницу, а для неуникодной в консольной утилите надо специально вызывать hb_AnsiToOem() для правильного вывода на экран.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 735
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 27.02.13 17:03. Заголовок: Andrey_IV пишет: Ис..


Andrey_IV пишет:

 цитата:
Использование функции hb_AnsiToOem() все исправляет

вдогонку, после следующего релиза (когда будет не знаю) HB_OEMTOANSI()/HB_ANSITOOEM() уберут из harbour, Viktor добавил в библиотеку hbwin след. ф-ии WIN_OEMTOANSI() and WIN_ANSITOOEM().

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 31
Зарегистрирован: 24.02.11
ссылка на сообщение  Отправлено: 01.03.13 07:41. Заголовок: А в чем смысл таких ..


А в чем смысл таких переименований?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2705
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.03.13 09:09. Заголовок: vvv пишет: А в чем ..


vvv пишет:

 цитата:
А в чем смысл таких переименований?



Поскольку эти функции переносятся в библиотеку hbwin, они должны соответствовать ее пространству имен.
Виктор все делает по правилам.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет