Форум » [x]Harbour » Есть ли функция названия месяца на укр.языке ? » Ответить

Есть ли функция названия месяца на укр.языке ?

Andrey: У кого есть готовая такая функция ? У себя в базу пишу и фигня получается... [pre2] cdp := hb_cdpSelect("UA1125") (cAls)->Month1 := UPPER(NTOCMONTH(nMonth-2)) + " " + HB_NtoS(nYear) // "C", 50, 0 (cAls)->Month2 := UPPER(NTOCMONTH(nMonth-1)) + " " + HB_NtoS(nYear) // "C", 50, 0 (cAls)->Month3 := UPPER(NTOCMONTH(nMonth)) + " " + HB_NtoS(nYear) // "C", 50, 0 hb_cdpSelect(cdp)[/pre2] Результат такой: [pre2]ЯЭТРЁ№ 2021 ФХТЁРЫ№ 2021 МРЁҐ 2021[/pre2]

Ответов - 9

Andrey: И в МиниГуи на форму название месяца кракозябы пишет: Как правильно выводить название месяца на форму и в базу ? Кодировку для окна переключил, текст .prg в кодировке RU1251 На окне вывожу кодовую страницу, всё вроде правильно.

SergKis: Andrey Попробуй[pre2] SET LANGUAGE TO UKRAINIAN SET CODEPAGE TO UKRAINIAN SET FONT TO "Arial", 11 DEFINE FONT ArialRu FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialRuBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 204 // RUSSIUN_CHARSET ... USE Test1 ALIAS TEST1 // в контролах с русским яз. используй FONT "ArialRu" или FONT "ArialRuBold" или др. назначенные фонты по DEFINE ... ... Для лог и др. txt, ini файлов исп. UTF-8, например ф-ии FUNC Utf8Bom() RETURN hb_utf8Chr( 0xFEFF ) /* e"\xEF\xBB\xBF" */ FUNC IsFileUtf8( cFile ) LOCAL cBom := hb_utf8Chr( 0xFEFF ) LOCAL cBuf := space(Len(cBom)) LOCAL hFile := FOpen(cFile, FO_READ + FO_SHARED) IF FError() == 0 FRead(hFile, @cBuf, Len(cBuf)) FClose(hFile) ENDIF RETURN cBom == cBuf т.е. _SetGetLogFile( cLog ) ; fErase( _SetGetLogFile() ) // log file delete ? Utf8Bom() // BOM utf8 ? hb_StrToUtf8( .... ) потом смотришь все в стандартном редакторе или hbedit сам читаешь такой файл cBuf := hb_memoread(cFile) If hb_StrIsUtf8 ; cBuf = hb_Utf8ToStr(subs(cBuf, Len(Utf8Bom())+1)) EndIf [/pre2]

SergKis: PS hb_StrIsUtf8(cBuf) // пропустил


SergKis: PS2 для установок SET LANGUAGE TO UKRAINIAN SET CODEPAGE TO UKRAINIAN вывод в log будет на украинском и utf8 можно не использовать (ты где то спрашивал про txt файлы с языками, ответил тут)

Петр: SergKis пишет: SET LANGUAGE TO UKRAINIAN SET CODEPAGE TO UKRAINIAN Это команды-обертки функций harbour hb_cdpSelect() hb_langSelect() [pre2]#include "hblang.ch" REQUEST HB_CODEPAGE_RU1251 REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_UA1125 REQUEST HB_CODEPAGE_UA866 REQUEST HB_LANG_RU REQUEST HB_LANG_UK PROCEDURE Main( cLng ) hb_cdpSelect( "RU1251" ) hb_langSelect("RU") hb_setTermCP( "RU866", "RU1251" ) ? "Prev:", hb_langSelect() ? hb_langName() ? NationMsg( 1 ) ? CMonth( Date() ) ? CDoW( Date() ) ? "HB_LANG_ITEM_BASE_MONTH ", "[" + hb_langMessage( HB_LANG_ITEM_BASE_MONTH ) + "]" ? "HB_LANG_ITEM_BASE_DAY ", "[" + hb_langMessage( HB_LANG_ITEM_BASE_DAY ) + "]" ? "---------" Inkey( 0 ) hb_cdpSelect( "UA1125" ) hb_langSelect("UK") hb_setTermCP( "RU866", "UA1125" ) ? "Prev:", hb_langSelect("uk") ? hb_langName() ? NationMsg( 1 ) ? CMonth( Date() ) ? CDoW( Date() ) ? "HB_LANG_ITEM_BASE_MONTH ", "[" + hb_langMessage( HB_LANG_ITEM_BASE_MONTH ) + "]" ? "HB_LANG_ITEM_BASE_DAY ", "[" + hb_langMessage( HB_LANG_ITEM_BASE_DAY ) + "]" ? "---------" Inkey( 0 ) RETURN [/pre2] Но у нас Андрей часто программирует на MiniGui

SergKis: Петр пишет Это команды-обертки функций harbour ... Но у нас Андрей часто программирует на MiniGui Потому предложил попробовать уст. работу с укр. языком для hmg, а для рус. яз. исп. hardset фонта для контролов.

Andrey: SergKis пишет: Попробуй Не совсем то... Основной язык программы это русский. А отдельные меню нужно на украинском. Переделывать всю свою прогу - это труба дело. Нужно наверное отдельный тест делать... Петр пишет: Но у нас Андрей часто программирует на MiniGui Пишу так - прога на Минигуи. Просто и коротко. Все понимают что язык программирования Харбор, библиотека МиниГии.

SergKis: Andrey пишет Основной язык программы это русский. кусок кода твойУ себя в базу пишу и фигня получается... cdp := hb_cdpSelect("UA1125") (cAls)->Month1 := UPPER(NTOCMONTH(nMonth-2)) + " " + HB_NtoS(nYear) // "C", 50, 0 (cAls)->Month2 := UPPER(NTOCMONTH(nMonth-1)) + " " + HB_NtoS(nYear) // "C", 50, 0 (cAls)->Month3 := UPPER(NTOCMONTH(nMonth)) + " " + HB_NtoS(nYear) // "C", 50, 0 hb_cdpSelect(cdp) работает правильно (в смысле фигня), если база в 1251, надо[pre2] cdp := hb_cdpSelect("UA1125") сMonth1 := UPPER(NTOCMONTH(nMonth-2)) + " " + HB_NtoS(nYear) // "C", 50, 0 сMonth2 := UPPER(NTOCMONTH(nMonth-1)) + " " + HB_NtoS(nYear) // "C", 50, 0 сMonth3 := UPPER(NTOCMONTH(nMonth)) + " " + HB_NtoS(nYear) // "C", 50, 0 hb_cdpSelect(cdp) и потом cdp := hb_cdpSelect("UA1125") (cAls)->Month1 := cMonth1 (cAls)->Month2 := cMonth2 (cAls)->Month3 := cMonth3 hb_cdpSelect(cdp) [/pre2] в базу запишет без искажения Не нашел в ch файлах charset для укр. яз. в CP1251, если у тебя есть, то сделай фонты с charset и исп. для контролов при работе с RUSSIAN установкой

SergKis: PS[pre2] и потом cdp := hb_cdpSelect("UA1125") это убрать(одним пальцем на весу набираю, сори) (cAls)->Month1 := cMonth1 [/pre2]



полная версия страницы