|
|
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
1) при открытии таблицы в VFP9 SP1 у меня выдает ошибку, что "таблица нарушена востановите ее". Но в самом деле она выглядит отлично. Через VFP6 FP 2.6 все нормально - открыта? 2) есть 2 таблицы одна 1251 кодировка - в которую надо записать данные, а другая 866 кодировка из которой АППЕНДЮ все записи получается текстовое поле полный "______________ _. _." сделал это CPZERO! USE sprav exclusive ZAP CPCONVERT(1251,866,fio) APPEND FROM p+'tel\tel' do Tools\CPZERO\cpzero.prg with 'c:\t\sprav.dbf',1251 Но есть ли другой способ???? за ранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 11:45 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
jonvtur1) при открытии таблицы в VFP9 SP1 у меня выдает ошибку, что "таблица нарушена востановите ее". Но в самом деле она выглядит отлично. Через VFP6 FP 2.6 все нормально - открыта? Это надо понимать буквально . Значит структура действительно нарушена. Дело в том, что в VFP9 ужесточили требования к контролю структуры. Например, достаточно распространенное повреждение структуры - это несоответствие реального (физического) количества записей и того количества, которое записано в заголовке таблицы. Если в VFP6 или FPD2.6 таблица открывается нормально, то создайте таблицу заново и через APPEND FROM перекачайте в нее данные. Select-SQL или COPY TO здесь не поможет. При таких глобальных перекачках для скорости файл dbf может просто копироваться. Т.е. скопируются и все ошибки. Можно, конечно, снизить или отключить уровень контроля структуры командой SET TABLEVALIDATE но это означает игнорировать проблему, а не лечить. В конце концов, это может кончится полной потерей данных. jonvtur2) есть 2 таблицы одна 1251 кодировка - в которую надо записать данные, а другая 866 кодировка из которой АППЕНДЮ все записи получается текстовое поле полный "______________ _. _." сделал это CPZERO! USE sprav exclusive ZAP CPCONVERT(1251,866,fio) APPEND FROM p+'tel\tel' do Tools\CPZERO\cpzero.prg with 'c:\t\sprav.dbf',1251 Но есть ли другой способ???? за ранее благодарен FoxPro и сам автоматически переведет данные из разных кодовых страниц. Но для этого должны выполняться следующие условия: 1) Сами таблицы должны иметь признак кодовой страницы. Код: plaintext 1. 2. Должно быть значение отличное от 0. Для DOS-таблиц - 866, для Windows-таблиц - 1251. В версии FPD2.0 этот признак вообще не проставлялся. Поэтому надо принудительно поставить кодовую страницу 866 для таких таблиц. На работу DOS-приложений это никак не повлияет. 2) Должен быть файл конфигурации CONFIG.FPW (это обычный текстовый файл) со строкой CODEPAGE=1251 Как именно подключить этот файл читай здесь Часть букв при вводе заменяются латинскими Если все сделано правильно, то в среде FoxPro команда ?CPCURRENT() должна вернуть 1251 После этого, уже можно не обращать внимания на кодовую страницу таблиц. Конвертация кодовых страниц будет происходить автоматически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 23:04 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Но у меня при открытии таблиц DOS команда CPDBF() возвращает 0 и поэтому в таблицу с CODEPAGE=1251 текстовые поля APPENDятся и в дальнейшем отображаюстя в форме в неверной кодировке! попытаюсь объяснить: есть tel.dbf - dos есть spr.dbf(1251) пишу: use spr zap append from tel в таблице spr команда ?cpdbf() выдавала 1251, после Append ?cpdbf() выдает 866. Поэтому при выводе на экран (brow) получается текстовые поля "________. _. _" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 11:52 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
1) Необходимо при помощи CPZERO.PRG установить 866 кодовую странцу для tel.dbf. На работу DOS-приложений это никак не повлияет. 2) Необходим файл конфигурации Confog.fpw со строкой CODEPAGE=1251 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 14:05 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
ВладимирМ1) Необходимо при помощи CPZERO.PRG установить 866 кодовую странцу для tel.dbf. На работу DOS-приложений это никак не повлияет. 2) Необходим файл конфигурации Confog.fpw со строкой CODEPAGE=1251 А если в данный момент у меня tel используется другим приложением DOS что произойдет? Не нарушатся ли индексы при закрытии работающего DOS-приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 14:11 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
jonvturА если в данный момент у меня tel используется другим приложением DOS что произойдет? Не нарушатся ли индексы при закрытии работающего DOS-приложения? Могут и нарушится. Дождись перерыва в работе и установи признак 866 кодовой страницы. Это разовая операция. Как правило, DOS-приложения игнорируют 29 байт (где записан этот признак). Хотя, если приложение написано на Clipper, то, время от времени, этот байт может очищаться при выполнении некоторых операций Clipper. Если эта таблица открыта в режиме Shared, то можно перед закачкой данных создать копию таблиц (только НЕ средствами FoxPro). В этой копии установить признак 866 кодовой страницы и работать уже с этой копией. Скопировать можно, используя, например, объект FileSysytemObject Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Подробнее об объекте FileSystemObject можно почитать здесь http://kodu.neti.ee/~juri4/vfpplus/vbs_fso_01_ru.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 14:36 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Вот именно что эту таблицу у меня использует Clipper при том что ее используют непрерывно сразу несколько пользователей! А может мне в рабочей области своей проги создать файлы такое же при открытии их zap-ить и командой copy file копировать затем закрывать файлы и уже cpzero.prg исправлять кодовую страницу. И в дальнейшем работать с новыми таблицами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 14:43 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
jonvturА может мне в рабочей области своей проги создать файлы такое же при открытии их zap-ить и командой copy file копировать затем закрывать файлы и уже cpzero.prg исправлять кодовую страницу. И в дальнейшем работать с новыми таблицами? Попробуй. Может и получиться... Хотя, COPY FILE - не будет работать с открытыми таблицами. Попробуй сделать копирование DOS-таблиц таким способом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Здесь принципиально важно установить признак кодовой страницы ДО операций чтения/записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 14:55 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Спасибо Владимир! Запарка получилась из-за того что в оболочке Фокса, после очистки задается вопрос в какой кодировке следует открыть файл. При компиляции в ЕГЗешнике запрос не выводится а сразу переходит на выполнение команды cpzero! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 15:14 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Вопрос задается ТОЛЬКО еслии вы открываете таблицу exclusive С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 15:21 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Все-таки, наверное, не есть гуд прописывать что-то в заголовке файла, тем более, что файл может быть заблокирован другими пользователями. Не правильнее ли при открытии файла проверять кодовую страницу, если она есть явно прописанная - то повезло, если нет, что при чтении/записи использовать CPCONVERT? Например так: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 04:14 |
|
||
|
Помогите с USE и кодировкой
|
|||
|---|---|---|---|
|
#18+
Во первых в проекте мне приходится открывать таблицы EXCLUSIVE чтобы их очистить и упаковать! И использую не открытие таблицы а лишь всего добавляю из имеющихся, поэтому мне нереально добавлять цикл для проверки кодовой страницы! Пробывал извращался с исходной таблицей (в которую добавляю) и cp-конвертил поля все равно извращение получается! дошел до того: создал таблицы локально, скопировал в них из имеющихся (copy to) затем cpzero поменял кодовую страницу на 866 и уже из них я добавлял в .dbf (с кодировкой 1251), с которой в дальнейшем работаю! на экране все прикрасно видится! Большое спасибо всем, кто принял участие в разборе, казалось бы небольшой проблемы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 07:49 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33596855&tid=1591802]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
90ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 426ms |

| 0 / 0 |
