Форум » LetoDB, HbNetio. » Leto DB Server (продолжение 8) » Ответить

Leto DB Server (продолжение 8)

Pasha: Немного доработал документацию к letodb

Ответов - 273, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All

Andrey: Pasha пишет: Можно создать в проекте папки doc\en, doc\ru, и туда выкладывать описание функций по разделам, примерно как это сделано в contrib\hbct\doc, файловые функции как раз пойдут в letofile.txt Когда появиться дока хотя бы на русском ? Пытаюсь пользоваться letodb-2.09-win Пока тормоз полнейший по хХарбору. Переписал lib.xharbour\rddleto.lib в xHarbour\lib, include в xHarbour\include Пытаюсь собрать пример \letodb-2.09-win\tests\test_var.prg, выдает ошибку: Error: Unresolved external '_hb_setGetAutOrder' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetCL' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetND' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetDS' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetL' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetNL' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_setGetDeleted' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_arraySetC' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|letomgmn Error: Unresolved external '_hb_arraySetNInt' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|letomgmn Error: Unresolved external '_hb_arraySetDL' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|letomgmn Error: Unresolved external '_hb_itemReturnRelease' referenced from Z:\XHARBOUR\LIB\RDDLETO.LIB|letomgmn

Pasha: Andrey пишет: Когда появится дока хотя бы на русском ? Дока на русском есть. Это было предложение по ее переработке, а не созданию. А переработана она будет, когда это кто-нибудь сделает. У меня сейчас таких планов нет. Пытаюсь пользоваться letodb-2.09-win Пока тормоз полнейший по хХарбору. Переписал lib.xharbour\rddleto.lib в xHarbour\lib, include в xHarbour\include Пытаюсь собрать пример \letodb-2.09-win\tests\test_var.prg, выдает ошибку: Все ошибки связаны со стандартными функциями xHarbour из vm.lib. Проверьте свои правила сборки, эта библиотека должна быть указана. Она обязательна для сборки любой xHarbour-программы, не только использующей rddleto.

Andrey: Pasha пишет: Все ошибки связаны со стандартными функциями xHarbour из vm.lib. Проверьте свои правила сборки, эта библиотека должна быть указана. Она обязательна для сборки любой xHarbour-программы Любая другая программа собирается. xHarbour Compiler build 1.0.0 (SimpLex) собираю стандартно, через - HBMAKE test_var.bc #BCC VERSION=BCB.01 !ifndef CC_DIR CC_DIR = $(MAKE_DIR) !endif !ifndef HB_DIR HB_DIR = $(HARBOUR_DIR) !endif RECURSE= NO SHELL = COMPRESS = NO EXTERNALLIB = NO XFWH = NO FILESTOADD = 5 WARNINGLEVEL = 2 USERDEFINE = USERINCLUDE = USERLIBS = EDITOR = notepad GUI = NO MT = NO SRC02 = obj PROJECT = test_var.exe $(PR) OBJFILES = $(SRC02)\TEST_VAR.obj $(OB) PRGFILES = TEST_VAR.PRG $(PS) OBJCFILES = $(OBC) CFILES = $(CF) RESFILES = RESDEPEN = TOPMODULE = TEST_VAR.PRG LIBFILES = lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtwin.lib codepage.lib ct.lib tip.lib pcrepos.lib hsx.lib hbsix.lib rddleto.lib EXTLIBFILES = DEFFILE = HARBOURFLAGS = -m -w2 CFLAG1 = -OS $(SHELL) $(CFLAGS) -d -c -L$(HB_DIR)\lib CFLAG2 = -I$(HB_DIR)\include;$(CC_DIR)\include RFLAGS = LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -ap IFLAGS = LINKER = ilink32 ALLOBJ = c0x32.obj $(OBJFILES) $(OBJCFILES) ALLRES = $(RESDEPEN) ALLLIB = $(USERLIBS) $(LIBFILES) import32.lib cw32.lib .autodepend #DEPENDS #COMMANDS .cpp.obj: $(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** .c.obj: $(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $** .prg.obj: $(HB_DIR)\bin\harbour -D__EXPORT__ -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -o$* $** .rc.res: $(CC_DIR)\BIN\brcc32 $(RFLAGS) $< #BUILD $(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(CC_DIR)\BIN\$(LINKER) @&&! $(LFLAGS) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! makefile.lnk -LZ:\BCC55\lib\obj;Z:\BCC55\lib;Z:\xHARBOUR\lib -Gn -M -m -s -Tpe -x -ap + c0x32.obj obj\TEST_VAR.obj, + test_var.exe,, + rddleto.lib lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtwin.lib codepage.lib ct.lib tip.lib pcrepos.lib hsx.lib hbsix.lib import32.lib cw32.lib, + , + Менял положение rddleto.lib и в начале и в конце, ошибка та же. Pasha я понимаю что вопрос у меня тупой (не собирается и все тут), но я сейчас пытаюсь для новичков составить инструкцию работы на LetoDB. Пока начал с хХарбора. А то у нас получается что LetoDb используют только "продвинутые программеры" ...


