Внесение изменений в компонент TDbf

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

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

Внесение изменений в компонент TDbf

Сообщение tvvwild » 14.02.2013 00:44:27

Использую версию 1.0.6 i386 win32/64 fpc 2.6.0
Есть необходимость перенести один средний проект на Lazarus из Delphi с работой с TDbf файлами. В Delphi использовали версию TDbf 6.9.2 в которую включили немного дополнений. Скомпилировать используемый нами пакет не получается т.к. есть встроенный. Внесли изменения в него скомпилировали пакет lazdbf и пересобрали Lazarus но никаких изменений. Не произошла перекомпиляция файлов в fpc\2.6.0\source\packages\fcl-db\src\dbase.
Так вот как можно перекомпилировать файлы в fpc\2.6.0\source\packages\fcl-db\src\dbase.
tvvwild
незнакомец
 
Сообщения: 5
Зарегистрирован: 13.02.2013 00:49:12

Re: Внесение изменений в компонент TDbf

Сообщение amateur » 14.02.2013 10:26:31

в DBFLaz побывали нажать "прочие" => "очистить и пересобрать"?
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Внесение изменений в компонент TDbf

Сообщение alexs » 14.02.2013 18:29:14

tvvwild
Лучше всего, если изменения стоящие, то внести изменения в штатные компоненты и выслать патчик разработчикам.
Т.к. TDBF входит в состав fpc - то надо:
1. Убрать скомпилированные версии файлов.
2. Взять исходники из состава FPC и положить их в путях, доступных компилятору - например создать подпапку в DBFLaz.
3. После внесения изменений всё оформить патчем и выслать разработчикам. Если всё нормально - то они будут приняты.
Тем более TDBF сейчас в "зависшем" состоянии - у них нет разработчикам.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Внесение изменений в компонент TDbf

Сообщение tvvwild » 14.02.2013 23:23:35

to amateur
Так делал, но ничего не происходит. Например при переименовании файла fpc2.6.0unitsi386-win32fcl-dbdbf.ppu пишет registerdbf.pas(0,0) Fatal: Can not find Dbf used by RegisterDBF, ppu=....fpc2.6.0unitsi386-win32fcl-dbdbf.ppu, package DBFLaz при чем в редакторе на pas файл спокойно переходит а при компиляции не видит.

to alexs
А изменения такие
так по умолчанию открывает в Dos866 кодировке
исправления с типом smallint < 0 и largeint
парсер выражений типа Поле = -Число
lacate работает по имени индекса и дополнительная проверка на правильность поиска
MasterLink может работать по левой части выражения индекса
Правильная кодировка украинской буквы і
Фильтрование с помощью индекса (левой части выражения)
+ кучу мелочей для наших нужд
2. Взять исходники из состава FPC и положить их в путях, доступных компилятору - например создать подпапку в DBFLaz.

Попробую еще раз, просто когда в прошлый раз та сделал почему начало ругаться на Undefined symbol: _mcount быть может я что-то не там поставил. Но вот что есть такой компонент TBufDataset и он почему-то использует файлы dbf_prscore, dbf_prsdef от TDbf.

Добавлено спустя 1 час 6 минут 31 секунду:
теперь ругается
PPU Loading D:lazarusfpc2.6.0unitsi386-win32fcl-dbbufdataset_parser.ppu
Recompiling bufdataset_parser, checksum changed for dbf_prscore
....fpc2.6.0sourcepackagesfcl-dbsrcbasebufdataset.pas(24,26) Fatal: Can't find unit bufdataset_parser used by BufDataset
при чем по файл bufdataset_parser.pp(o,ppu) находиться в соответствующих местах

Добавлено спустя 3 часа 22 минуты 26 секунд:
очень странно пока не внес исходник в пакет FCL напрямую, то ни в какую не видит и все! Внес и нормально!
Но дальше лучше. Компонент TDBF компилируется, IDE также. А при запуске IDE ошибка. Не правильная сборка. Сбросил все ppu в fpc и скомпилил LazDbf нормально все. Но прикол в другом. У меня стал дебагер заходить внутрь причем берет файлы pas и папки которая не пошла, а IDE из fpc;
tvvwild
незнакомец
 
Сообщения: 5
Зарегистрирован: 13.02.2013 00:49:12

Re: Внесение изменений в компонент TDbf

Сообщение alexs » 15.02.2013 10:58:37

tvvwild писал(а):теперь ругается
PPU Loading D:lazarusfpc2.6.0unitsi386-win32fcl-dbbufdataset_parser.ppu


