Внесение изменений в компонент TDbf
Модератор: Модераторы
Внесение изменений в компонент TDbf
Использую версию 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.
Есть необходимость перенести один средний проект на 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.
Re: Внесение изменений в компонент TDbf
в DBFLaz побывали нажать "прочие" => "очистить и пересобрать"?
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Re: Внесение изменений в компонент TDbf
tvvwild
Лучше всего, если изменения стоящие, то внести изменения в штатные компоненты и выслать патчик разработчикам.
Т.к. TDBF входит в состав fpc - то надо:
1. Убрать скомпилированные версии файлов.
2. Взять исходники из состава FPC и положить их в путях, доступных компилятору - например создать подпапку в DBFLaz.
3. После внесения изменений всё оформить патчем и выслать разработчикам. Если всё нормально - то они будут приняты.
Тем более TDBF сейчас в "зависшем" состоянии - у них нет разработчикам.
Лучше всего, если изменения стоящие, то внести изменения в штатные компоненты и выслать патчик разработчикам.
Т.к. TDBF входит в состав fpc - то надо:
1. Убрать скомпилированные версии файлов.
2. Взять исходники из состава FPC и положить их в путях, доступных компилятору - например создать подпапку в DBFLaz.
3. После внесения изменений всё оформить патчем и выслать разработчикам. Если всё нормально - то они будут приняты.
Тем более TDBF сейчас в "зависшем" состоянии - у них нет разработчикам.
Re: Внесение изменений в компонент TDbf
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 может работать по левой части выражения индекса
Правильная кодировка украинской буквы і
Фильтрование с помощью индекса (левой части выражения)
+ кучу мелочей для наших нужд
Попробую еще раз, просто когда в прошлый раз та сделал почему начало ругаться на 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;
Так делал, но ничего не происходит. Например при переименовании файла 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;
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Re: Внесение изменений в компонент TDbf
tvvwild писал(а):теперь ругается
PPU Loading D:lazarusfpc2.6.0unitsi386-win32fcl-dbbufdataset_parser.ppu
Вот это однозначно указываает на то, что FPC видит и старую версию и новую.
Удали полностью в папке fcl-db все модули, которые реализуют работу с DBF.
Очисти tdbf/lib/...
После этого пробуй собирать.
Re: Внесение изменений в компонент TDbf
Простите за офтопик, но для работы с dbf лучше использовать Advantage TDataSet Descendant (ИМХО).
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=19&Product=10&Platform=11
http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=19&Product=10&Platform=11
Re: Внесение изменений в компонент TDbf
Advantage Delphi Components Release 11.1 for Windows на 40 + метров
может и удобно...
tvvwild "пощупать" пакет можно?
tvvwild "пощупать" пакет можно?
Re: Внесение изменений в компонент TDbf
to amateur
вот
вот
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Внесение изменений в компонент TDbf
Вот не пойму: чем не устраивает стандартный.
Самому надо было распотрошить дбф (кодировка 866 и 1251). Дык распотрошило так что терь потрошат других
и не жалуются (те кто потрошит).
Лирика.
Че сделал (тупо, но в первом моем сообщении я думал что Вы сделали нечто подобное) заменил все модули из ..\fpc\2.6.0\source\packages\fcl-db\src\dbase\ на Ваши.
Че поменялось не знаю, но скомпилился лазарь со всеми ухищрениями (включая очистку и т.д.).
Потестил пример (типо открытия дбф в 866) и не понял
как и в стандартном. Может не то нажал или не нажал. Только вот зачем два пакета впихнуто тоже не пойму когда можно одним обойтись.
Хотя в лазаре "LConvEncoding" мне больше и больше нравитсо (для лентяев вещица
).
Версия лазаря 1.1 ревизия сегодняшняя
Вин.7
Самому надо было распотрошить дбф (кодировка 866 и 1251). Дык распотрошило так что терь потрошат других
Лирика.
Че сделал (тупо, но в первом моем сообщении я думал что Вы сделали нечто подобное) заменил все модули из ..\fpc\2.6.0\source\packages\fcl-db\src\dbase\ на Ваши.
Че поменялось не знаю, но скомпилился лазарь со всеми ухищрениями (включая очистку и т.д.).
Потестил пример (типо открытия дбф в 866) и не понял
у меня чет брякозябами открылосятак по умолчанию открывает в Dos866 кодировке
Хотя в лазаре "LConvEncoding" мне больше и больше нравитсо (для лентяев вещица
Версия лазаря 1.1 ревизия сегодняшняя
Re: Внесение изменений в компонент TDbf
у меня чет брякозябами открылося как и в стандартном.
в первом посте сказано что из 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 и о чудо скомпилился. Вывод на исходники ноль внимания
Re: Внесение изменений в компонент TDbf
Transliterate в Lazarus не работает (только это кажись не лазаря проблемы а фпс)... Используя его можно указать кодировку и будет счастие (в дельфине) но в лазаре сие счастие только черезLConvEncoding.
Как вариант - использовать наследник.
Или сделать как отдельный компонент (предварительно поменяв название сорцов, шоб лазарь юниты брал Ваши, а не лез в DBFLaz). И будет 2 вариации дбф (исходный и Ваш). Но овчинка выделки может и не стоить...
врядли это получится (спросить). Ведь дбф очень распространен только в экс СССР. А забугорщики ужо не пользуются им. Да и я, к примеру, только импортирую а не работаю с этим форматом.надо у того кто портировал в LazDbf спросить почему не сделал
сильно не вникал но протестил: сорцы пользовалися Ваши.Вывод на исходники ноль внимания
Как вариант - использовать наследник.
Или сделать как отдельный компонент (предварительно поменяв название сорцов, шоб лазарь юниты брал Ваши, а не лез в DBFLaz). И будет 2 вариации дбф (исходный и Ваш). Но овчинка выделки может и не стоить...
