Форум » 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 пишет: Немного доработал документацию к letodb Спасибо.

alex_II: Использую CDX Если в индексом выражении используется фунция Doy(), получаю ошибку: Error LETO/1001 Неизвестная функция: e:\Sou.may\Letodb\Data\letomay\oplata INDEX ON Doy(dtopl) TO oplata

Pasha: alex_II пишет: Если в индексом выражении используется фунция Doy(), получаю ошибку: DOY - это функция из ct. Сервер естественно собран без этой функции, как и без любых других специфических функций, которые могут встречаться в индексных выражениях. Добавьте в source\server.prg строку: request doy В этой строке перечислите все необходимые Вам функции, и пересоберите сервер. В скрипт сборки сервера (letodb.hbp) в этом случае необходимо будет включить библиотеку hbct, и (возможно) другие сторонние библиотеки: -lhbct


alex_II: Спасибо, буду пробовать

alex_II: Библиотеку hbct подключил подправив файл makefile.bc и всё заработало. Через скрипт сборки сервера letodb.hbp не хватило тяму. Pasha можно пример на пальцах в студию?

Pasha: alex_II пишет: Pasha можно пример на пальцах в студию? Сделайте батник сборки: set path=%path%;d:\bcc55\bin \harbour\bin\win\bcc\hbmk2 letodb.hbp \harbour\bin\win\bcc\hbmk2 rddleto.hbp или set path=%path%;d:\mingw32\bin \harbour\bin\win\mingw\hbmk2 letodb.hbp \harbour\bin\win\mingw\hbmk2 rddleto.hbp или set path=%path%;d:\mingw64\bin \harbour\bin\win\mingw64\hbmk2 letodb.hbp \harbour\bin\win\mingw64\hbmk2 rddleto.hbp

alex_II: Пардон, но я имел ввиду другое Как в файле letodb.hbp описывать дополнительные библиотеки Ниже приведено содержимое этого файла -inc -obin/letodb -iinclude -n -w -q0 -es2 #-warn=max -prgflag={unix}-D__LINUX_DAEMON__ -prgflag={unix}-D__LINUX__ #-prgflag={win}-D__WIN_DAEMON__ -prgflag={win}-D__WIN_SERVICE__ -cflag={allmsvc}-D_CRT_SECURE_NO_DEPRECATE -cflag={win}-D__WIN_SERVICE__ -gui -mt source/server/server.prg source/server/errorsys.prg source/server/errint.c {unix}source/server/leto_lnx.c {win}source/server/leto_win.c source/server/letoacc.c source/server/letovars.c source/server/letofunc.c source/server/leto_2.c source/common/blowfish.c source/common/common_c.c #source/common/hbip.c source/common/common.prg

Pasha: Просто добавить строку: -l<имя библиотеки> в произвольное место этого скрипта, лучше перед списком модулей

alex_II: Понял, спасибо

AlexMyr: варнинги... ../../../../source/client/leto1.c:1816:24: warning: 'pData' may be used uninitialized in this function [-Wuninitialized] ../../../../source/client/leto1.c:1829:12: warning: 'uiKeyLen' may be used uninitialized in this function [-Wuninitialized] ... ../../../../source/server/letofunc.c:6110:10: warning: 'pArea' may be used uninitialized in this function [-Wuninitialized] Инфа: Letodb /* $Id: Changelog,v 1.350.2.68 2012/06/22 14:17:23 ptsarenko Exp $ */ Harbour Version: Harbour 3.2.0dev (Rev. 17728) Compiler: MinGW GNU C 4.6.2 (32-bit) Platform: Windows XP 5.1.2600 Service Pack 3

Pasha: AlexMyr пишет: варнинги... ../../../../source/client/leto1.c:1816:24: warning: 'pData' may be used uninitialized in this function [-Wuninitialized] ../../../../source/client/leto1.c:1829:12: warning: 'uiKeyLen' may be used uninitialized in this function [-Wuninitialized] ... ../../../../source/server/letofunc.c:6110:10: warning: 'pArea' may be used uninitialized in this function [-Wuninitialized] Да я эти варнинги знаю давно, не знаю как их убрать. Компилятор не может раскрутить сложную логику, и видит неинициализированные переменные, хотя по алгоритму они инициализируются в любом случае. А рабочий алгоритм переписывать не хочется. Я кое-что поправил для custom-индексов, вызовы OrdKeyAdd, OrdKeyDel

