Автор | Сообщение |
|
| |
Пост N: 58
Зарегистрирован: 31.05.07
|
|
Отправлено: 12.03.10 09:02. Заголовок: CODEPAGE
Хочу переходить с xHarbour на Harbour из последних сборок, но столкнулся с тем, что некоторый код не могу перевести, поскольку не пойму, как подключить кириллическую кодовую страницу. Конструкция: REQUEST HB_CODEPAGE_RU866 hb_setCodePage('RU866') не работает... подскажите пожалуйста...
|
|
|
Ответов - 49
, стр:
1
2
3
All
[только новые]
|
|
|
| |
Пост N: 208
Зарегистрирован: 16.12.08
|
|
Отправлено: 17.04.14 16:18. Заголовок: Dima пишет: proc m..
Dima пишет: цитата: | proc main local amas REQUEST HB_LANG_RU866 HB_LANGSELECT("RU866") REQUEST HB_CODEPAGE_RU866 hb_cdpSelect( "RU866" ) amas:=directory("*.doc") aeval(amas,{|x| qout(x[1])}) return |
| данный код корректно отработал в xHarbour на файлах с кирилицей в названии.
|
|
|
|
| постоянный участник
|
Пост N: 3329
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.14 00:13. Заголовок: Dima пишет: Имена в..
Dima пишет: цитата: | Имена вывалились нормально на русском . |
| Да точно, этот короткий тест тоже у меня отработал НОРМАЛЬНО ! Полез в свою функцию сортировки получения массива... Вот через неё не срабатывало (а может и еще что-то мешает...) : Скрытый текст #include "Directry.ch" ************************************************ FUNCTION MyFileDirectory(cPath,cPicture, nSort ) LOCAL aDirectory := {}, nItem := 0, nI, aFiles := {}, aFileList := {}, cTemp DEFAULT nSort TO 1 // 1-сортировка по имени файла, 5-дата файла+имя файла IF nSort < 1 .AND. nSort > 5 Message( "Не правильный параметр сортировки = "+ALLTRIM(STR(nSort)), 5 ) RETURN {} ENDIF // Запись в aFileList информации из выбранного каталога aDirectory := DIRECTORY( cPath+cPicture ) IF LEN(aDirectory) > 0 FOR nItem := 1 TO LEN( aDirectory ) cTemp := DTOS( aDirectory[ nItem, F_DATE ] ) + LOWER(aDirectory[ nItem, F_NAME ]) AADD( aFileList, { LOWER(aDirectory[ nItem, F_NAME ] ), ; aDirectory[ nItem, F_SIZE ] , ; DTOS( aDirectory[ nItem, F_DATE ] ), ; aDirectory[ nItem, F_TIME ] , ; cTemp , ; } ) NEXT ASORT(aFileList,,, { |x, y| x[nSort] < y[nSort] }) // Сортировка имен файлов FOR nI := 1 TO LEN(aFileList) AADD(aFiles, aFileList[nI,1] ) NEXT ELSE Message( "Нет файлов в "+cPath+cPicture+" ...", 5 ) ENDIF RETURN( aFiles )
|
|
|
|
|
| Администратор
|
Пост N: 3145
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.04.14 07:51. Заголовок: Для того, чтобы имен..
Для того, чтобы имена файлов были в кодировке OEM, надо сделать функцию: #pragma BEGINDUMP #include "windows.h" HB_FUNC_STATIC( SETFILEAPIS ) // Имена файлов в кодировке OEM { SetFileApisToOEM(); } #pragma ENDDUMP и вызвать ее при старте программы: SETFILEAPIS() Тогда перекодировать ничего не надо.
|
|
|
|
| |
Пост N: 7
Зарегистрирован: 05.07.14
|
|
Отправлено: 23.07.14 10:34. Заголовок: spair2k пишет: ...к..
spair2k пишет: цитата: | ...как подключить кириллическую кодовую страницу |
| Большинство вопросов касается БД, что естественно. А у меня следующий вопрос. Если я собираю программу через hmg_IDE, то все нормально. Русский текст на форме отображается правильно Когда же я пытаюсь собрать программу с помощью .bat файла (приводится ниже), то получаю кракозябры: call C:\MiniGUI\batch\compile.bat demo %1 %2 %3 %4 %5 %6 %7 %8 %9 Как мне победить?
|
|
|
|
| |
Пост N: 85
Зарегистрирован: 24.04.13
|
|
Отправлено: 27.01.15 09:00. Заголовок: Имеется структуриров..
Имеется структурированный текстовый файл в 1251-кодировке. База данных в 866 кодировке. Возможно ли командой append from считать этот файл в базу чтобы была 866 кодировка? В append from есть параметр CODEPAGE, но как его использовать ?
|
|
|
|
| moderator
|
Пост N: 834
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.01.15 09:07. Заголовок: По идее ( я не прове..
По идее ( я не проверял сам ) надо открыть ваш целевой dbf, указав кодировку 866, а в append from указать кодировку источника - в данном случае 1251.
|
|
|
|
| |
Пост N: 86
Зарегистрирован: 24.04.13
|
|
Отправлено: 27.01.15 09:14. Заголовок: alkresin, попробовал..
alkresin, попробовал так: use sds codepage "RU866" zap appe from sds32.txt codepage ("RU1251") delimited with ( {"", "="} ) переносит в кодировке как в текстовом файле
|
|
|
|
| moderator
|
Пост N: 835
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.01.15 09:37. Заголовок: Хм... Думаю, это неп..
Хм... Думаю, это неправильно - какая-то ошибка в Харборе.. Во всяком случае, вот так работает: hb_cdpSelect( "RU866" ) use sds zap appe from sds32.txt codepage ("RU1251") delimited with ( {"", "="} )
|
|
|
|
| |
Пост N: 87
Зарегистрирован: 24.04.13
|
|
Отправлено: 27.01.15 11:34. Заголовок: alkresin пишет: Во..
alkresin пишет: цитата: | Во всяком случае, вот так работает: hb_cdpSelect( "RU866" ) use sds zap appe from sds32.txt codepage ("RU1251") delimited with ( {"", "="} ) |
| Ничего не получается и так :( Может как то можно через промежуточный файл преобразовать, какие-нибудь другие варианты?
|
|
|
|
| Администратор
|
Пост N: 3244
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.01.15 12:05. Заголовок: Если харбор собран с..
Если харбор собран с HB_CLP_STRICT, то append from ... codepage ... delimited with не сработает.
|
|
|
|
| Администратор
|
Пост N: 3245
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.01.15 12:07. Заголовок: Можно сделать так: ..
Можно сделать так: use... hb_cdpSelect( "RU1251" ) append from ... hb_cdpSelect( "RU866" )
|
|
|
|
|
| moderator
|
Пост N: 837
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.01.15 12:33. Заголовок: azoo пишет: Ничего ..
azoo пишет: цитата: | Ничего не получается и так :( |
| А request HB_CODEPAGE_RU1251 у вас объявлен ? цитата: | Может как то можно через промежуточный файл преобразовать, какие-нибудь другие варианты? |
| Ну, самый очевидный вариант: s := Memoread( "sds32.txt" ) hb_MemoWrit( "sds32.txt", hb_Translate( s, "RU1251", "RU866" ) )
|
|
|
|
| |
Пост N: 88
Зарегистрирован: 24.04.13
|
|
Отправлено: 27.01.15 12:51. Заголовок: Спасибо за ответы по..
Спасибо за ответы, получилось. Правильный вариант: REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU866" ) use sds zap appe from sds32.txt codepage ("RU1251") delimited with ( {"", "="} )
|
|
|
|
| постоянный участник
|
Пост N: 4167
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.15 15:01. Заголовок: Pasha пишет: при от..
Pasha пишет: цитата: | при открытии файла надо указывать 866-ю страницу: USE ... CODEPAGE "RU866" |
| А если создаешь базу и записать нужно в базу "RU866", а программа сама в кодировке RU1251 как делать ? Т.е. я делаю: DbCreate( cPathLocal+cFile, aStruct, "DBFCDX", .T., "MYALIAS" ) и копирую записи из другой базы (RU866) в MYALIAS ! Записи получаются в кодировке RU1251... А нужны в кодировке RU866. Как назначить кодировку RU866 при создании базы ?
|
|
|
|
| |
Пост N: 4800
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.15 15:09. Заголовок: Если верить сырцу db..
Если верить коментам в сырце dbCreate( cFile, aStruct, cRDD, lKeepOpen, cAlias, cDelimArg, cCodePage, nConnection )
|
|
|
|
| постоянный участник
|
Пост N: 625
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.15 15:10. Заголовок: Andrey пишет:Как наз..
Andrey пишет: цитата: | Как назначить кодировку RU866 при создании базы ? |
| 1. Harbour.. src\*.* 2. Far Alt+F7 *.prg,*.c наити dbcreate 3. получаем (dbcmd.c): /* * In Clipper the arguments are: * dbCreate( cFile, aStruct, cRDD, lKeepOpen, cAlias, cDelimArg ) * In Harbour: * dbCreate( cFile, aStruct, cRDD, lKeepOpen, cAlias, cDelimArg, cCodePage, nConnection ) (HB_EXTENSION) */ HB_FUNC( DBCREATE )
|
|
|
|
| постоянный участник
|
Пост N: 4168
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.15 15:16. Заголовок: Спасибо !!! :sm36: ..
Спасибо !!! Еще вопрос по ходу - что за параметр cDelimArg ?
|
|
|
|
| |
Пост N: 4801
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.15 15:19. Заголовок: Andrey пишет: Еще в..
Andrey пишет: цитата: | Еще вопрос по ходу - что за параметр cDelimArg ? |
| /* * NOTE: 4-th, 5-th and 6-th parameters are undocumented Clipper ones * 4-th is boolean flag indicating if file should stay open (any boolean * value will enable this behavior) * 5-th is alias - if not given then WA is open without alias * 6-th is optional DELIMITED value used by some RDDs like DELIM */
|
|
|
|
| постоянный участник
|
Пост N: 4170
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.15 15:23. Заголовок: Dima пишет: 6-th is..
Dima пишет: цитата: | 6-th is optional DELIMITED value used by some RDDs like DELIM |
| Я им не пользовался и не сталкивался...
|
|
|
|
| |
Пост N: 4802
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.05.15 15:33. Заголовок: Andrey пишет: Я им ..
Andrey пишет: цитата: | Я им не пользовался и не сталкивался... |
| Ну типа так request DELIM dbcreate("test",{{"t","n",10,0},{"t1","n",10,0}} , "DELIM", .t., "tst", ";") tst->(dbappend()) tst->t:=10 tst->t1:=20 close tst На выходе получим TEST.TXT Вот только результат в нем такой 10,20 вместо ожидаемого 10;20
|
|
|
Ответов - 49
, стр:
1
2
3
All
[только новые]
|
|