Форум » Clipper » Clipper 5.3 не хочет работать с DBFCDX. » Ответить

Clipper 5.3 не хочет работать с DBFCDX.

AlexCh: Народ, помогите утопающему! Раньше писал на Clipper Summer 87. Нужно на Clipper 5.3 создать индексный файл CDX, но не могу даже собрать exe-шник. В начале программы вставил: REQUEST DBFCDX rddSetDefault( "DBFCDX" ) Линкую как в примере: BLINKER FILE $(objs) OUTPUT $@ lib dbfcdx.lib При сборке выдает ошибку : BLINKER : 1115 : DBFCDX.LIB(CL53INIT) : '_DBFCDX' : unresolved external Заменил BLINKER. Стал пробовать собирать BLINKERом 6.0 то же самое. Что интересно, если вместо DBFCDX подключать к примеру DBFNDX, т.е. в программе REQUEST DBFNDX rddSetDefault( "DBFNDX" ) а затем BLINKER FILE $(objs) OUTPUT $@ lib dbfndx.lib то всё нормально линкуется и работает

Ответов - 32, стр: 1 2 All

Softlog86: У меня такая-же проблемма ..... Я в линковщике пишу обе библиотеки : BLINKER.EXE .... LIB _DBFCDX.LIB , DBFCDX.LIB Вроде уже три года пашет ....

Andrey: Вот мой рабочий файл сборки для CDX (10 лет работает): # Скрипт-файл начана сценария компоновки BLINKER 3.2 - 6.0 - для ЗАЩИЩЕНОГО РЕЖИМА ПАМЯТИ (Extended Memory) BLINKER EXECUTABLE CLIPPER F:250;SWAPK:8192;SWAPPATH:С:\TEMP BLINKER EXECUTABLE NODELETE BLINKER PROCEDURE DEPTH 60 BLINKER EXECUTABLE EXTENDED # Switch blinker to protected mode BLINKER INCREMENTAL OFF # Switch incremental off if needed BLINKER EXECUTABLE COMPRESS 1 BLINKER MESSAGE WINK LEFT NOBELL FILE mainto # ====== вызов листинга OBJ-файлов ========== @Zviewplt.lst //FILE ctintp, ctusp //FILE CLD.LIB SEARCH BLXRATEX.LIB LIB _DBFCDX, DBFCDX SEARCH BLXCLP53 LIB Ctp53 @C53BLMAX ## End of LNK

