Автор | Сообщение |
|
| |
Пост N: 119
Зарегистрирован: 02.02.06
|
|
Отправлено: 15.05.09 14:06. Заголовок: Ох уж эти буковки
Не работает команда Append, хоть ты тресни. Точнее работает и на первый взгляд красиво. Теперь суть. Есть база кодировка 866. Создаю файл и командами Append добавляю туда информацию из других баз и все бы хорошо, но только маленькие русские буковки не всегда правильно лезут. Вот. Например вместо "р" лезет "а", вместо "т" лезит "в", вместо "ф" лезит"д". С большими буквами полный порядок. Наконец выговорился, одному трудно это выносить. Все.
|
|
|
Ответов - 18
[только новые]
|
|
|
| Администратор
|
Пост N: 1130
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.05.09 15:42. Заголовок: Такое может быть, ес..
Такое может быть, если файлы открыты с разными кодировками: т.е: use t1 codepage ru866 use t2 codepage ru1251 t1->(dbAppend()) t1->f1 := t2->f1 будет выполняться перекодировка ru1251 -> ru866 Чтобы перекодировка не выполнялась, надо либо при открытии указывать одинаковую кодировку, либо не указывать ее вообще
|
|
|
|
| |
Пост N: 120
Зарегистрирован: 02.02.06
|
|
Отправлено: 18.05.09 12:01. Заголовок: У меня выполняется в..
У меня выполняется вот такой блок: SELECT 001 s_struct=dbstruct() dbcreate(sf1,s_struct) SELECT 118 USE &SF1 EXCLUSIVE CODEPAGE RU866 APPEND FROM T001 FOR DATA >= GOD .AND. DATA <= MES APPEND FROM T003 FOR DATA >= GOD .AND. DATA <= MES Все файлы в досовской кодировке.
|
|
|
|
| Администратор
|
Пост N: 1131
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 12:12. Заголовок: надо или не указыват..
надо или не указывать кодировку в команде use, или указать ее и в команде append: APPEND FROM T001 FOR DATA >= GOD .AND. DATA <= MES CODEPAGE RU866
|
|
|
|
| |
Пост N: 121
Зарегистрирован: 02.02.06
|
|
Отправлено: 18.05.09 12:25. Заголовок: Такая конструкция не..
Такая конструкция не катит. Syntax error "syntax error at 'FROM' " Уже проходил. Harbour Version: 1.1.0dev
|
|
|
|
| |
Пост N: 122
Зарегистрирован: 02.02.06
|
|
Отправлено: 18.05.09 12:35. Заголовок: А вот если открывать..
А вот если открывать без указания кодовой таблицы, то действительно получается нормально. Но очень это все странно, почему только маленькие буковки и то избранно?
|
|
|
|
| Администратор
|
Пост N: 1132
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 13:11. Заголовок: Наверное, по умолчан..
Наверное, по умолчанию стоит кодировка 1251 Вот append from и перекодирует данные 1251->866 Но данные и так находятся в кодировке 866, и получается такой парадоксальный результат
|
|
|
|
| |
Пост N: 123
Зарегистрирован: 02.02.06
|
|
Отправлено: 18.05.09 13:32. Заголовок: Спасибо, Паша, за по..
Спасибо, Паша, за помощь. Придется базу открывать дважды, без кодовой таблицы, а потом с кодовой таблицей. Может кто-нибудь добавит в команду APPEND параметр CODEPAGE.
|
|
|
|
| Администратор
|
Пост N: 1133
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 13:53. Заголовок: Дык он там есть Я ко..
Дык он там есть Я когда-то и добавлял :) Возможно, что-то в препроцессоре Можно вызвать функцию __dbApp напрямую
|
|
|
|
| |
Пост N: 124
Зарегистрирован: 02.02.06
|
|
Отправлено: 18.05.09 13:59. Заголовок: Спасибо, буду иметь ..
Спасибо, буду иметь ввиду.
|
|
|
|
| постоянный участник
|
Пост N: 123
Зарегистрирован: 27.01.07
|
|
Отправлено: 18.05.09 14:40. Заголовок: Можно создать *.ppo ..
Можно создать *.ppo и глянуть, чё получилось.
|
|
|
|
| Администратор
|
Пост N: 1134
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 14:53. Заголовок: Сергей Р пишет: Так..
Сергей Р пишет: цитата: | Такая конструкция не катит. Syntax error "syntax error at 'FROM' " Уже проходил. Harbour Version: 1.1.0dev |
| Похоже, что-то с препроцессором все-таки Я использую xHarbour сборки август-2008, и там эта команда еще компилировалась На xHarbour CVS гляну позже
|
|
|
|
|
| Администратор
|
Пост N: 1135
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 14:57. Заголовок: В include\std.ch..
В include\std.ch должна быть команда: #command APPEND [FROM <(f)>] [FIELDS <fields,...>] ; [FOR <for>] [WHILE <while>] [NEXT <next>] ; [RECORD <rec>] [<rest:REST>] [ALL] [VIA <rdd>] ; [CODEPAGE <cp>] [CONNECTION <conn>] => ; __dbApp( <(f)>, { <(fields)> }, ; <{for}>, <{while}>, <next>, <rec>, <.rest.>, <rdd>, <conn>, <cp> ) Она есть ? с параметром codepage ?
|
|
|
|
| постоянный участник
|
Пост N: 658
Зарегистрирован: 09.10.06
|
|
Отправлено: 18.05.09 15:09. Заголовок: Pasha, речь, наверно..
Pasha, речь, наверное, про Harbour Harbour Version: 1.1.0dev И тогда все правильно, команда APPEND класс CODEPAGE не содержит. Топик-стартеру, все таки явно надо бы указывать на чем летает. Использовать __dbApp или то-что Pasha предложил цитата: | #command APPEND [FROM <(f)>] [FIELDS <fields,...>] ; [FOR <for>] [WHILE <while>] [NEXT <next>] ; [RECORD <rec>] [<rest:REST>] [ALL] [VIA <rdd>] ; [CODEPAGE <cp>] [CONNECTION <conn>] => ; __dbApp( <(f)>, { <(fields)> }, ; <{for}>, <{while}>, <next>, <rec>, <.rest.>, <rdd>, <conn>, <cp> ) |
|
|
|
|
|
| Администратор
|
Пост N: 1136
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.05.09 15:25. Заголовок: Лучше добавить это н..
Лучше добавить это на SVN Петр, напишите пожалуйста в mail list. Тем более, поддержка эта в Harbour есть
|
|
|
|
| постоянный участник
|
Пост N: 659
Зарегистрирован: 09.10.06
|
|
Отправлено: 18.05.09 16:17. Заголовок: Да, так будет лучше...
Да, так будет лучше. Сегодня вечером или завтра с утра добавлю.
|
|
|
|
| |
Пост N: 127
Зарегистрирован: 02.02.06
|
|
Отправлено: 19.05.09 09:59. Заголовок: Спасибо ребята, очен..
Спасибо ребята, очень полезные вещи делаете.
|
|
|
|
| |
Пост N: 8
Зарегистрирован: 14.10.08
|
|
Отправлено: 27.05.09 12:52. Заголовок: Есть возможность ис..
Есть возможность использовать HB_TRANSLATE( cFieldValue, cFrom,cTo ) в данном случае "RU866","RU1251" Только должно быть указано что то типа #ifdef __XHARBOUR__ REQUEST HB_CODEPAGE_RUWIN, HB_CODEPAGE_RU866 #define RUWIN "RUWIN" #else REQUEST HB_CODEPAGE_RU1251, HB_CODEPAGE_RU866 #define RUWIN "RU1251" #endif Кстати непонятно, эти реквесты обрабатываются во время компиляции или во время исполнения программы. Хотелось бы загрузить сразу все HB_CODEPAGE какие возможны или во время исполнения подключать необходимые.
|
|
|
|
| постоянный участник
|
Пост N: 664
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.05.09 22:32. Заголовок: XVar пишет: Кстати ..
XVar пишет: цитата: | Кстати непонятно, эти реквесты обрабатываются во время компиляции или во время исполнения программы. |
| Во время связывания программы цитата: | Хотелось бы загрузить сразу все HB_CODEPAGE какие возможны или во время исполнения подключать необходимые. |
| см. ответ на первый вопрос
|
|
|
|