Вот это однозначно указываает на то, что FPC видит и старую версию и новую.
Удали полностью в папке fcl-db все модули, которые реализуют работу с DBF.
Очисти tdbf/lib/...
После этого пробуй собирать.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Внесение изменений в компонент TDbf

Сообщение storma » 15.02.2013 15:51:43

Простите за офтопик, но для работы с dbf лучше использовать Advantage TDataSet Descendant (ИМХО).
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=19&Product=10&Platform=11
storma
новенький
 
Сообщения: 11
Зарегистрирован: 07.02.2013 22:54:14

Re: Внесение изменений в компонент TDbf

Сообщение amateur » 15.02.2013 19:29:09

Advantage Delphi Components Release 11.1 for Windows на 40 + метров :) может и удобно...

tvvwild "пощупать" пакет можно?
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Внесение изменений в компонент TDbf

Сообщение tvvwild » 16.02.2013 00:35:49

to amateur

вот
tdbf691.7z
У вас нет необходимых прав для просмотра вложений в этом сообщении.
tvvwild
незнакомец
 
Сообщения: 5
Зарегистрирован: 13.02.2013 00:49:12

Re: Внесение изменений в компонент TDbf

Сообщение amateur » 16.02.2013 02:28:52

Вот не пойму: чем не устраивает стандартный.
Самому надо было распотрошить дбф (кодировка 866 и 1251). Дык распотрошило так что терь потрошат других :) и не жалуются (те кто потрошит).

Лирика.

Че сделал (тупо, но в первом моем сообщении я думал что Вы сделали нечто подобное) заменил все модули из ..\fpc\2.6.0\source\packages\fcl-db\src\dbase\ на Ваши.

Че поменялось не знаю, но скомпилился лазарь со всеми ухищрениями (включая очистку и т.д.).

Потестил пример (типо открытия дбф в 866) и не понял
так по умолчанию открывает в Dos866 кодировке
у меня чет брякозябами открылося :) как и в стандартном. Может не то нажал или не нажал. Только вот зачем два пакета впихнуто тоже не пойму когда можно одним обойтись.

Хотя в лазаре "LConvEncoding" мне больше и больше нравитсо (для лентяев вещица :)).

Версия лазаря 1.1 ревизия сегодняшняя :) Вин.7
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Внесение изменений в компонент TDbf

Сообщение tvvwild » 16.02.2013 03:02:32

у меня чет брякозябами открылося как и в стандартном.

в первом посте сказано что из Delphi это раз,
у Lazarus string UTF8 это два.
dbf хранит в ansistring это три
надо у того кто портировал в LazDbf спросить почему не сделал перекодировку из ansistring в utf8 на лету

по умолчанию когда скачиваешь с сайта дефолтная кодировка dbf-файла win1251 (начиная с IV версии есть информация о кодировке, в III увы там стоит ноль)

Добавлено спустя 3 минуты 1 секунду:
и еще в Delphi у TStringField Transliterate по умолчанию в True в Lazarus - False

Добавлено спустя 3 минуты 33 секунды:
Че сделал (тупо, но в первом моем сообщении я думал что Вы сделали нечто подобное) заменил все модули из ..\fpc\2.6.0\source\packages\fcl-db\src\dbase\ на Ваши.

я тоже так думал сначала. А нет не сработало. Вставил бред типа fdfd и о чудо скомпилился. Вывод на исходники ноль внимания
tvvwild
незнакомец
 
Сообщения: 5
Зарегистрирован: 13.02.2013 00:49:12

Re: Внесение изменений в компонент TDbf

Сообщение amateur » 16.02.2013 12:41:52

Transliterate в Lazarus не работает (только это кажись не лазаря проблемы а фпс)... Используя его можно указать кодировку и будет счастие (в дельфине) но в лазаре сие счастие только черезLConvEncoding.

надо у того кто портировал в LazDbf спросить почему не сделал
врядли это получится (спросить). Ведь дбф очень распространен только в экс СССР. А забугорщики ужо не пользуются им. Да и я, к примеру, только импортирую а не работаю с этим форматом.

Вывод на исходники ноль внимания
сильно не вникал но протестил: сорцы пользовалися Ваши.

Как вариант - использовать наследник.
Или сделать как отдельный компонент (предварительно поменяв название сорцов, шоб лазарь юниты брал Ваши, а не лез в DBFLaz). И будет 2 вариации дбф (исходный и Ваш). Но овчинка выделки может и не стоить...
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 239

Рейтинг@Mail.ru