AlexCh: Сделал по варианту Softlog86 и всё прошло нормально. Линковка пошла и CDX заработали как надо. Зверски обрадовался, но рано... Поясню, для чего мне понадобились CDX. У меня в одной системе на одних и тех же файлах одновременно работают Clipper 87 и VFP 6. На уровне dbf-файлов никаких проблем нет, но вот понадобилось использовать общие индексы. Хочу попробовать использовать DBFCDX или DBFSIX как получится. В общем казалось бы всё получилось. Clipper 5.3 и VFP 6 заработали на одних и тех же DBF и CDX, причём в обе стороны. Они поняли друг друга! CDX-индексы, созданные Clipper-ом, VFP 6.0 прекрасно понимает и наоборот. Дописывал в конец файла - всё OK! Протестировал это дело на одном файле - всё нормально, но как только попытался работать с более-менее реальной задачей - облом. Простая программа, которая в цикле создаёт CDX для нескольких десятков файлов непредсказуемо вылетает в разных местах с различными сообщениями об ошибках или попросту зависает. Затыкается в разных местах, на 10-м файле, на 3, 15, 47 и т.д. Никакой системы. В общем, номер с CDX не прошёл :((( , а жаль. Но есть ещё надежда на SIX, может быть получится через файлы IDX на Clipper 5.2 Только никак не могу найти SIX 3.2, ссылка на сайте вашего форума есть, но не работает. Поэтому у меня большая просьба. Если есть возможность, скиньте пожалуйста SIX 3.2 на мой емейл: achik<собака>inbox.ru Заранее благодарен.


Softlog86: Думаю что не в этом проблема ....

Andrey: AlexCh пишет: Простая программа, которая в цикле создаёт CDX для нескольких десятков файлов непредсказуемо вылетает в разных местах с различными сообщениями об ошибках или попросту зависает. Затыкается в разных местах, на 10-м файле, на 3, 15, 47 и т.д. Никакой системы. Перед созданием индекса НЕОБХОДИМО базу открывать в режиме EXCLUSIVE, и перед созданием CDX-файла НЕОБХОДИМО УДАЛИТЬ ранее созданный индексный файл. Я пользовался CDX с 1993 года и никаких проблем с ними не было, намного лучше NTX.... Что-то неправильно делаешь !

Vlad04: Где то читал, что блокировки разные у Clipper и VFP 6 , не получится в обе стороны. А базу открывать EXCLUSIVE при создании индекса не надо, Clipper ее сам блокирует, если ему позволят.

AlexCh: >Думаю что не в этом проблема .... Вот и я не могу понять, в чём проблема. Пробовал на двух разных машинах с разными операционками (WIN XP SP3 и WIN98) Заново перестраивал EXE и запускал на чистых DBF-файлах (без CDX-индексов). Папку создал специально для отладки, к которой никто доступа не имеет и туда эти файлы сбросил. Результат один и тот же. >Перед созданием индекса НЕОБХОДИМО базу открывать в режиме EXCLUSIVE, и перед созданием CDX-файла НЕОБХОДИМО УДАЛИТЬ ранее созданный индексный файл. Я много раз запускал эту прораммульку с созданием в цикле CDX-индексов на чистых DBF-файлах без CDX. Удалять было нечего. Вылетает где угодно, хотя пару раз и сработало до конца. При вылете выдаются сообщения: -ORDCREATE(0) Unrecoverable error 5302: Conventional memory exhaused -Процессор NTVDM обнаружил недопустимую инструкцию … - или просто зависает без всяких сообщений >Я пользовался CDX с 1993 года и никаких проблем с ними не было, намного лучше NTX.... А ты использовал SIX или DBFCDX? >Где то читал, что блокировки разные у Clipper и VFP 6 , не получится в обе стороны. В данном случае до VFP дело не ещё не дошло. Я не могу даже индексы CDX создать. >А базу открывать EXCLUSIVE при создании индекса не надо, Clipper ее сам блокирует, если ему позволят. У меня базы как таковой нет, на CLIPPER 87 какая может быть база? Есть огромная куча файлов DBF (на файл-сервере Win2003 Server), с которыми без проблем одновременно работают Clipper 87 и VFP6. Блокировки может быть и разные, но на уровне RLOCK они друг друга понимают. Если одна прога запись заблокировала, то другая это понимает и к ней не лезет. VFP считывает запись из DBF, созданного Сlipper-ом, перекодирует символы DOS-Win и никаких проблем.

PSP: AlexCh пишет: Unrecoverable error 5302: Conventional memory exhaused Программа собрана для защищенного режима? Вот такая команда "BLINKER EXECUTABLE EXTENDED" есть?

AlexCh: Видимо, после CLIPPER 87 я чего-то недопонимаю в принципе. Как я собираю: Моя прога называется REST_CDX.prg Мой файл сборки REST_CDX.rmk (взял из примера в папке SOURCE) такой: // Define comma separated obj list as a macro objs=REST_CDX // Inference rule for compiling (.prg) to .obj files .prg.obj: CLIPPER $< /m /n /w > ttt.txt // Dependancy statements for .obj file REST_CDX.OBJ: .\REST_CDX.PRG // Dependancy rule for linking .obj file to .EXE file REST_CDX.EXE: REST_CDX.OBJ BLINKER FILE $(objs) OUTPUT $@ lib dbfcdx.lib , _dbfcdx.lib Потом запускаю REST_CDX.bat , который собирает REST_CDX.exe del REST_CDX.obj del REST_CDX.exe SET PATH=C:\CLIP53\BIN;%PATH% SET LIB=C:\CLIP53\LIB SET INCLUDE=C:\CLIP53\INCLUDE SET PLL=C:\CLIP53\INCLUDE rmake REST_CDX --- Попытки использовать рабочий файл сборки от Andrey или вставить строку BLINKER EXECUTABLE EXTENDED в REST_CDX.rmk приводят к синтаксической ошибке. Поясните, пожалуйста, что я делаю не так и куда надо вставлять эти строки.

LYSK: Я десятки лет работаю на Клиппере только с индексами CDX в смешанной среде (FOX26,Clipper,сеть) но с самого первого дня это был SIX. Защищенным режимом не заморачиваюсь, потому что активно юзаю библиотеку, несовместимую с РМ. линковка в большинстве случаев примитивна: BLINKER fi прога,sixcdx @six3 lib ct250 в более сложных случаях еще скрипт @cl520mid

AlexCh: >Программа собрана для защищенного режима? >Вот такая команда "BLINKER EXECUTABLE EXTENDED" есть? Нет, собрана так, как я описал выше. Насколько я понимаю это сборка по умолчанию в реальном режиме, в не в защищённом. Как переключиться в защищённый режим? Работая на Clipper 87 никогда с такими вещами не встречался.

Andrey: AlexCh пишет: Нет, собрана так, как я описал выше. Насколько я понимаю это сборка по умолчанию в реальном режиме, в не в защищённом. Как переключиться в защищённый режим? Если используешь Blinker 6.0 то ставь мой LNK для сборки, тогда программа будет собираться в защищенном режиме. AlexCh пишет: Попытки использовать рабочий файл сборки от Andrey или вставить строку BLINKER EXECUTABLE EXTENDED в REST_CDX.rmk приводят к синтаксической ошибке. Поясните, пожалуйста, что я делаю не так и куда надо вставлять эти строки. Эти строки только для BLINKER 3.2 и выше. Я же написал РАНЕЕ - смотреть надо ! # Скрипт-файл начана сценария компоновки BLINKER 3.2 - 6.0 - для ЗАЩИЩЕНОГО РЕЖИМА ПАМЯТИ (Extended Memory) В стандартной поставке Клипера стоит версия 1.0 и она не собирает "защищенные приложения". А если в реальном, то попробуй после индексации файла (DBFCDX) закрывать эту базу. Скорее всего у тебя не хватает ОТКРЫТЫХ ОБАСТЕЙ (SELECT) ! А вообще - кончай "фигней" заниматься и переходи на хХарбор. Намного приятней работать и САМОЕ ГЛАВНОЕ - это СТАБИЛЬНАЯ РАБОТА программы.

LYSK: Коллеги, да не заморачивайте человеку голову защищенным режимом.. В Виндовой среде оно нафиг надо, тем более что чел до сих пор на S'87 сидел. Ко всему высказанному ранее добавлю, что DBFCDX в Клиппере отличается нативной ущербностью... иначе из-за чего бы он полностью менялся в каждой очередной версии? короче, SIX рулит!

Vlad04: А почему Clipper 5.3 , а не (х)Харбор?.Нормально работает с CDX .Часть программ переевел с Clipper 5.01. Не удалось создать на хХарбор временные индексы, ими пользовался в клиппере Если спец библиотек нет, то и проблем не должно быть при переводе.

AlexCh: Чел не сидел S'87, а давно уже перешёл на VFP и написал на нём целую кучу работающих программ, но старые проги, написанные на Clipper переписать на VFP у чела нет никаких физических возможностей. Их очень много, они очень сложные и многие их них написаны людьми, которых уже давно нет поблизости. Исходники у меня есть, но разбираться в чужих алгоритмах... ну вы понимаете... Кроме того, нельзя их переписывать постепенно, поскольку это единый комплекс. Нужно переписать все сразу, отладить, а потом резко сменить всё. На практике это нереально. Трудозатраты на переписывание комплекса наших Clipper-программ я оцениваю как минимум в 5 человеко-лет, а я тут фактически один, кто реально может что-то разрабатывать в свободное от текущих доработок и разборок с пользователями время (есть ещё 2 программиста, системщик и технолог, но у них своих текущих дел выше крыши).. Пока буду переписывать последние проги с Clipper на VFP, первые устареют настолько, что их нужно писать по новой. Прошу не судить меня строго за мои чайниковые вопросы, честно сказать у меня довольно тяжёлая ситуация и я пытаюсь найти выход в попытке состыковать Clipper с VFP на уроне индексов CDX, почему и попросил вашей помощи. Увы, даже с вашими подсказками у меня меня пока не получается. Один из вас откликнулся на мою просьбу и прислал мне SIX, за что я очень благодарен, но есть вопросы. Не сочтите за труд ответить на них, когда они созреют. С уважением к сообществу.

LYSK: Обращайся, если что.. Помогу.

Andrey: AlexCh пишет: Исходники у меня есть, но разбираться в чужих алгоритмах... ну вы понимаете... Кроме того, нельзя их переписывать постепенно, поскольку это единый комплекс. Нужно переписать все сразу, отладить, а потом резко сменить всё. На практике это нереально. Если все Клиперные программы написаны на 87 или выше, то я как спец по переделке чужих программ на хХарбор заявляю: 1) переделать их совсем нетрудно, если нет вставок на С или ASM 2) может быть нужно будет подправить синтаксис команд (скобочки, пробел лишний поставить), и в алгоритмах разбираться ненужно. 3) переделка не занимает много времени, неделя максимум (это я чужие проги переделывал) 4) Любая прога на клипере (без других вставок) легко и ПОНЯТНО (как в клипере) переделывается в терминалку хХарбора. В хХарборе есть классный сборщик проектов HBMAKE (как RMAKE в клипере) с продвинутыми возможностями. Если надо краткую доку, то могу выслать. Я тоже, сначала с трудом переделывал свои проекты на хХарбор. А теперь не жалею...

