Автор | Сообщение |
|
| moderator
|
Пост N: 971
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.06.16 17:05. Заголовок: LetoDB 2.17
Обновил номер сборки с 1 до 2 и выложил исходники на Sourceforge, а то там лежала версия более чем годичной давности.
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|
|
| постоянный участник
|
Пост N: 997
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.06.16 17:29. Заголовок: Есть еще одно место ..
|
|
|
|
| moderator
|
Пост N: 972
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.06.16 18:16. Заголовок: Выложил на http://ww..
Выложил на http://www.kresin.ru/letodb.html обновленные дистрибутивы: исходники, бинарные сборки для Windows (Borland 5.5) и Linux Debian 7 (должны работать и на Ubuntu).
|
|
|
|
| Администратор
|
Пост N: 3457
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.06.16 08:14. Заголовок: Александр, не посмот..
Александр, не посмотрите такую ситуацию: если выдать: leto_CloseAll() leto_CloseAll() или leto_CloseAll() leto_disconnect() то на 2-м вызове получается gpf во 2-м случае gpf происходит по той же причине, что и в 1-м, т.к. leto_disConnect() вызывает leto_CloseAll() Насколько я понимаю, в leto_CloseAll() надо еще как-то вызывать метод release, кроме метода close, для тех рабочих областей, которые закрываются
|
|
|
|
| moderator
|
Пост N: 973
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.06.16 09:09. Заголовок: Что-то у меня не пол..
Что-то у меня не получилось воспроизвести это. Поставил в конец tests/test_dbf.prg два вызова leto_CloseAll() - полет нормальный...
|
|
|
|
| постоянный участник
|
Пост N: 1103
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.07.16 13:49. Заголовок: Получил такую ситуац..
Получил такую ситуацию с длинным именем переменной сервера (добавка кода в tests\test_var.prg): ... j := subs(cPath+'temp2.dbf', 3) j := StrTran(j, DEF_CH_SEP, "_") j := StrTran(j, ".", "_") j := "Var_"+StrTran(j, ":", "_") ? "Adding long name ", j, "to [main] (Ok) " lRes := leto_varSet( "main", j, "Value = "+j,LETO_VCREAT ) IF lRes ?? " - ", "Ok" ? "long name ", j, "[main]", leto_varGet( "main",j ) ? "Delete var_long (Ok) [", j, "]" lRes := leto_varDel( "main", j ) IF lRes ?? " - ", "Ok" ELSE ?? " - ", "Err (" + Ltrim(Str(leto_ferror())) + ")" ENDIF ELSE ?? " - ", "Err (" + Ltrim(Str(leto_ferror())) + ")" ENDIF ... с выделенными строками удаления работает нормально, если убрать строки удаления переменной с длинным именем, то валится ShowVars() после arr1 := leto_varGetlist( arr[ i ] ), причем так, что спасает только перезапуск сервера
|
|
|
|
| постоянный участник
|
Пост N: 1104
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.07.16 10:33. Заголовок: Вопрос снят. Мах. дл..
Вопрос снят. Мах. длина имени переменной в leto_VarGetList() - 23 байта. Буду исходить из этого.
|
|
|
|
| постоянный участник
|
Пост N: 1106
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.07.16 14:58. Заголовок: Pasha, alkresin Мож..
Pasha, alkresin Можно ли на клиенте получить установки сервера из ini EnableFileFunc = 0 Pass_for_Login = 1 Pass_for_Data = 1 Pass_for_Manage = 1 для понимая состояния сервера Например установка Pass_for_Login = 1 сваливает сервер, при коннекте с пустыми user, password это делает manage.exe из поставки \utils\* Скрытый текст ======= letodb.ini ======= [MAIN] Port = 2812 DataPath = . EnableFileFunc = 0 Pass_for_Login = 1 ======= LetoDb.log ======= 07/24/16 14:29:31: Leto DB Server has been started. Leto DB Server v.2.17b2 ! INIT: DataPath=., ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10 07/24/16 14:29:31: C:\LETO\LetoDb\bin\letoudf.hrb has been loaded. ERROR! ParseCommand() leto_errInternal!!!!!!!!!!!!!!!!!! 07/24/16 14:31:24: Can't STOP the server (not started?)... ============ LetoDb_crash.log ============ Breakdown at: 2016.07.24 14:30:03 Unrecoverable error 6005: Exception error:%s Exception Code:C0000005 ACCESS_VIOLATION Exception Address:004E0B64 EAX:00000000 EBX:00512F08 ECX:00512F08 EDX:004DF35C ESI:00000000 EDI:0231FD8E EBP:0231FD28 CS:EIP:0023:004E0B64 SS:ESP:002B:0231F7FC DS:002B ES:002B FS:0053 GS:002B Flags:00010246 Exception Parameters: 00000000 00000000 CS:EIP: 8A 1E 46 84 DB 0F 84 C1 08 00 00 80 FB 25 75 08 SS:ESP: 0231FD8E 00000000 00512F08 4F525245 50202152 65737261 6D6D6F43 28646E61 000A0D29 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C stack: EIP: EBP: Frame: OldEBP, RetAddr, Params... 004E0B64 0231FD28 0231FD50 004E0A5A 004DF35C 00512F08 00000000 00000000 00000000 0231FE8C 00000000 00512F08 004E0A5A 0231FD50 0231FE78 00403E8D 00512F08 00000000 0231FE8C 0028273C 00000030 0026E0A4 4C5C3A43 5C4F5445 00403E8D 0231FE78 0231FEAC 0041143E 00000000 00000000 00000000 004E7BC8 02220000 01E23094 006930F4 000000A0 0041143E 0231FEAC 0231FF7C 004E79C4 00000000 00000000 00000000 01E23094 00000094 00000006 00000002 000023F0 004E79C4 0231FF7C 0231FF8C 004E79F7 01E23094 004E7BC8 004E79F7 0231FF8C 0231FF98 772F495D 01E23094 772F495D 0231FF98 0231FFDC 778898EE 01E23094 B4508399 00000000 00000000 01E23094 00000000 00000000 00000000 Modules: 00400000 00128000 C:\LETO\LetoDb\bin\leto2016.exe 77840000 00168000 C:\windows\SYSTEM32\ntdll.dll 772E0000 00140000 C:\windows\SYSTEM32\KERNEL32.DLL 76490000 000CF000 C:\windows\SYSTEM32\KERNELBASE.dll 76EF0000 00150000 C:\windows\SYSTEM32\USER32.DLL 77690000 00077000 C:\windows\SYSTEM32\ADVAPI32.DLL 75290000 0004D000 C:\windows\SYSTEM32\WS2_32.DLL 74EE0000 0001E000 C:\windows\SYSTEM32\IPHLPAPI.DLL 76900000 00108000 C:\windows\SYSTEM32\GDI32.dll 766B0000 000BE000 C:\windows\SYSTEM32\msvcrt.dll 77050000 0003E000 C:\windows\SYSTEM32\sechost.dll 765F0000 000B1000 C:\windows\SYSTEM32\RPCRT4.dll 76780000 00007000 C:\windows\SYSTEM32\NSI.dll 714F0000 00008000 C:\windows\SYSTEM32\WINNSI.DLL 75270000 0001D000 C:\windows\SYSTEM32\SspiCli.dll 75260000 00009000 C:\windows\SYSTEM32\CRYPTBASE.dll 75200000 00051000 C:\windows\SYSTEM32\bcryptPrimitives.dll 76AE0000 00025000 C:\windows\system32\IMM32.DLL 76C60000 000F7000 C:\windows\SYSTEM32\MSCTF.dll 6F3A0000 00045000 C:\windows\system32\mswsock.dll ------------------------------------------------------------------------ Unrecoverable error 6005: Exception error:%s Exception Code:C0000005 ACCESS_VIOLATION Exception Address:004E0B64 EAX:00000000 EBX:00512F08 ECX:00512F08 EDX:004DF35C ESI:00000000 EDI:0231FD8E EBP:0231FD28 CS:EIP:0023:004E0B64 SS:ESP:002B:0231F7FC DS:002B ES:002B FS:0053 GS:002B Flags:00010246 Exception Parameters: 00000000 00000000 CS:EIP: 8A 1E 46 84 DB 0F 84 C1 08 00 00 80 FB 25 75 08 SS:ESP: 0231FD8E 00000000 00512F08 4F525245 50202152 65737261 6D6D6F43 28646E61 000A0D29 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C stack: EIP: EBP: Frame: OldEBP, RetAddr, Params... 004E0B64 0231FD28 0231FD50 004E0A5A 004DF35C 00512F08 00000000 00000000 00000000 0231FE8C 00000000 00512F08 004E0A5A 0231FD50 0231FE78 00403E8D 00512F08 00000000 0231FE8C 0028273C 00000030 0026E0A4 4C5C3A43 5C4F5445 00403E8D 0231FE78 0231FEAC 0041143E 00000000 00000000 00000000 004E7BC8 02220000 01E23094 006930F4 000000A0 0041143E 0231FEAC 0231FF7C 004E79C4 00000000 00000000 00000000 01E23094 00000094 00000006 00000002 000023F0 004E79C4 0231FF7C 0231FF8C 004E79F7 01E23094 004E7BC8 004E79F7 0231FF8C 0231FF98 772F495D 01E23094 772F495D 0231FF98 0231FFDC 778898EE 01E23094 B4508399 00000000 00000000 01E23094 C0000005 00000000 0231F210 Modules: 00400000 00128000 C:\LETO\LetoDb\bin\leto2016.exe 77840000 00168000 C:\windows\SYSTEM32\ntdll.dll 772E0000 00140000 C:\windows\SYSTEM32\KERNEL32.DLL 76490000 000CF000 C:\windows\SYSTEM32\KERNELBASE.dll 76EF0000 00150000 C:\windows\SYSTEM32\USER32.DLL 77690000 00077000 C:\windows\SYSTEM32\ADVAPI32.DLL 75290000 0004D000 C:\windows\SYSTEM32\WS2_32.DLL 74EE0000 0001E000 C:\windows\SYSTEM32\IPHLPAPI.DLL 76900000 00108000 C:\windows\SYSTEM32\GDI32.dll 766B0000 000BE000 C:\windows\SYSTEM32\msvcrt.dll 77050000 0003E000 C:\windows\SYSTEM32\sechost.dll 765F0000 000B1000 C:\windows\SYSTEM32\RPCRT4.dll 76780000 00007000 C:\windows\SYSTEM32\NSI.dll 714F0000 00008000 C:\windows\SYSTEM32\WINNSI.DLL 75270000 0001D000 C:\windows\SYSTEM32\SspiCli.dll 75260000 00009000 C:\windows\SYSTEM32\CRYPTBASE.dll 75200000 00051000 C:\windows\SYSTEM32\bcryptPrimitives.dll 76AE0000 00025000 C:\windows\system32\IMM32.DLL 76C60000 000F7000 C:\windows\SYSTEM32\MSCTF.dll 6F3A0000 00045000 C:\windows\system32\mswsock.dll
|
|
|
|
|
| постоянный участник
|
Пост N: 1107
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.07.16 13:50. Заголовок: Еще вопросик по v.2...
Еще вопросик по v.2.17.b2. Что не так делаю при создании защищенной переменной на сервере ( LETO_VDENYWR - запрет присваивания значения другим пользователем ) letoudf.prg ======= #include "rddleto.ch" ... FUNCTION UDF_Init LOCAL cGroupName := "letodb.ini" LOCAL nUserStru // := 1 SET AUTORDER TO 1 LETO_VARSET(nUserStru, cGroupName, "lLower" , oApp:lLower, LETO_VCREAT + LETO_VDENYWR) RETURN Nil Test_Var.prg ======== ... ? "Get [letodb.ini] lLower =",leto_varGet( "letodb.ini", "lLower" ) // ... = .F. ? "Error =",leto_ferror() // 0 ? "Set [letodb.ini] lLower = .T." leto_varSet( "letodb.ini", "lLower", .T. ) ? "Error =",leto_ferror() // 0 ? "Get [letodb.ini] lLower =",leto_varGet( "letodb.ini", "lLower" ) // ... = .T. ? "Error =",leto_ferror() // 0 ...
|
|
|
|
| Администратор
|
Пост N: 3470
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.07.16 16:24. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно ли на клиенте получить установки сервера из ini EnableFileFunc = 0 Pass_for_Login = 1 Pass_for_Data = 1 Pass_for_Manage = 1 для понимая состояния сервера Например установка Pass_for_Login = 1 сваливает сервер, при коннекте с пустыми user, password |
| Получить параметры сервера до коннекта с ним конечно невозможно. Другое дело, что коннект с любыми параметрами не должен сваливать сервер. Посмотрю, в чем там дело.
|
|
|
|
| постоянный участник
|
Пост N: 1108
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.07.16 07:34. Заголовок: Pasha пишет: Получит..
Pasha пишет: цитата: | Получить параметры сервера до коннекта с ним конечно невозможно |
| Разговор о после коннекта. Пытаюсь создать на сервере и получить на клиенте такие данные (к примеру): Скрытый текст
небольшие изменения для тестов: leto2016.prg ============ METHOD New() CLASS HApp ... msglog(procname(),"leto_SetAppOptions(...)") // !!! сработал вызов leto_SetAppOptions( iif( Empty(::DataPath ),Nil,::DataPath ), ; // 1 ::nDriver, ; // 2 ::lFileFunc, ; // 3 ::lAnyExt, ; // 4 ::lPass4L, ; // 5 ::lPass4M, ; // 6 ::lPass4D, ; // 7 ::cPassName, ; // 8 ::lCryptTraffic, ; // 9 ::lShare, ; // 10 ::lNoSaveWA, ; // 11 nMaxVars, ; // 12 nMaxVarSize, ; // 13 nCacheRecords, ; // 14 nTables_max, ; // 15 nUsers_max, ; // 16 nDebugMode, ; // 17 lOptimize, ; // 18 nAutOrder, ; // 19 nMemoType, ; // 20 lForceOpt, ; // 21 ::cTrigger, ; // 22 ::cPendingTrigger, ; // 23 lSetTrigger ) // 24 RETURN Self ... FUNCTION MsgLog( ... ) LOCAL i, nParams := pCount(), aParams := hb_aParams() LOCAL hFile, cFile := "_MsgLog.txt", xVal, cTp hFile := iif( File(cFile), FOpen(cFile, 2) , FCreate(cFile) ) IF hFile < 1 RETURN .F. ENDIF FSeek( hFile, 0, 2) IF nParams > 0 FOR i := 1 TO nParams xVal := aParams[ i ] cTp := ValType( xVal ) IF cTp == 'C' ; xVal := iif(Empty(xVal), "'"+"'", trim(xVal)) ELSEIF cTp == 'N' ; xVal := hb_ntos(xVal) ELSEIF cTp == 'L' ; xVal := iif(xVal, ".T.", ".F.") ELSEIF cTp == 'D' ; xVal := hb_DtoC(xVal, 'DD.MM.YYYY') ELSEIF cTp == 'A' ; xVal := "ARRAY[" + hb_NToS( Len(xVal) ) + "]" ELSEIF cTp == 'H' ; xVal := "HASH[" + hb_NToS( Len(xVal) ) + "]" ELSEIF cTp == 'B' ; xVal := "'" + "B" + "'" ELSEIF cTp == "T" ; xVal := hb_TSToStr( xVal, .T. ) ELSEIF cTp == 'U' ; xVal := 'NIL' ELSE ; xVal := "'" + cTp + "'" ENDIF FWrite(hFile, xVal + Chr(9) ) NEXT ENDIF FWrite( hFile, Chr(13)+Chr(10), 2 ) FClose( hFile ) RETURN .T. letoudf.prg =========== #include "rddleto.ch" ... FUNCTION UDF_Init /* * This function called immediately after loading letoudf.hrb, if exist */ LOCAL aVar := {}, nUserStru := NIL, cGroupName := "letodb.ini", aIni SET AUTORDER TO 1 msglog("-----------------------------------------") aIni := rdIni(hb_dirBase()+"letodb.ini") msglog("rdIni(...) :") msglog(hb_valtoexp(aIni)) msglog("Is variable PUBLIC oApp :", __MVEXIST("oApp")) aAdd(aVar, { 'lFileFunc' , leto_GetAppOptions( 3) }) aAdd(aVar, { 'lAnyExt' , leto_GetAppOptions( 4) }) aAdd(aVar, { 'lPass4L' , leto_GetAppOptions( 5) }) aAdd(aVar, { 'lPass4M' , leto_GetAppOptions( 6) }) aAdd(aVar, { 'lPass4D' , leto_GetAppOptions( 7) }) aAdd(aVar, { 'nCacheRecords', leto_GetAppOptions(14) }) aAdd(aVar, { 'nDebugMode' , leto_GetAppOptions(17) }) aAdd(aVar, { 'lOptimize' , leto_GetAppOptions(18) }) aAdd(aVar, { 'nAutOrder' , leto_GetAppOptions(19) }) aAdd(aVar, { 'nMemoType' , leto_GetAppOptions(20) }) aAdd(aVar, { 'lForceOpt' , leto_GetAppOptions(21) }) If !empty(leto_GetAppOptions(22)) .or. !empty(leto_GetAppOptions(23)) aAdd(aVar, { 'lSetTrigger' , leto_GetAppOptions(24) }) EndIf LETO_VARSET(nUserStru, cGroupName, "Options", hb_valtoexp(aVar), ; LETO_VCREAT+LETO_VDENYWR) msglog("leto_GetAppOptions(...) :") aEval(aVar, {|x,y| msglog(y, x[1], x[2]) }) msglog("-----------------------------------------") RETURN Nil полученный протокол: _MsgLog.txt =========== ----------------------------------------- Run: leto2016.exe TEST HAPP:NEW leto_SetAppOptions(...) ----------------------------------------- rdIni(...) : {{"MAIN", {{"PORT", "2812"}, {"DATAPATH", "."}, {"ENABLEFILEFUNC", "1"}}}} Is variable PUBLIC oApp : .T. leto_GetAppOptions(...) : 1 lFileFunc NIL 2 lAnyExt .F. 3 lPass4L NIL 4 lPass4M NIL 5 lPass4D NIL 6 nCacheRecords NIL 7 nDebugMode NIL 8 lOptimize .F. 9 nAutOrder 0 10 nMemoType 0 11 lForceOpt .F. -----------------------------------------Run: leto2016.exe RELOAD HAPP:NEW leto_SetAppOptions(...) ----------------------------------------- rdIni(...) : {{"MAIN", {{"PORT", "2812"}, {"DATAPATH", "."}, {"ENABLEFILEFUNC", "1"}}}} Is variable PUBLIC oApp : .F. leto_GetAppOptions(...) : 1 lFileFunc NIL 2 lAnyExt .F. 3 lPass4L NIL 4 lPass4M NIL 5 lPass4D NIL 6 nCacheRecords NIL 7 nDebugMode NIL 8 lOptimize .F. 9 nAutOrder 0 10 nMemoType 0 11 lForceOpt .F. -----------------------------------------
| не понял, почему leto_GetAppOptions() дает такие странные данные после leto_SetAppOptions(...) ?
|
|
|
|
| постоянный участник
|
Пост N: 1217
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.07.16 09:49. Заголовок: SergKis пишет: не п..
SergKis пишет: цитата: | не понял, почему leto_GetAppOptions() дает такие странные данные после leto_SetAppOptions(...) ? |
| А что здесь странного ? цитата: | HB_FUNC( LETO_GETAPPOPTIONS ) // mt { USHORT uiNum = hb_parni(1); switch( uiNum ) { case 1: hb_retc( pDataPath ); break; case 2: hb_retni( uiDriverDef ); break; case 4: hb_retl( bAnyExt ); break; case 10: hb_retl( bShareTables ); break; case 11: hb_retl( bNoSaveWA ); break; case 18: hb_retl( bOptimize ); break; case 19: hb_retni( uiAutOrder ); break; case 20: hb_retni( uiMemoType ); break; case 21: hb_retl( bForceOpt ); break; } } |
| что может возвратить leto_GetAppOptions(3)? или не дописали или так задумано.
|
|
|
|
|
| постоянный участник
|
Пост N: 1109
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.07.16 10:04. Заголовок: Петр пишет DATA..
Петр пишет [quote]` DATA nPort INIT 2812 DATA ip DATA nTimeOut INIT -1 DATA DataPath INIT "" DATA LogFile INIT "" DATA lLower INIT .F. DATA lFileFunc INIT .F. DATA lAnyExt INIT .F. DATA lShare INIT .F. // .T. - new mode, which allows share tables with other processes DATA lNoSaveWA INIT .F. // .T. - new mode, which forces dbUseArea() each time "open table" is demanded DATA nDriver INIT 0 DATA lPass4M INIT .F. DATA lPass4L INIT .F. DATA lPass4D INIT .F. DATA cPassName INIT "leto_users" DATA lCryptTraffic INIT .F. DATA cTrigger DATA cPendingTrigger ... LOCAL lOptimize := .F. LOCAL lForceOpt := .F. LOCAL lSetTrigger := .F. т.е. 1.переменные инициализированы leto_SetAppOptions(...) 2. ::lFileFunc определена из ini ELSEIF aIni[i,2,j,1] == "ENABLEFILEFUNC" ::lFileFunc := ( aIni[i,2,j,2] == '1' ) leto_GetAppOptions() для нее дает NIL др. то же не так как устанавливались 3. по разному уст. среда tread - режим TEST PUBLIC oApp - доступна - режим RELOAD PUBLIC oApp - нет
|
|
|
|
| постоянный участник
|
Пост N: 1218
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.07.16 10:12. Заголовок: SergKis пишет: leto..
SergKis пишет: цитата: | leto_GetAppOptions() для нее дает NIL |
| я уточнил свой вопрос, что должна возвращать leto_GetAppOptions(3), исходя из ее реализации?
|
|
|
|
| постоянный участник
|
Пост N: 1110
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.07.16 10:29. Заголовок: Петр пишет я уточнил..
Петр пишет цитата: | я уточнил свой вопрос, что должна возвращать leto_GetAppOptions(3), исходя из ее реализации? |
| Исторически, я так понимаю, leto_GetAppOptions использовалась только для внутренних вызовов. Если так и оставлять, тогда должен быть доступна PUBLIC oApp в UDF функциях или приводить leto_GetAppOptions к состоянию использованию в UDF, а под словом "странные" результаты, я имел ввиду несоответствие устанавливаемых и получаемых данных
|
|
|
|
| постоянный участник
|
Пост N: 1219
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.07.16 10:40. Заголовок: SergKis пишет: а п..
SergKis пишет: цитата: | а под словом "странные" результаты, я имел ввиду несоответствие устанавливаемых и получаемых данных |
| Поскольку описания ни leto_GetAppOptions ни leto_SetAppOptions нет в readme.txt, мы только можем догадываться о мотивах такой реализации. Если leto_GetAppOptions используется только на сервере (для внутренних вызовов), тогда ее реализацию можно назвать кривой
|
|
|
|
| постоянный участник
|
Пост N: 1111
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.07.16 10:54. Заголовок: Петр пишет тогда ее..
Петр пишет цитата: | тогда ее реализацию можно назвать кривой |
| У каждой задачи, при взгляде назад (исторически) можно найти кучу старых реализаций, с сегодняшней точки зрения являющейся мусором, кривой реализацией. "Лучшее - враг хорошего !" (c)
|
|
|
|
| Администратор
|
Пост N: 3471
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.07.16 14:23. Заголовок: SergKis пишет: не п..
SergKis пишет: цитата: | не понял, почему leto_GetAppOptions() дает такие странные данные после leto_SetAppOptions(...) ? |
| Пока единственное назначение функций leto_GetAppOptions()/leto_SetAppOptions() - запись/чтение глобальных установок между prg-кодом (это server.prg) и С-кодом (letofunc.c). Поскольку для server.prg нет необходимости чтения ряда параметров, это чтение и не реализовано в функции leto_GetAppOptions(). В дальнейшем планировалось переписать значительную часть кода из server.prg на C, и необходимость в в этих функция отпала бы. Но пока это не сделано. Раз уж клиенту надо знать значение ряда глобальных установок сервера, имеет смысл реализовать это чтение в leto_GetAppOptions(). Тогда клиент сможет их получать посредством вызовов udf-функций.
|
|
|
|
| Администратор
|
Пост N: 3482
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.08.16 21:19. Заголовок: Пошли какие-то глюки..
Пошли какие-то глюки с git. Когда я делаю коммит, то его сразу не видно. Сделаю следующий коммит - становится видно предыдущий. Таким образом, я сегодня сделал коммит, и стал виден вчерашний. А мой сегодняшний будет виден, когда я сделаю следующий. Такой кордебалет начался с августа.
|
|
|
|
| moderator
|
Пост N: 1022
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.09.16 13:39. Заголовок: В console.prg добави..
В console.prg добавил возможность чтения/записи переменных ( leto_var... ). P.S. Глюков с коммитом не заметил.
|
|
|
|
| moderator
|
Пост N: 1038
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.10.16 20:12. Заголовок: Leto_Ping() теперь п..
Leto_Ping() теперь принимает в качестве параметра адрес сервера или номер соединения - чтобы удобнее было пинговать при подключении к нескольким серверам. Leto_setCurrentConnection() тоже может теперь принимать адрес сервера вместо номера соединения и возвращает номер предыдущего соединения. Наверное, стоит build 3 выпустить.
|
|
|
|
| moderator
|
Пост N: 1040
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.10.16 11:39. Заголовок: LetoDB 2.17 build 3
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|