Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Классический вопрос про краказяблики в такблицах DBASE через BDE   Найти похожие ветки 

 
Rule ©   (2004-09-01 12:44) [0]

Столкнулся с интересной ситуацией, в BDE язык NATIV драйвера на DBASE настроен "ascii" ANSI,
в самих таблицах тоже кодировка такая стоит,
открываю последовательно три таблицы в своем приложении, через одни и теже компоненты класическая свлязка
TABLE-DATASOURCE-DBGRID, и мне показывает одна таблица нормально, а 2 с "краказябликами", вот помогите пожалуйста советом
компоненты использую родоные BDEшные, делфи у меня седьмое (лицензионное :) ), вот понять ничего не могу


 
Rule ©   (2004-09-01 12:46) [1]

Ой забыл сказать что информация в таблицах в кодировке Win1251,  заносил информацию с 1С, при просмотре утилитой DBFViuwer все показывает нормально и говорит что кодировка Win1251


 
Rule ©   (2004-09-01 13:05) [2]

ап


 
Rule ©   (2004-09-01 13:13) [3]

И ещё интересный факт, отменил в текстовом поле transliterate,  и все заработало нормально, а почему в другой таблице он не перекодирует, и как сделать так чтобы оно автоматчиески не прекодировало, ведь я щас использую TTABLE,  а если менять таблицы динамически, неужели надо и свойство менять постоянно ?


 
Роман Снегирев   (2004-09-01 13:32) [4]

я уже устал отвечать на этот вопрос


 
Rule ©   (2004-09-01 14:22) [5]

Роман Снегирев   (01.09.04 13:32) [4]
ну вот, а если ещё раз, буду очень благодарен, перерыл всю базу в этом направлении (за последнюю неделю), и никто не отвечал на такой вопрос, хотя точно помню что было вот только тогда не обращал внимания


 
Роман Снегирев   (2004-09-01 14:32) [6]

ну вообщем надо в BDEAdministrator поставить Configuration->Drivers->DBASE->langdriver=dBASE RUS cp866


 
Rule ©   (2004-09-01 14:45) [7]

Роман Снегирев   (01.09.04 14:32) [6]
Хех, а толку, смотри
Rule ©   (01.09.04 12:46) [1]
Ой забыл сказать что информация в таблицах в кодировке Win1251,  заносил информацию с 1С, при просмотре утилитой DBFViuwer все показывает нормально и говорит что кодировка Win1251


Я кстати нашел выход, в TTable надо выбрать в свойстве tableType - ttFoxPro
глубины смысла не понимаю но так понимаю что 1С-ка создает фокспрошные таблицы, вот поэтому и карявается все, но все же до сих пор интересно, почему одна нормально показывалась а 2 нет, а щас все три нормально, когда установил такое значение


 
Роман Снегирев   (2004-09-01 15:15) [8]

эх...., просмотрел. а что в этом случае "ascii" ANSI не помогает? Короче, наконец то придется мне объяснить популярно (может быть первый и последний раз) как BDE читает кодировку из таблиц DBASE. В первую очередь она читает 29 байт dbf файла. Кому интересно
38-кодовая страница 866 DOS Russian
87-кодовая страница 1251 Windows ANSI
и т.д.
Так вот, если этот самый байт обнулен (что чаще всег бывает), тогда BDE смотрит в свои настройки: Configuration->Drivers->Native->LangDriver. Вот собственно и все. Хочу только заметить, что на самом деле все зависит от кодировки, в которой реально создавалась и заполнялась таблица, т.е. если например база 1с-овская (win1251), то как уж вы не переписывайте 29 байт в значение 38, не настраивайте BDE, все равно кодировку 866 вам ей не придать


 
Reindeer Moss Eater ©   (2004-09-01 15:18) [9]

Короче, наконец то придется мне объяснить популярно (может быть первый и последний раз)

Все это полуправда.
Кому действительно было интересно, тот знает, что не во всех версиях DBASE кодировка указана в 29 байте заголовка.


 
Rule ©   (2004-09-01 15:22) [10]

Роман Снегирев   (01.09.04 15:15) [8]
а что в этом случае "ascii" ANSI не помогает?
вот в том то и дело, что всегда работало и на одну таблицу подействовало а на две нет

Так вот, если этот самый байт обнулен
В моем случае и 29 байт во всех таблицах и настройки драйвера были "ascii" ANSI проверял в дбфвьювере и в датабейздесктопе