Pasha: У меня есть предложение к уже использующим letodb. Прочтите документацию (readme.txt), какая она есть в нынешнем виде, и попробуйте в ней что-нибудь дополнить. Может быть, там не отражен какой-то момент, который был существенным для вас. Можно дополнить какой-либо раздел, или создать новый. Это было бы полезно тем, кто только планирует использовать этот продукт. Выкладывать можно сюда. На русском или английском языке.

AlexMyr: 1. Пункт 2.5 (readme.txt) гласит, что при сборке letodb можно собрать и тесты опция -target, НО для этого нужен файл hbmk.hbm в папке letodb с таким содержимым: rddleto.hbc без этого файла тесты не соберутся. 2. Нужно добавить, что letodb для windows может быть собран в двух вариантах - 1) служба, 2) демон (процесс). И по умолчанию letodb собирается как служба, из чего вытекает, что letodb надо установить как службу, и потом ее запустить.

AlexMyr: 3. 5. Соединение с сервером клиентских программ Чтобы сконнектиться с сервером, прежде всего необходимо прилинковать rddleto.lib (Windows) или librddleto.a (Linux) к своему приложению ... предлагаю упростить: Чтобы сконнектиться с сервером, прежде всего необходимо прилинковать библиотеку rddleto к своему приложению ...

Pasha: Спасибо, добавил в доку. Меня удивило, что сервер еще можно собрать как демон под Windows. Сам я это не делал, с тех пор как была добавлена поддержка службы.

alex_II: Не могу переименовать файл В ini-файле сервера указан путь: DataPath = e:\Sou.may\Letodb\Data В программе указан путь: Path_Dbf := '//localhost:2812/LetoMay/' Leto_Frename(Path_Dbf+'zar1.dbf', Path_Dbf+'zar3.dbf') возвращает -1 Leto_Frename(Path_Dbf+'zar1.dbf', 'zar3.dbf') отрабатывает и переносит файл на уровень вверх в папку Data

AlexMyr: alex_II пишет: Не могу переименовать файл Читаем readme.txt или readme_rus.txt п.5, из последнего выдержка: Если задан параметр 'DataPath' в конфигурационном файле сервера, и он имеет непустое значение, необходимо указывать не полный путь к файлу на сервере, а путь относительный ( относительно значению 'DataPath' ). Например, если необходимо открыть файл test.dbf, который расположен на сервере 192.168.5.22 в каталоге /data/mydir и значение параметра 'DataPath' ( в файле конфигурации сервере letodb.ini ) '/data', синтаксис должен быть таким: USE "//192.168.5.22:2812/mydir/test" Если сервер не запущен или Вы указали неверный путь, будет сгенерирована ошибка открытия. Возможно проверить доступность сервера перед открытием файлов вызовом функции leto_Connect( cAddress ), которая вернет -1 в случае неудачной попытки: IF leto_Connect( "//192.168.5.22:2812/mydir/" ) == -1 Alert( "Can't connect to server ..." ) ENDIF Я думаю тут все ясно.

alex_II: Ничего не ясно Переменная Path_Dbf := '//localhost:2812/LetoMay/' как раз и описывает относительный путь и цитирование лишний раз файла readme понимания ситуации не добавляет. Если я неверно описываю путь доступа к файлу, почему тогда без ошибок отрабатывают другие функции: Leto_File(Path_Dbf+'zar.dbf') Leto_Ferase(Path_Dbf+'zar.dbf') ?

AlexMyr: alex_II пишет: и цитирование лишний раз файла readme понимания ситуации не добавляет. потому как мало кто его читает Дайте самодостаточный пример и конкретно где лежат файлы из Вашего поста выше не ясно

Pasha: alex_II пишет: Не могу переименовать файл В ini-файле сервера указан путь: DataPath = e:\Sou.may\Letodb\Data В программе указан путь: Path_Dbf := '//localhost:2812/LetoMay/' Leto_Frename(Path_Dbf+'zar1.dbf', Path_Dbf+'zar3.dbf') возвращает -1 2-й параметр надо указывать без строки коннента, т.е: Path_Srv := '//localhost:2812' Path_Dbf := '/LetoMay/' Leto_Frename(Path_Srv + Path_Dbf+'zar1.dbf', Path_Dbf+'zar3.dbf') Leto_Frename(Path_Dbf+'zar1.dbf', 'zar3.dbf') отрабатывает и переносит файл на уровень вверх в папку Data Так и должно быть, поскольку все файловые операции на сервере выполняются относительно DataPath



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