Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DBF в ДОСовой [D6, dBase, FoxPro]


Morj ©   (2004-09-30 09:42:00) 

Подскажите такую вещь: есть DBF-файл в досовской кодировке. При вставке строк в текстовые поля все символы заменяются на решетки ('#'):

var strsmall:tstrings;
...
FieldByName('KD0').AsString:=strsmall[20];


Digitman   (2004-09-30 10:41:00) [1]

раз уж св-во LANGDRIVER установлено для native-драйвера Foxpro, то и в алиасе укажи DEFAULTDRIVER = FoxPro
до кучи и в таблице укажи TableType = ttFoxPro, хуже не будет


Morj   (2004-09-30 10:41:00) [2]

Поставил TableType=FoxPro, все исправилось. Спасибо за помощь, Digitman!


Morj   (2004-09-30 10:39:00) [3]

Вот еще пример:

FieldByName('KD0').AsString:=strsmall[20];
showmessage(strsmall[20]);
showmessage(DosToWin(FieldByName('KD0').AsString));

Первый showmessage - "Октябрьская д.30"
Второй showmessage - "##############30"


Morj   (2004-09-30 10:34:00) [4]

TableType = ttDefault


Morj   (2004-09-30 10:33:00) [5]

Вставлял уже и в виндозовской кодировке, и в дососвской - бесполезно. При настройке алиаса я поставил тип STANDARD. Может в этом дело?


Digitman   (2004-09-30 10:32:00) [6]


> Morj


угу ... компьютер, к примеру ..

я ж тебя спросил, ты зачем строку-то перед вставкой готовишь в ДОС-кодировке ?

strsmall[20]:= 'Обыкновенная ANSI-строка !';
FieldByName('KD0').AsString := strsmall[20];

и ты утверждаешь, что этот код с учетом LANGDRIVER = dbase RUS cp866 приводит к решеткам ?

TTable.TableType чему у тебя равно ?


Morj   (2004-09-30 10:24:00) [7]

Может, еще что-нибудь нужно поменять?


Digitman   (2004-09-30 10:23:00) [8]


> Проверил строку перед вставкой - кодировка досовская


дык с какого перепугу ты пытаешься вставить строку с кодами символов, соответствующих ДОС-кодировке ?
ты вставляй привычную ansi-строку, а все остальное - не твоя забота, соотв.перекодировку перед непосредственно записью в файл таблицы проведет тот самый native-драйвер, которому ты указал LANGDRIVER = dbase RUS cp866


Morj   (2004-09-30 10:17:00) [9]

Неа, нифига. Все равно решетки. Проверил строку перед вставкой - кодировка досовская, все нормально.


Morj   (2004-09-30 10:05:00) [10]

Сейчас проверю.


Digitman   (2004-09-30 10:02:00) [11]


> все символы заменяются на решетки


не верь глазам своим
загляни любым вьюером в содержимое dbf-файла - вряд ли ты там увидишь эти "решетки"


Morj   (2004-09-30 09:58:00) [12]

Заменил - не помогло. :(


Digitman   (2004-09-30 09:50:00) [13]

для начала установи в BDE-администраторе

Configuration -> Drivers -> Native -> FoxPro -> LANGDRIVER = dbase RUS cp866


Наверх

Титульная страница Поиск, карта сайта Написать письмо