все равно кодировку 866 вам ей не придать
так и не нада, надо наоборот чтоб он значит эту кодировку не трогал вообще, как есть пусть так и показывает, если явно отключить transliterate, то все нормально, но видимо все дело обстояло в типе таблицы типа фокспро, ну вобщем все нормально, спасибо за разьяснения, но думаю скорее всего у меня на машине глюк какойто нехороший, потомучто я толькочто попробовал на другой машине, с такимиже настройками БДЕ и с темиже файлами, то все нормально, бред какойто, как всегда (поэтому не пользуюсь БДЕ, много необьяснимых сюрпризов)


 
Rule ©   (2004-09-01 15:23) [11]

Reindeer Moss Eater ©   (01.09.04 15:18) [9]
Мы говорим про четвертую версию, так что тут полная правда


 
Reindeer Moss Eater ©   (2004-09-01 15:29) [12]

С таблицами от 1с я борюсь так:

Всегда сбрасываю 29 байт в ноль.
Если данные в DOS использую драйвер dbase 866 rus
Если данные в Win использую драйвер ascii


 
Rule ©   (2004-09-01 15:31) [13]

Reindeer Moss Eater ©   (01.09.04 15:29) [12]
И чего, помогает ?


 
Rule ©   (2004-09-01 15:32) [14]

Reindeer Moss Eater ©   (01.09.04 15:29) [12]
щас попробую


 
Rule ©   (2004-09-01 15:38) [15]

А тогда вопрос, чес сбрасывется, дбфвьювер сбрасываеть не хочет, а дбдесктопе нет даже такой возможности, ручкам  чтоли отсчитывать байты ?


 
Reindeer Moss Eater ©   (2004-09-01 15:43) [16]

В компьютере есть процессор.
Он умеет считать.
Не надо руками.


 
Роман Снегирев   (2004-09-01 15:48) [17]

короче если ты точно знаешь что у тебя кодировка win1251, то просто перепиши 29 байт в значение 87 и BDE будет работать нормально, а вообще я бы посоветывал отказаться от BDE


 
Rule ©   (2004-09-01 15:55) [18]

Reindeer Moss Eater ©   (01.09.04 15:43) [16]
:)

Роман Снегирев   (01.09.04 15:48) [17]
то просто перепиши 29 байт в значение 87 и BDE будет работать нормально,

на других машинах работает, а на моей нет, вот я и говорю что аномалия, кончено я согласен что BDE  не блеск, но под рукой ничего другово не было

короче если ты точно знаешь что у тебя кодировка win1251

точно знаю на 100%, при формировании в 1С-ке таблицы я явно указал кодировку

а вообще я ж говорю в моем случае я решение нашел, просто поставил свойство TTabl"a
tableType в ttFoxPro и нормально работает на всех машинах (вот природа такого поведения не совсем понятна, наверное всетаки чемто отличаются у меня эти три таблицы, иначе и быть не может) ...

Всем огромное спасибо за участие и оказаную мне помощь


 
Роман Снегирев   (2004-09-01 16:07) [19]

на самом деле DBASE версии до 4 и FoxPro (версии до 2.5) абсолютно ничем не отличаются. Кстати я тоже замечал что при установке tableType в ttFoxPro кодировка win1251 лучше читается


 
Val ©   (2004-09-01 16:22) [20]

>[19] Роман Снегирев   (01.09.04 16:07)
> кодировка win1251 _лучше_ читается

крупнее шрифт? ;)


 
Rule ©   (2004-09-01 17:01) [21]

Val ©   (01.09.04 16:22) [20]
Нет, проблемм меньше, и кстати разобрался в чем у меня всетаки проблемма была

почемуто у меня BDE ин


 
Rule ©   (2004-09-01 17:03) [22]

продолжение:
не реагировала на изменения,которые я вносил в настройки драйвера на дбейз, а вот на фокспро реагировал и когда я добраюсь к таблице чрезе эти драйвера то все работает, хотя на других машинах что так что так все нормально, тоесть на моей машине накрылся бдешный драйвер на дбез, вот и все ... а я тут трагедию прям устроил :)



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.03 c
1-1095665112
Ярыч
2004-09-20 11:25
2004.10.03
создание объектов класса TPanel в runtime


1-1095214653
Артем К.
2004-09-15 06:17
2004.10.03
Ускорение запуска программы?


3-1094113603
denisww
2004-09-02 12:26
2004.10.03
Нужна помосчь


1-1095195660
][ncognito
2004-09-15 01:01
2004.10.03
OnChanging в TreeView


4-1093446638
noname
2004-08-25 19:10
2004.10.03
Драйвер на Delphi!