TDbf и OnTranslate

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Скажите, TDBF кто-нибудь победил? Могу предложить свой вариант. Я клонировал TDBF в TxDBF (TDBF я брал не оригинальную а уже чью-то версию, которую уже до меня кто-то клонировали под Unicod Delphi 2009) . Я адаптировал (малость кастрировал) её для работы с кодовыми страницами cp866 и win1251 в Lazarus, всё кроссплатформенно, пробовал на Win и Linux. Если кодировка указана в файле, берет оттуда, если нет, использует DBFGlobals.DefaultOpenCodePage. На строковые поля устанавливает Transliterate:= true и гонит всё оттуда в UTF-8 при чтение и обратно из UTF-8 в нативную при записи, внутри самой компоненты. Ещё на TFloatField прописал DisplayMask в зависимости от Precission.
Кому нада сеё поделие?
hovadur
постоялец
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Сообщение hovadur »

конечно, выкладывай, посмотрим совпадает ли твоя работа с моей :)
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

TxDBF можно взять здесь:

http://www.visual-t.ru/index.php/skachat
Компонента устанавливается в Data Access.

Пример прилагается (..\TxDBF\DBFTest).
Аватара пользователя
DYUMON
постоялец
Сообщения: 234
Зарегистрирован: 11.03.2009 12:32:54
Контактная информация:

Сообщение DYUMON »

как вариант патчи сами файлы dbf , там они зачастую без указания кодировки . я так менял

Код: Выделить всё

var
fs: TFileStream;
b:Byte;
begin
b:=$65;
fs:=TFileStream.Create('d:\bnkseek.dbf' , fmOpenReadWrite);
fs.Seek(29,soBeginning);
fs.Write(b, 1);
fs.Free;
Ответить