Pasha: У меня когда-то был успешный опыт совместной работы clipper 5.2e и FoxPro 2.6 По-умолчанию dbfcdx использует ту же схему блокировок, что и foxpro Во 1-х, вопрос: файлы dbf используются с расширениями VFP. т.е. с расширенным заголовком, или в старом формате FoxPro ? Если с расширением vfp, то клиппер их не просто откроет И некоторые советы. Надо использовать последние версии clipper: 5.2e или 5.3b. Собирать надо в защищенном режиме, т.е. дать команду: BLINKER EXECUTABLE EXTENDED Если не работает dbfcdx у clipper 5.3, может быть стоит попробовать clipper 5.2 Насчет Харбора - я думаю не стоит его использовать, лучше обойтись клиппером. Совместимость с S87 все-таки у него намного выше. Если не планируется в дальнейшем развивать проекты на клиппере, можно обойтись малой кровью - пересборкой на 5.2/5.3 Мне помнится, несколько лет назад Przemyslaw Czerpak писал, что полной совместимости по индексам у Харбора с VFP (именно с VFP, а не со старым FoxPro 2.6) у харбора нет. Сейчас я не могу найти это сообщение.

Urri: Добрый день, уважаемые коллеги. А проблема вообще имеет ли решение? Берем .dbf, строим индех .cdx в Клиппере и Фоксе с одинаковым ключевым выражением. Оба индексных файла даже по длине не совпадают, т.е. имеются отличия в способах их построения. Такая же проблема при использовании SIX и ADS. Действительно, первое впечатление такое, что все работает на тестовом примере. Но когда работаешь с серьезными по размеру базами да еще и в сети и активно модифицируешь - очень скоро начинаются проблемы с корректностью индексов. Помнится давно делал такую ошибку: индексировал все базы на локальной машине, переписывал .dbf & .cdx на сеть и пытался после этого работать через ADS - проблемы типа index corrupted появлялись очень быстро. Чуть сдуру от ADS не отказался. Когда проиндексировал правильно через ADS - оказалось и быстрее, и проблемы с индексами пропали навсегда. Опять же есть проблемы и с заданием индексного выражения. Если есть числовое поле "number,n,5", то в клиппере в сложном индексном выражении можно написать ...+str(number)+... , а в Фоксе ...+str(number,5)+..., иначе совсем индексы совпадать перестанут. Для решения вопроса, который задал автор, может лучше использовать ADS: для Клиппера и Фокса прикрутить одинаковую библиотеку формирования индексов, которые прилагаются к ADS отдельно для клиппера и для фокса.

ALGO: Всё просто - помимо dbfcdx.lib в каталоге библиотек имеется ещё _dbfcdx.lib. Её также надо прилинковать - тогда нормально работает.



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