PSP: Может проблема в установке "MT = NO"?

Andrey: PSP пишет: Может проблема в установке "MT = NO"? Поставил MT = YES, не помогает ....

Pasha: rddleto.lib из letodb-2.09-win был собран для xHarbour SVN bcc55 У Вас наверняка другая версия xHarbour. rddleto.lib должен быть совместим с ней, если она конечно не очень древняя. Но лучше пересобрать rddleto.lib своим xHarbour, все-таки время от времени в api вносятся изменения, которые приводят к несовместмости. Что касается этих ошибок линкера, то поищите в vm.lib например строку "_hb_itemReturnRelease" (можно любую из списка). Если она есть, то сборка должна выполняться, надо копаться в правилах сборки. Если нет, или имя функции немного другое, к примеру без символа '_': просто "hb_itemReturnRelease", то однозначно надо пересобирать rddleto.lib

k_dima: Использует ли кто DBFNTX с мемо полями и файлом .dbt ? Я глянул в исходники, в leto1. letoRddInfo() похоже для мемо забит только .fpt case RDDI_MEMOEXT: hb_itemPutC( pItem, ".fpt" ); break; Можно ли это поправить, или это не приведет к ошибке ?

Pasha: k_dima пишет: Можно ли это поправить ? Традиционно со времен клиппера считается, что DBFNTX работает с форматои dbf, а DBFCDX - с fpt. В Харборе и DBFNTX, и DBFCDX понимает как dbt, так и fpt мемо-файл. Формат memo не привязан к формату индекса. И в letodb можно работать и с форматом dbt, и с fpt Настройка RDDI_MEMOEXT - это используемый формат memo по умолчанию. Для DBFNTX/DBFCDX эту настройку можно изменять, для letodb - нельзя. Кстати, если вызвать: hb_rddinfo(RDDI_MEMOEXT,, "DBFNTX") результат будет ".dbt" Вызов hb_rddinfo(RDDI_MEMOEXT,, "DBFCDX") дает пустую строку. Сейчас hb_rddinfo(RDDI_MEMOEXT,, "LETO") возвращает ".fpt". Это ни на что не влияет, но конечно немного некорректно. Можно было бы анализировать, с каким драйвером работает по умолчанию сервер letodb. и для DBFNTX возвращать ".ntx", а в случае DBFCDX - непонятно. То ли ".fpt", то ли для совместимости тоже пустую строку. Для полной совместимости конечно можно в letodb тоже дать возможность задавать эту настройку, но с клиента это делать было бы некорректно, так как один клиент смог бы влиять на настройки другого. Можно добавить настройку формата memo по умолчанию в letodb.ini. Какие будут соображения ?

AlexMyr: Если не задана настройка формата memo в letodb.ini, то возвращать логически ожидаемое для DBFCDX - fpt, DBFNTX - dbt, если задан формат, то это значение.

