Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Компонент для C++ Builder 5


Автор: Trash_s 13.8.2002, 22:31
Подскажите, где можно найти компоненты для C++ Builder 5 для работы с DBF-файлами, не использующие BDE.

Автор: Alex101 13.8.2002, 23:01
ADO, например, не использует BDE

Автор: Vyacheslav 14.8.2002, 01:04
Бесплатные  компоненты для dbf можно скачать с  http://www.advantagedatabase.com
Они поддерживают практически все возможные индексов(idx, ntx. cdx).
Для скачивания надо заполнить регистрационную форму.

Автор: Trash_s 14.8.2002, 20:53
Уточню, компоненты для доступа без BDE и без ADO, для непосредственного доступа.

Извини, Вячеслав, но на Advantage Database Server ничего подходящего не нашел. Там есть TDataSet, но это не то или я не понял, по своей недалекости.
Кстати, твой компонент по диалапу пока не использовал :( , после исользования пришлю отзывы.

Автор: Vit 14.8.2002, 22:04
Посмотри на www.torry.net
По крайней мере для Дельфи я видел несколько таких компонентов.

Автор: Vyacheslav 14.8.2002, 22:50
Давай сначала разберемся с терминологией. BDE - это Borland Database Engine.
- 32разрядный движок для доступа к базам данных. При желании с ним можно работать и напрямую через его API, но так сейчас никто не работает. Обычно работают через компоненты TTable, TQuery. Необходимым условием  работоспособности является установка  BDE на компе. TDataSet - это базовый класс VCL для доступа к базам данных  и никакого отношения  к BDE не имеет. Например TADODataSet тоже является производным от TDataSet, но c BDE не работает.  Поэтому я не понимаю, почему ты так испугался, увидев там упоминание TDataSet. Теперь что предлагает Advantage : это native доступ к таблицам. Ни  BDE ни ADO не используются. Для нормальной работы программы  на другом компьютере нужно перенести еще два  dll - файла. Вместо BDE используется Advantage Database Engine, в который входит ALS(Advantage Local Server, вместо него также может использоваться ARS -Advantage Remote Server или AIS - Advantage Internet Server - но это уже за отдельную плату)  и  ACE (Advantage Client Engine). C ACE можно работать в принципе напрямую через API, но удобнее работать через компоненты. В том интсталяторе, названном  таким пугающим названием TDataSet,  Advantage предоставляет целый набор компонентов: TAdsTable, TAdsQuery, TAdsConnection,  TAdsSettings, TAdsStoredProc, TAdsDictinary. Кажется ничего не забыл. Естественно TAdsTable и TAdsQuery - порождены в конечном счете от TDataSet. На  мой вгляд это как раз то что ты ищешь. Кроме того  желательно скачать также ARC32 - эта программа выполняет примерно ту же роль что Enterprise Manager для MS SQL.


Автор: Trash_s 15.8.2002, 18:26
Vyacheslav, спасибо за полезный экскурс в теорию. Но, на мой взгляд, использовать Advantage Database Engine как альтернативу BDE не необходимости. Наверно с ADE удобней работать, но зачем лишние "примочки". В данном случае самый удобный вариант это exe + dbf, в других случаях может быть по другому. Но замена BDE на ADE весьма сомнительна.

С уважением, Trash_s.

Автор: Vyacheslav 15.8.2002, 20:49
Под Database Engine понимается некий промежуточный уровень, состоящий из набора функций, которые обычно оформлены  в виде одной или нескольких динамических библиотек. Они то и работают напрямую (возможно даже через файловую систему, если таблицы локальные) с БД. Так что любая уважающая фирма или программист при создании средств доступа прежде всего попытается создать такой набор функций (свой Database Engine), а уж затем вызовы этих функций обернет в компонент или класс. Так что  если  ты найдешь компоненты от других фирм, то там наверняка будет свой некий   Database Engine.  Так например в для работы с Apollo (еще один довольно известный набор компонентов для работы с dbf) также  на компьютер нужно скачать дполнительные dll(кол-во не помню). Я его не называл, т.к не знал, откуда его можно скачать и к тому же он платный. Есть еще Hallcon(надеюсь название написал правильно: с ним мне даже работать не приходилось). Так что наличие Database Engine(даже если это называется по другому) в виде очень ограниченного числа dll(или bpl), которые нужно переносить на компьютер вместе с программой - это обычное дело. Если таких не окажется, то это сигнал к тому, что предмет программирования недостаточно был проработан, а следовательно возможны всякие глюки.  С другой стороный использование зарекомендованных и поддерживаемых производителем профессиональных средств доступа к БД - это верный путь к успеху. Я сам довольно много работал с dbf форматом, используя в основном Apollo и Advantage в конце концов сделал выбор еще 1999 году  в пользу Advantage(кстати тогда не только удаленный сервер, но и эти компоненты были платными и стоили более 300$) Позднее был приятно удивлен, что мой выбор подтвердили и другие разработчики  Delphi(C++Builder), проголосовав дважды  в 2001  и 2002 году за него, как за лучший движок для БД.


Автор: Vyacheslav 15.8.2002, 23:28
Цитата(Trash_s @ 15.8.2002, 11:26)
Но, на мой взгляд, использовать Advantage Database Engine как альтернативу BDE не необходимости. Наверно с ADE удобней работать, но зачем лишние "примочки".
...
Но замена BDE на ADE весьма сомнительна.

Почему не любят BDE - он устаревший (если не ошибаюсь основные принципы заложены в 1994 году, универсальный ( за универсальность надо платить), сложности при распространенни программ (простое копирование не работает, нужно писать  инсталятор), тяжеловестность (не каждый программист тебе скажет сколько и какие файлы нужно переносить), необходимость мало мальского администрирования. Сам Borland отказывается от дальнейшей разработки BDE и предлагает альтернативный движок(опять  Database Engine :) ) dbExpress(Delphi 6, Delphi 7, C++Builder 6).  Применительно к dbf - BDE не работает с распространненными индексами (ntx, cdx). Просматривать таблицы с такими индексами можно, но не дай бог что нибудь поменять или  вставить новую запись. Так что твой отказ от BDE обоснован. Почему Advantage? Он является специализированным движком для работы  c dbf (кроме того поддерживает более прогрессивный формат adt) и кроме того обладает дополнительными необходимыми дополнительными функциями предназначенные имеено для dbf: возможность работы с составными индексами(создание, поиск, реиндексаци), физическое удаление удаленных строк, поддержка фильтров  в стиле аля-Clipper и т.д  Это не "примочки", а необходимый инструмент. Кстати удобных "примочек" там тоже хватает.  
Цитата

В данном случае самый удобный вариант это exe + dbf, в других случаях может быть по другому.

Мне кажется  тебя пугает терминология. Если так исходить, но в виндах даже
такую систему  как exe + file.txt невозможно (вернее очень трудно) построить. Все равно  будешь вынужден обращаться не непосредственно к записи на диске, а опосредованно через API файловой системы. Просто эта прослойка не видна, т.к. встроена в операционку. Прослойки для работы c dbf в OS нет. Так что вопрос стоит в том , насколько будет тяжеловесна используемая прослойка между exe и dbf. Если требуется дополнительно скопировать  два - три файла(Advantage,Apollo и т.д), это карман не утянет. Если для этого нужно инсталировать целую систему - это уже другой вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)