Автор | Сообщение |
Dima
|
| |
Пост N: 2728
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)
Продолжаем тут
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 763
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.01.14 17:59. Заголовок: Andrey пишет: Не см..
Andrey пишет: цитата: | Не смотря на праздники - работа идет ! |
| Погода не очень - выходить из дома неохота. Слоняясь по квартире, иногда и к компьютеру подходишь... :) С созданием dll вопрос решился просто - hbmk, все-таки, иногда бывает полезен.
|
|
|
alkresin
|
| moderator
|
Пост N: 764
Зарегистрирован: 06.07.06
|
|
Отправлено: 09.01.14 10:46. Заголовок: По поводу добавления..
По поводу добавления bAutOpen: лучше, наверное, сделать так же, как и с остальными установками (SetDeleted, SetCentury, etc.) - добавить в letocl.c static unsigned int s_uiAutOpen, соответствующую функцию LetoSetAutOpen(), добавить вызов этой функции в leto1.c в leto_SetOptions() и вызывать leto_SetOptions() из LetoOpen()
|
|
|
Pasha
|
| Администратор
|
Пост N: 3112
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.01.14 14:34. Заголовок: Переделаю..
Переделаю
|
|
|
alkresin
|
| moderator
|
Пост N: 767
Зарегистрирован: 06.07.06
|
|
Отправлено: 16.01.14 10:20. Заголовок: Добавил англоязычный..
Добавил англоязычный форум по letodb: https://sourceforge.net/apps/phpbb/letodb/index.php, надо будет и на сайте ( letodb.sourceforge.net ) что-нибудь вразумительное написать, а то новым пользователям непонятно даже, какую ветку использовать, как код брать.
|
|
|
Pasha
|
| Администратор
|
Пост N: 3116
Зарегистрирован: 23.05.05
|
|
Отправлено: 16.01.14 13:39. Заголовок: Можно было бы дать с..
Можно было бы дать ссылку на этот форум в Harbour Users
|
|
|
alkresin
|
| moderator
|
Пост N: 768
Зарегистрирован: 06.07.06
|
|
Отправлено: 16.01.14 15:31. Заголовок: Дал. Хочу еще написа..
Дал. Хочу еще написать php client. Попробовал уже простейшие вещи - присоединиться, получить management информацию - работает.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3214
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.01.14 13:48. Заголовок: alkresin пишет: Хоч..
alkresin пишет: цитата: | Хочу еще написать php client |
| Поддерживаем ! И что будет в результате: доступ через Харбор и доступ к базе на сайте через php client ?
|
|
|
kia
|
| |
Пост N: 22
Зарегистрирован: 22.03.06
|
|
Отправлено: 28.01.14 10:00. Заголовок: Александр, Паша в п..
Александр, Паша в процессе тестирования LetoDb (v 1.350.2.172 2014/01/15 10:57:57) сервер - linux, клиент - win7, обнаружил несколько ошибок. Первые две ошибки, при попытке открыть не существующий в данный момент dbf-файл, вызывают падение программы с "Exception error". В зависимости от наличия алиаса в вызове функции DbUseArea происходят разные ошибки. Контрольный пример прилагается. Надо раскоментировать строку с нужной ошибкой /* test_error.prg letoDbSrc - $Id: Changelog,v 1.350.2.172 2014/01/15 10:57:57 alkresin Exp $ Harbour Build Info --------------------------- Version: Harbour 3.2.0dev (r1401142236) Compiler: MinGW GNU C 4.8 (32-bit) Platform: Windows 7 6.1.7600 PCode version: 0.3 ChangeLog last entry: 2014-01-14 23:36 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) ChangeLog ID: 89da1a2b87be5b1553225eba6b378c318c4a09ce Built on: Jan 17 2014 14:28:19 Build options: (Clipper 5.3b) (Clipper 5.x undoc) --------------------------- letoDb server - linux client - win7 */ REQUEST HB_CODEPAGE_RU866 REQUEST HB_LANG_RU866 REQUEST LETO function Main( ... ) Hb_CDPSelect( "RU866" ) Hb_LangSelect( "RU866" ) HB_GtInfo( /*HB_GTI_CODEPAGE*/ 25, 255 ) // #define OEM_CHARSET 255 - from wingdi.h RDDSETDEFAULT( "LETO" ) setcolor('14/1') cls ? 'begin test LetoDb' ? leto_Connect( "//192.168.1.1:2812/" ) //existing path on LetoDb server //error № 1 DbUseArea(.t.,,'dummy','DUMMY') //function commonError leto1c.c //line 181 - hb_errPutFileName( pError, szFileName ); //szFileName - не инициализированный указатель //вызывается из letoOpen line 2272 указатель ptr - не используется //до самого вызова commonError если указан алиас в DbUseArea //error № 2 //DbUseArea(.t.,,'dummy') //function letoClose leto1c.c //line 1816 - if( pTable->pTagInfo ) //pTable==null в это время, в строке 1809 есть проверка указателя //line 1809 - if( pTable && pTable->uiUpdated ) ? Alias() inkey(0) DbCloseAll() quit return NIL //end Main() ps Большое спасибо за вашу работу.
|
|
|
alkresin
|
| moderator
|
Пост N: 774
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.01.14 17:25. Заголовок: kia пишет: в процес..
kia пишет: цитата: | в процессе тестирования LetoDb (v 1.350.2.172 2014/01/15 10:57:57) сервер - linux, клиент - win7, обнаружил несколько ошибок. |
| Спасибо за информацию. Поправлю.
|
|
|
alkresin
|
| moderator
|
Пост N: 775
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.01.14 17:28. Заголовок: Andrey пишет: И что..
Andrey пишет: цитата: | И что будет в результате: доступ через Харбор и доступ к базе на сайте через php client ? |
| Да. Собственно, кое-что уже работает, пример - на CVS.
|
|
|
kia
|
| |
Пост N: 23
Зарегистрирован: 22.03.06
|
|
Отправлено: 29.01.14 09:38. Заголовок: alkresin пишет: Спа..
alkresin пишет: цитата: | Спасибо за информацию. Поправлю. |
| Вот еще одно странное поведение сервера, похоже связанное с наследованием глобальных установок в тредах. В настойках letodb.ini LOWER_PATH = 1 но эта настройка не работает как надо. тестовый пример (исходные данные как в предыдущем посте) function Main( ... ) ... ? leto_Connect( "//192.168.1.1:2812/" ) //existing path on LetoDb server DbCreate('tmptest',{{'test','C',10,0}}) DbUseArea(.t.,,'tmptest') ? Alias() DbCloseArea() inkey(0) DbUseArea(.t.,,'tmpTest') //здесь возникает ошибка! Error DBFCDX/1001 Open error: tmpTest.dbf //код дос ошибки - 2 (File not found) ? Alias() DbCloseArea() inkey(0) return NIL //end Main() Если в файл server.prg после кода line 909 IF ::lLower SET( _SET_FILECASE, 1 ) SET( _SET_DIRCASE, 1 ) ENDIF добавить wrlog(str(set(_SET_FILECASE))) то в логе увидим результат 1, т.е. в этом месте установка сработала но та же стока wrlog(str(set(_SET_FILECASE))) в функции hs_opentable line 368 покажет что _SET_FILECASE установлен в 0 (уже правда в логе letodb_0.log а не в letodb.log) если в функции hs_opentable добавить не только получение но и установку _SET_FILECASE wrlog(str(set(_SET_FILECASE,1))) то эта фича "LOWER_PATH" начинает работать правильно. Спасибо за вашу работу.
|
|
|
|
alkresin
|
| moderator
|
Пост N: 776
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.02.14 12:47. Заголовок: kia пишет: Вот еще ..
kia пишет: цитата: | Вот еще одно странное поведение сервера, похоже связанное с наследованием глобальных установок в тредах. |
| Похоже, что при создании нового потока на С уровне с помощью hb_threadCreate() ( а именно так это делается в letodb ) текущее состояние не наследуется. Посмотрю, что можно сделать. Кстати, ошибки с открытием несуществующей таблицы сегодня исправил.
|
|
|
alkresin
|
| moderator
|
Пост N: 777
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.02.14 13:10. Заголовок: Павел, мне непонятно..
Павел, мне непонятно предназначение опции TIMEOUT в letodb.ini. Похоже, что если клиент не будет непрерывно посылать запросы серверу, соединение разорвется ?
|
|
|
kia
|
| |
Пост N: 25
Зарегистрирован: 22.03.06
|
|
Отправлено: 04.02.14 17:31. Заголовок: alkresin пишет: Кст..
alkresin пишет: цитата: | Кстати, ошибки с открытием несуществующей таблицы сегодня исправил. |
| Спасибо большое, завтра с утра проверю. Нашел еще описку в функции leto_BagCheck файл common_c.c ... line 171 p1 = ptr = szTable; p2 = p4 = NULL; while( ( c = *ptr) != 0 ) { if( c == '/' || c == '\\' ) p2 = ptr; <---должно быть p1 = ptr+1; //ptr+1 т.к. ptr указывает на "\" а не на начало имени else if( c == '.' ) p2 = ptr; ptr ++; } if( !p2 || p2 < p1 ) p2 = ptr; p3 = ptr = szBagName; while( ( c = *ptr) != 0 ) { if( c == '/' || c == '\\' ) p4 = ptr; <---должно быть p3 = ptr+1; //ptr+1 т.к. ptr указывает на "\" а не на начало имени else if( c == '.' ) p4 = ptr; ptr ++; } ... Ошибка проявлялась на структурных индексах (закрывались там где не должны были), если в имени dbf был указан путь а в имени индекса нет или наоборот. На сервере не устанавливался pIStru->bCompound а на клиенте неправильно отрабатывала функция letoOrderListClear
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3240
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.02.14 12:46. Заголовок: Можно ли на стороне ..
Можно ли на стороне сервера открыть файл, расшифровать его и передать как массив - клиенту ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 3118
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.02.14 08:56. Заголовок: Можно, с помощью udf..
Можно, с помощью udf-функции
|
|
|
Pasha
|
| Администратор
|
Пост N: 3120
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.02.14 19:21. Заголовок: Пользователи letodb ..
Пользователи letodb жалуются, что неправильно работает LETO_ISFLTOPTIM для фильтра типа: .T. .AND. At (I2Bin(n_field), "ABCD") <> 0 выяснилось, что причина этого - неправильная работа движка харбора, а именно: вызов hb_macroGetType для выражения At (I2Bin(n_field), "ABCD") <> 0 дает результат не "L", как должно быть, а "UI" точно так же работает движок клиппера, пример: request L2Bin Type('At (I2Bin(n_field), "ABCD") <> 0') // UI Вывод из всего этого такой: для определения типа макровыражения недостаточно вызвать hb_macroGetType. Если этот вызов дает "UI", то для определения типа выражения придется его выполнить, и определить тип результата.
|
|
|
Dima
|
| |
Пост N: 3843
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.02.14 22:03. Заголовок: Pasha пишет: hb_mac..
Pasha пишет: Эта функция еще рабочая ? Harbour (точнее Hbmk2) ее не видит...
|
|
|
Pasha
|
| Администратор
|
Пост N: 3121
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.02.14 22:29. Заголовок: Dima пишет: Эта фун..
Dima пишет: цитата: | Эта функция еще рабочая ? Harbour (точнее Hbmk2) ее не видит... |
| Это сишная функция, для харбор-кода надо использовать Type(...)
|
|
|
Pasha
|
| Администратор
|
Пост N: 3122
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.02.14 20:31. Заголовок: Просьба собрать и за..
Просьба собрать и запустить такой тест: proc main Local cPath := "//127.0.0.1:2812/" REQUEST LETO RDDSETDEFAULT( "LETO" ) cls leto_connect(cPath) if ! leto_File(cPath + "test.dbf") dbCreate(cPath + "test.dbf", {{"C1", "C", 10, 0}, {"N1", "N", 10, 0}}) ? "test.dbf created" endif use (cPath + "test") exclusive new if ! NetErr() ? "Success" append blank Field->C1 := "test" dbCommit() wait close else ? "Open failed" ? "Quit succesfully, without crash" endif leto_disconnect(cPath) return Запустите один экземпляр программы. Будет выдано сообщение: Success Press any key to continue... Не закрывая программу, запустите ее второй экземпляр. Должно быть выдано сообщение: Open failed Quit succesfully, without crash Если второй экземпляр программы так отработает, значит - все в порядке. У меня так и происходит Если упадет с gpf - значит, есть какая-то проблема. Пользователи на нее жалуются, а я даже не могу воспроизвести ситуацию.
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|