Andrey: Pasha пишет: У Вас наверняка другая версия xHarbour. rddleto.lib должен быть совместим с ней, если она конечно не очень древняя. xHarbour не очень древний, всего 1.0.0 Но вот на нем и не собирался. Перешел на версию 1.2.1 - все нормально собирается. Вот открыл примеры в папке tests - всего 4 примера... Так и получается что LetoDb предназначен для профи ! В доках конечно описано многое, но вот примеров как правильно делать нет... Хотя бы простого, с обработкой ошибок открытия, созданием базы (обработка ошибки создания), поиском, фильтрацией... Ну блин не пойдет такой продукт в массы... Почему так об этом пишу: D:\@TEST_LETODB\PRG>test_var.exe Connect to //127.0.0.1:2812/temp/test - Ok Adding 'var_int' = 100 to [main] - Err (3) Adding 'var_int' = 100 to [main] - Ok Adding 'var_log' = .T. to [main] - Ok Adding 'var_char' = 'Just a small test;' to [main] - Ok Ну нет у меня такой папки - temp/test, а пишет что все Ok... Если сервер не запущен или Вы указали неверный путь, будет сгенерирована ошибка открытия. Возможно проверить доступность сервера перед открытием файлов вызовом функции leto_Connect( cAddress ), которая вернет -1 в случае неудачной попытки: Ну не "догоняю" я пока простых вещей... Вот код и ошибка: http://files.mail.ru/CA12B2402E4F44FBA16846354711523C Собрано на хХарборе 1.2.1 Народ, дайте хоть исходник любой как надо работать с LetoDb ....

PSP: Андрей, для начала посмотри что в letodb.ini присвоено в DataPath К примеру, файл BaseName.dbf лежит в c:\work\dbf Делаем в letodb.ini: DataPath=c:\work в программе: USE "//127.0.0.1:2812/dbf/BaseName.dbf" Если, к примеру, тот же файл лежит на компе с адресом 192.168.0.100, то в программе: USE "//192.168.0.100:2812/dbf/BaseName.dbf" (соответственно, на компе 192.168.0.100 должен быть запущен сервер letodb и брандмауэр/антивирусник должен разрешать серверу letodb общение с внешним миром)

Pasha: Andrey пишет: Вот открыл примеры в папке tests - всего 4 примера... Так и получается что LetoDb предназначен для профи ! В доках конечно описано многое, но вот примеров как правильно делать нет... Хотя бы простого, с обработкой ошибок открытия, созданием базы (обработка ошибки создания), поиском, фильтрацией... Ну блин не пойдет такой продукт в массы... Андрей, у нас же уже был подобный разговор. Все эти действия - обработка ошибок, создание (dbCreate), поиск, фильтрация и прочее выполняются точно так же, как и для стандартных rdd харбора, DBFNTX/DBFCDX Приводить примеры стандартных операций для rdd в описании letodb бессмыссленно. Это необходимое условие использования letodb. Если програмист с этим не знаком, то ему надо сначала выучить язык. А для опытного клиппериста такие проблемы выглядят странно. Ну нет у меня такой папки - temp/test, а пишет что все Ok... Если сервер не запущен или Вы указали неверный путь, будет сгенерирована ошибка открытия. Возможно проверить доступность сервера перед открытием файлов вызовом функции leto_Connect( cAddress ), которая вернет -1 в случае неудачной попытки: Ну не "догоняю" я пока простых вещей... Описание "Если сервер не запущен или Вы указали неверный путь, будет сгенерирована ошибка открытия. " вырвано из контекста и относится к команде use, а не к leto_connect, которая только проверяет доступность сервера и коннектится с ним. Насколько я понимаю, с коннектом уже проблем нет. А с чем тогда есть ? С созданием папки ? Это что, очень сложно ?

SergKis: Andrey пишет:Народ, дайте хоть исходник любой как надо работать с LetoDb Пример:

AlexMyr: Andrey пишет: Народ, дайте хоть исходник любой как надо работать с LetoDb .... А чем не устраивают те, которые идут вместе с LetoDB?

