Форум » Clipper » Как работать с DBF файлом, который не открывается? » Ответить

Как работать с DBF файлом, который не открывается?

SVA_2876: Есть файл, котрый открывется средствами Visual Foxpro 9.0, но при попытке его открытия из Clipper 5.3 c поддерхкой файлов FoxPro 2.0, выдается сообщение "файл разрушен..." Есть ли библиотеки для работы из Clipper c новыми версиями DBF файлов? И где эти библиотеки можно было бы получить? С уважением, Владимир.

Ответов - 5

Vlad04: Через Харбор 1.61 открывал файлы Visual Foxpro 7 - 9

Pasha: Клиппер их никак не откроет Когда еще не было харбора, приходилось перед открытием копировать vfp-файл, коррекируя его заголовок для клипера, а после закрытия возвращать заголовок обратно

SVA_2876: Что такоеt Харбор 1.61? Где его можно взять? С уважением, Владимир.


Pasha: A. Что это вообще такое ? Q. Это кросс-платформенный opensource компилятор, созданный клипперистами и для клипперистов A. Где взять харбор ? Q. На сайтах: www.harbour-project.org и www.xharbour.org В разделе downloads надо скачать бинарники под win32, собранные C-компилятором Borland C++ 5.1.1, а также бинарники раздела contribution. Харбор разбит на 2 части: собственно харбор и сторонние библиотеки (contribution). A. Что еще надо, чтобы собрать харбор-программу под Windows ? Q. Прежде всего надо скачать компилятор Borland C++ 5.5.1 по адресу: ftp://ftpd.borland.com/download/bcppbuilder/freecommandLinetools.exe A. Почему существует два харбора ? Q. Сам проект возник в 1999 году. В конце 2001 года разногласия между разработчиками в направлениях развития харбора привели к созданию второго проекта - xHarbour. С тех пор они развиваются независимо друг от друга и уже довольно заметно разошлись, хотя в последнее время благодаря тому, чтот ряд разработчиков работает на оба проекта, они развиваются в одном направлении и предпринимаются меры по унификации их внутренней структуры A. Какой из двух харборов лучше ? Q. xharbour поддерживает некоторые расширения языка и развивается более динамично A. Свободный ли харбор ? Нужна ли лиценция ? Q. Собственно харбор - это Open-Source проект, его можно использовать без ограничений, лиценция GNU. Ограничения могут быть связаны с используемыми сторонними инструментальными средствами, например компилятором C. Скажем лиценция на Borland C/C++ 5.5.1 command line tools, которая позволяет использовать свободно не более одной копии этого компилятора. Или если с харбором используются платные библиотеки (например FiveWin) Q. Что такое xHarbour.com ? A. Это коммерческая фирма, основанная несколькими разработчиками xharbour для продвижения xHarbour Builder - пакета, в основе которого лежат сырцы opersource проекта, но собранного C компилятором xCC, содержашего визуальную среду сборки харбор- программ, и несколько дополнительных библиотек: sqlrdd, hbcomm, harbour COM-сервер A. Какой компилятор C лучше использовать с харбором ? Q. Любой, свободный или коммерческий, к которому есть предпочтение :) Это конечно не ответ, под Windows наиболее распространенными являются Borland 5.5 и выше (свободный с ограничениями) и коммерческий Microsoft Visual C++ Полностью свободные компиляторы для ОС Windows - это OpenWatcom (www.openwatcom.org), последняя версия - OpenWatcom 1.3, а также MinGW (www.mingw.org) A. Как получить техподдержку ? Q. Вопрос по xharbour лучше всего задать, подписавшись на NG (newsgroup) на news.xharbour.org (надо настроить почтового клиента). Вход свободный. Что касается harbour, надо подписаться на mail-list на http://lists.harbour-project.org/mailman/listinfo/harbour Вопросы надо задавать по английски. Ответят разработчики харбора. Если лучше получается по русски, то на форумах http://clipper.fastbb.ru/ http://webforum.land.ru/wb.php?board=20999 или на фидошной эхе fido7.ru.clipper A. Где взять сырцы харбора ? Q. Сырцы последних релизов на сайтах www.harbour-project.org и www.xharbour.org - downloads - в разделе sources (не забывать про contribution). Самые последние сырцы - с CVS (см. ниже) A. Как собрать харбор-программу ? Q. Сборка харбор-программы состоит из 3-х этапов: компиляция компилятором harbour.exe в C-код, затем компиляция C-компилятором получившихся C-модулей в obj-формат, и наконец линковка обьектных модулей линкером и получение результирующего приложения. Для работы Borland C++ необходимо: указать каталог c:\bcc55\bin в переменной окружения PATH (в файле autoexec.bat); в каталоге c:\bcc55\bin создать еще 2 файла: bcc32.cfg: -I"c:\Bcc55\include" -L"c:\Bcc55\lib" и ilink32.cfg: -L"c:\Bcc55\lib" Должно быть достаточно места для переменных окружения, для этого в Win9x в файле config.sys надо указать: Shell=C:\COMMAND.COM C:\ /E:4096 /P или еще больше, а для winnt убрать лишние переменные окружения. Затем непосредственно для сборки программы надо использовать пакетный файл bld_b32.bat из каталога harbour\bin, конечно модифицировав его для своих целей. A. Как выкачать последние сырцы харбора с CVS ? Q. Прежде всего надо установить какого-нибудь CVS-клиента, например Tortoise CVS - с сайта www.tortoisecvs.org. Один из последних стабильных релизов - 1.8.31 - можно загрузить по адресу: http://prdownloads.sourceforge.net/tortoisecvs/TortoiseCVS-1.8.3.exe Кликнув правой кнопкой мышки на ярлыке "Мой компьюьер", в popup-меню надо выбрать CVS - Preferences, и на закладке Advanced установить параметр "Network compression" на максимум - 9 Затем надо создать папку, в которыю будут загружаться sourceforge-проекты - например Projects. В проводнике Windows в popup-меню этой папки выбрать CVS Checkout и установить параметры: Общие для всех проектов: Protocol: :pserver Server: cvs.sourceforge.net User name: anonymous И для harbour: Repository folder: /cvsroot/harbour-project Module: harbour Для xharbour: Repository folder: /cvsroot/xharbour Module: xharbour Обратите внимание, что значения всех параметров ЧУВСТВИТЕЛЬНЫ к регистру Затем нажать OK, и начнется закачка сырцов. Первый раз это займет некоторое время, а при последующих chackout будут загружаться только новые и изменившиеся модули. Впрочем можно использовать и WinCVS: www.wincvs.org (это дело вкуса) A. Как собрать харбор из сырцов ? Q. Для сборки необходим компилятор C, а также дополнительные программы: Flex и Bison: бесплатные версии лексического и синтаксического анализаторов Lex и Yacc. Причем для сборки harbour необходим и Flex и Bison, а для сборки xharbour - только Bison. Для бизона необходимо скачать правила грамматик: файл bison.simple. При сборке путь к flex.exe (для harbour) и bison.exe должен быть указан в переменной окружения PATH, а также установлена переменная окружения BISON_SIMPLE (в autoexec.bat): set BISON_SIMPLE=<path>bison.simple Flex можно скачать по адресу: ftp://ftp.harbour-project.org/dev/flex.zip Bison необходим версии 1.28 или старше, вот адреса для скачивания: ftp://ftp.harbour-project.org/dev/bsn128b.zip http://www.harbour-project.org/bison-simple.zip или более свежую версию: http://gnuwin32.sourceforge.net/downlinks/bison-bin-zip.php Должны быть также установлены параметры окружения BCC - см.вопрос про сборку программы. Затем надо просто запустить пакетный файл для сборки харбора: для xharbour это makallbc.bat, который собирает и сам харбор и все библиотеки contrib, а для harbour - make_b32.bat, кототрый собирает харбор, а библиотеки contrib надо собирать каждую отдельно Внимание ! Если сборка выполняется из Far под winnt/2k/xp/2003, надо в свойствах ярлыка Far поставить "Совместимость с win2k". Это известный и неисправленный баг борландовского компилятора. После того, как сборка дошла до конца, харбор готов к употреблению. A. Что лучше использовать, официальные релизы харбора или самостоятельную сборку из сырцов с CVS ? Q. Официальный релиз - этот стабильный, рекомендуемый разработчиками Сырцы на CVS выкладываются разработчикками ежедневно и могут содержать ошибки, эксперементальные недоведенные версии модулей, хотя чаще всего тоже находятся в стабильном состоянии. Если внимательно следить за последними изменениями, то нет ничего страшного в использовании самых последних сырцов с CVS. A. Есть ли в харборе Clipper Tools? Q. Да, есть, хоть и не в полном обьеме. Для harbour это библиотека libct из contribution, для xharbour - ct.lib, которая с недавнего времени включена в состав самого xharbour. A. У меня не работает Upper с русским текстом. Что делать ? Q. Надо в тексте программы при ее инициализации указать: REQUEST HB_CODEPAGE_RU866 hb_SetCodepage( "RU866" ) При этом харбор поймет, что преобразование регистра надо выполнять по правилам русского языка A. Почему харбор работает медленно ? Q. Харбор работает медленно только с терминалом gtwin под ОС Windows только в текстовом (полноэкранном) режиме под win9x Это связано только с работой терминала, а не с самим харбором В оконном режиме под win9x с gtwin харбор работает быстро. A. Почему харбор с gtwin работает медленно ? Q. Харбор работает с консолью Windows через функции Windows API, и его медленная работа связана с кривой реализацией некоторых консольных функций winapi (работа с курсором) под Windows 9x. A. С gtwin не вводится маленькая русская "р". Что делать ? Q. Надо скачать адаптированную для кириллицы версию этой библиотеки: для harbour - с сайта Александра Кресина: http://kresin.belgorod.su/rus/index.html а для xharbour - с сайта www.xharbour.nm.ru - gtwin.zip A. Что такое gtwvt ? Q. Это терминал - полная эмуляция всего консольного вывода и ввода через gui-функции winapi в одном окне. На 100% совместим со стандартным терминалом клиппера, кроме того есть множество дополнительных функций. Есть только в xHarbour. Для его использования надо вместо gtwin.lib прилинковать gtwvt.lib и (если используются дополнительные функции) wvtgui.lib A. У меня с gtwvt нет русского шрифта и неправильно вводится текст с клавиатуры. Как поправить ? Q. Надо при инициализации программы вызвать: WVT_SETCODEPAGE(255) При этом gtwvt поймет, что работа выполняется с OEM-кодироовкой, и выполнит соответсвующие преобразования. A. Как подключить мышку ? Q. В консольном режиме надо сделать следующее: Функции Inkey передавать 2-й параметр 255: Inkey(0, 255), это маска, указывающая принимать событья от мышки. Коды этих событий находятся в файле include\inkey.ch, например K_LBUTTONDOWN Позицию курсора мышки можно получить фукциями MROW() и MCOL() Чтобы мышка работала в ReadModal(), AChoice и в других стандартных функциях, в начале программы надо указать: SET EVENTMASK TO INKEY_ALL A. Можно ли сразу линковать к программе несколько терминалов ? Q. Да, можно. Для этого надо пересобрать харбор с многотерминальной поддержкой: при сборке снять в файле makefile.bc комментарий со строки HB_MULTI_GT = yes В самой программе указать, какие терминалы она будет использовать: Request HB_GT_WIN Request HB_GT_WVT Линковать программу надо с библиотеками: echo %HB_INSTALL%\lib\gtwin.lib + >> b32.bc echo %HB_INSTALL%\lib\gtwvt.lib + >> b32.bc echo %HB_INSTALL%\lib\wvtgui.lib + >> b32.bc echo %HB_INSTALL%\lib\gtnul.lib + >> b32.bc При запуске программы указывать терминал (через два слэша): app.exe //gtwin (по умолчанию) или app.exe //gtwvt В runtime проверить какой именно терминал используется можно функцией hb_gt_version() A. При линковке программы выдаются сообщения Error: Unresolved external '_HB_FUN_DBFDBT' referenced from C:\XHARBOUR\LIB\RDD.LIB|rddsys или Error: Unresolved external '_HB_FUN_DBFFPT' referenced from C:\XHARBOUR\LIB\RDD.LIB|rddsys Q. В скрипте для линкера надо указать библиотеки dbfdbt.lib и dbffpt.lib A. Как использовать ADS с харбором ? Q. Для работы харбора с ADS достаточно наличие ACE32.DLL Она входит в состав любого 32-разрядного клиента ADS. Из нее командой implib ace32.lib ace32.dll создается ace32.lib, которую надо подлинковать к приложению совместно с rddads.lib Эту библиотеку (ACEAPI) лучше всего выкачать с сайта Extend Systems (или дистрибьютера этой фирмы, например Хотсофт - www.hotsoft.ru) для нужной версии ADS - она бесплатная, содержит Advantage Local Server и саму ACE32.DLL - Advantage Client Engine - основу для создания всех 32-х разрядных клиентов ADS A. Как инициализировать rdd_ads ? Q. Надо указать в программе rdd по умолчанию: REQUEST _ADS rddRegister("ADS",1) rddSetdefault("ADS") и затем тип сервера, формат файлов и кодовую страницу: SET SERVER LOCAL или SET SERVER REMOTE SET FILETYPE TO [NTX, CDX или ADT] SET CHARTYPE TO [ANSI или OEM] К программе надо прилинковать rddads.lib и ace32.lib A. Невозможно сконнектиться к Ads Local Server, если количество клиентов более пяти Q. В adslocal.cfg надо добавить строку: USER_LICENSE = 30 A. Почему rdd_ads не поддерживает UDF в индексном выражении ? Q. UDF поддерживается только в ADS-клиенте для клиппера. Ни в каком 32-х разрядном клиенте ADS (в том числе в харборе) UDF (собственно создание индекса не сервером, а клиентом) не поддерживается. Это вопрос не харбора, а Extend Systems A. Поддерживает ли rdd_ads sql-запросы ? Q. Да. Для открытия обычной рабочей области по команде SELECT необходимо выдать такую последовательность команд: select(nArea) IF AdsGetConnectionHandle() == 0 AdsConnect(cPath) endif AdsCreateSQLStatement(cAlias, 2) AdsPrepareSQL(cSQLStmt) AdsExecuteSQL() A. Как настроить ads для использования досовской кодировки в dbf-файлах в консольных харбор-программах ? Q. В настройках Ads (локального) надо укаазать OEM и ANSI charset - Russian В харбор программе при инициализации rdd_ads выполнить вызов: AdsSetCharType( 2, .T. ) Реализовано пока только в xHarbour A. Из харбор-программы не открывается dbf-файл через rdd_ads use, используется Ads for Linux Q. Это возможно связано с тем, что файловая система Linux чувствительна к регистру, и имя файла в программе и на сервере набрано на разном регистре. В общем случае необходимо: 1) На Linux сервере добавить строку в ads.conf LOWERCASE_ALL_PATHS=1 2) В харбор-программе указать: #include "ads.ch" ... AdsMgConnect() If AdsMgGetServerType() == ADS_MGMT_LINUX_SERVER Set( _SET_FILECASE, "LOWER" ) Set( _SET_DIRCASE, "LOWER" ) Endif AdsMgDisconnect() A. Можно ли на харборе создавать программы маленького размера, использовав dll ? Q. Да, для этого надо при линковке программы из библиотек указать только harbour.lib и vm.lib. Harbour.dll должен быть доступен в переменной path или в каталоге \windows\system[32] Но программа при этом будет использовать больше системной памяти. A. Как сделать свою dll ? Q. Надо скомпилировать сырцы своей библиотеки, определив макрос /D__EXPORT__ и для harbour.exe, и для C-компилятора (bcc55). Затем вызвать линкер с параметрами: ILINK32 -aa -Tpd -Gn @hdll.lnk Скрипт для линкера сформировать по таким правилам: <obj_files> c0d32w.obj, <dll_name>,, cw32.lib harbour.lib import32.lib uuid.lib Чтобы использовать dll надо прилинковать к программе соответствующую lib и harbour.lib. A. Как перейти к программированию под Windows ? Q. A. Какие есть библиотеки под Windows ? Q. Коммерческие: - Fivewin (http://www.fivetechsoft.com) - Xailer (http://www.xailer.com) Бесплатные: HwGUI и MiniGUI, а также T-gtk (http://es.groups.yahoo.com/group/t-gtk) A. Какие Windows GUI-библиотеки лучше ? Q. Конечно, бесплатные ;-) Если предпочтителен ООП-стиль программирования, то это - библиотека HwGUI (автор - Александр Кресин из Белгорода), если достаточно псевдо-ООП и команд в стиле FoxPro для создания окон - то MiniGUI (автор - Роберто Лопез из Аргентины). A. Где взять HwGUI и MiniGUI ? Q. Официальная страница библиотеки HwGUI: http://kresin.belgorod.su/hwgui.html Официальная страница библиотеки MiniGUI: http://www.geocities.com/harbour_minigui Неофициальная русская страница библиотеки MiniGUI: http://minigui.boom.ru (зеркало - hmg.narod.ru) A. Поддерживает ли харбор клиент-сервер (sql) ? Q. A. Поддерживает ли харбор six ? Q. A. Есть ли IDE для харбора ? Q. Лучший IDE - это бесплатный xMate: http://www.geocities.com/wowbase/xMate.html Коммерческий IDE xBuild: http://www.xharbour.com/index.asp?page=xbuild_demo&s=1&a=3 Все ссылки действительны на момент составления faq - февраль 2005 года Данный FAQ составил Царенко Павел, tpe (at) etel.dn.ua Любое дополнение этого FAQ и его распространение приветствуется

SVA_2876: Большое спасибо! Будум изучать))) С уважением, Владимир.



полная версия страницы