Andrey: SergKis пишет: Пример: Спасибо БОЛЬШОЕ ! Буду разбираться... AlexMyr пишет: А чем не устраивают те, которые идут вместе с LetoDB? Потому что не понятно как LetoDB работает .... Запустил LetoDb.exe на Win8 с тупизмом присущим 8-ке, через батник. Установил как службу. D:\@TEST_LETODB\letodb.ini [MAIN] Port=2812 Log=letodb.log DataPath=D:\@TEST_LETODB\DATA Служба запущена нормально: D:\@TEST_LETODB\letodb.log 02/27/13 10:45:22: Leto DB Server has been started. Leto DB Server v.2.09 ! INIT: DataPath=D:\@TEST_LETODB\DATA, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10 Собираю на хХарборе 1.2.1 пример test_var.exe, запускаю: D:\@TEST_LETODB\PRG>test_var.exe Connect to //127.0.0.1:2812/temp/test - Ok Adding 'var_int' = 100 to [main] - Err (3) Adding 'var_int' = 100 to [main] - Ok Adding 'var_log' = .T. to [main] - Ok Adding 'var_char' = 'Just a small test;' to [main] - Ok Ну нет у меня такой папки - temp/test, а пишет что все Ok... У меня возращает - Connect to //127.0.0.1:2812/temp/test - Ok Это правило действует ТОЛЬКО на удаленные адреса ? На локальном компе ошибка генерироваться будет или нет ? Может 8-ка тупит ? Далее создаю еще папку D:\@TEST_LETODB\DATA\MyDir Делаю свой пример: Function Main Local cPath := "//127.0.0.1:2812/mydir" Local lRes ...... // создаю 2-тестовые базы.... Не могу создать базы, вешается программа - мертво с системной ошибкой... Ссылка на пример и ошибка, приведена выше ! Pasha пишет: Андрей, у нас же уже был подобный разговор. Все эти действия - обработка ошибок, создание (dbCreate), поиск, фильтрация и прочее выполняются точно так же, как и для стандартных rdd харбора, Может был, уже и не помню. Простите меня, памяти не хватает на все. С чем столкнулся, о том и пишу... Pasha пишет: вырвано из контекста и относится к команде use, а не к leto_connect, которая только проверяет доступность сервера и коннектится с ним. Насколько я понимаю, с коннектом уже проблем нет. А с чем тогда есть ? С созданием папки ? Это что, очень сложно ? Понял, спасибо. Видать по доке ошибся... Коннект есть. Папку ручками создал. Не могу создать файл DBF в папке MyDir ! Где и что не так делаю ? Как проверить, что можно в папке на сервере создать файл ?

AlexMyr: Andrey пишет: Ну нет у меня такой папки - temp/test, а пишет что все Ok... У меня возращает - Connect to //127.0.0.1:2812/temp/test - Ok И правильно пишет, что ОК, это значит, что Вы успешно присоединились к серверу по ip адресу 127.0.0.1, на порту 2812. А /temp/... это уже где искать базы. В вашем случае temp/test не папка, а файл test в папке temp. Сначала попробуйте test_ta.prg покрутить.

AlexMyr: Andrey пишет: Далее создаю еще папку D:\@TEST_LETODB\DATA\MyDir Делаю свой пример: Function Main Local cPath := "//127.0.0.1:2812/mydir" Local lRes ...... // создаю 2-тестовые базы.... Не могу создать базы, вешается программа - мертво с системной ошибкой... Ссылка на пример и ошибка, приведена выше ! Правильно будет Local cPath := "//127.0.0.1:2812/mydir/"

Andrey: AlexMyr пишет: Правильно будет Local cPath := "//127.0.0.1:2812/mydir/" Поправил, все равно "ВЕШАЕТСЯ" программа ... Исходник и сборка здесь - http://files.mail.ru/29A0DCDAC71941ADB959D116726D9521 Что я не так делаю ?

Pasha: Andrey пишет: Что я не так делаю ? Мне кажется, надо все-таки пересобрать rddleto.lib своей версией xHarbour. Я выкладывал сборку этой библиотеки с xHarbour SVN, и она может быть несовместима с более ранней версией xHarbour.

Andrey: Спасибо.Понял. Буду пробовать.



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