Отправлено: 04.05.15 22:44. Заголовок: Вопросы новичка...
Взял последнюю версию с "Новая страница с бинарниками", установил на Win2008 Server, чуток помучился с портом... Собрал на МиниГуи+BCC 551 - \MiniGui\batch\hbmk2.bat rddleto.hbp Получил rddleto.lib - 131072 байт - правильный ли размер ? И еще Warning-и лезут: lib\.hbmk\win\bcc\rddsys.c: source\client\letocl.c: source\client\leto1.c: source\client\letomgmn.c: source\common\blowfish.c: source\common\common_c.c: source\common\hbip.c: TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation /P32 lib\rddleto.lib -+ lib\.hbmk\win\bcc\rddsys.obj -+ lib\.hbmk\win\bcc\letocl.obj -+ lib\.hbmk\win\bcc\leto1.obj -+ lib\.hbmk\win\bcc\letomgmn.obj -+ lib\.hbmk\win\bcc\blowfish.obj -+ lib\.hbmk\win\bcc\common_c.obj -+ lib\.hbmk\win\bcc\hbip.objWarning: 'rddsys' not found in library Warning: 'letocl' not found in library Warning: 'leto1' not found in library Warning: 'letomgmn' not found in library Warning: 'blowfish' not found in library Warning: 'common_c' not found in library Warning: 'hbip' not found in library
Так должно быть или нет ?
Вопрос сразу напрашивается с путями - как писать правильно "\" или "/" : Local cPathServer := "//127.0.0.1:2812/" cPathServer := cPathServer +"DATE_TEST_PATH\test.dbf"
Помню что где то обсуждали, а результат не запомнил...
Паш так он же и пишет про лимит у прова , может там всего 20 метров арендовано ......
Петр
постоянный участник
Пост N: 1220
Зарегистрирован: 09.10.06
Отправлено: 31.07.16 23:14. Заголовок: Andrey пишет: Было ..
Andrey пишет:
цитата:
Было бы ОЧЕНЬ хорошо при сваливании такой ошибке в log-файле писалось сколько места на диске есть !!! Тогда хоть понимать будем в чём ошибка. Функции же нет в LetoDB - сколько свободного места на диске.
Если внимательно разглядывать код server.prg, то можно найти
REQUEST .. hb_DiskSpace
Из чего следует, что выполнение строки типа leto_udf( "hb_diskSpace", leto_GetAppOptions(1), HB_DISK_FREE ) должно привести к желаемому результату.
Как использовать результат и где его использовать вы можете придумать сами. Вариантов море, leto_udf(), leto_LockLock() помогут вам.
SergKis
постоянный участник
Пост N: 1112
Зарегистрирован: 17.02.12
Отправлено: 31.07.16 23:35. Заголовок: Петр пишет leto_udf(..
Петр пишет
цитата:
leto_udf( "hb_diskSpace", leto_GetAppOptions(1), HB_DISK_FREE ) должно привести к желаемому результату
В таком виде вряд ли, leto_GetAppOptions - ф-я сервера, попробовать так можно cPth := leto_udf( "leto_GetAppOptions", 1) и потом nFre := leto_udf( "hb_diskSpace", cPth, HB_DISK_FREE )
цитата:
Вариантов море, leto_udf(), leto_LockLock() помогут вам.
это да
Петр
постоянный участник
Пост N: 1221
Зарегистрирован: 09.10.06
Отправлено: 31.07.16 23:48. Заголовок: SergKis пишет: В та..
SergKis пишет:
цитата:
В таком виде вряд ли, leto_GetAppOptions - ф-я сервера, попробовать так можно cPth := leto_udf( "leto_GetAppOptions", 1)
Ну да, увлекся, спасибо
Andrey
постоянный участник
Пост N: 5031
Зарегистрирован: 12.09.06
Отправлено: 01.08.16 00:52. Заголовок: Dima пишет: пишет п..
Dima пишет:
цитата:
пишет про лимит у прова , может там всего 20 метров арендовано ......
2 Gb - забили архивами и базы место порядочно забирают... Больше года вообще не трогал сервер, падал несколько раз (5-7). А так работает сервер - как часы.
SergKis пишет:
цитата:
cPth := leto_udf( "leto_GetAppOptions", 1) и потом nFre := leto_udf( "hb_diskSpace", cPth, HB_DISK_FREE )
Блин, опять городить огород. Ну есть же для Лето файловые функции, не ужели туда добавить как функцию нельзя ?
PSP
постоянный участник
Пост N: 1251
Зарегистрирован: 27.01.07
Отправлено: 01.08.16 08:20. Заголовок: Имхо, не только (или..
Имхо, не только (или не столько) свободное место на диске нужно контролировать, как обрабатывать ошибки записи/чтения. Они могут быть вызваны не только переполнением диска. Только вот что-то не соображу, как, используя letodb, это сделать. BEGIN/RECOVER/END работает с leto, кто знает?
SergKis
постоянный участник
Пост N: 1113
Зарегистрирован: 17.02.12
Отправлено: 01.08.16 10:14. Заголовок: SergKis пишет cPth :..
SergKis пишет
цитата:
cPth := leto_udf( "leto_GetAppOptions", 1)
так не будет работать (и это правильно !!!) вызывать можно только UDF функцию, т.е. надо написать в letoudf.prg FUNCTION UDF_DiskSpace( nUserStru, cDrive, nProp ) If cDrive = Nil; cDrive := leto_GetAppOptions(1) EndIf If nProp = Nil; nProp := HB_DISK_FREE EndIf RETURN hb_diskSpace( cDrive, nProp )
Петр
постоянный участник
Пост N: 1222
Зарегистрирован: 09.10.06
Отправлено: 01.08.16 22:33. Заголовок: SergKis пишет: так ..
SergKis пишет:
цитата:
так не будет работать (и это правильно !!!)
Так работать будет !!! и это - не правильно
SergKis
постоянный участник
Пост N: 1115
Зарегистрирован: 17.02.12
Отправлено: 01.08.16 22:54. Заголовок: Петр пишет Так работ..
Петр пишет
цитата:
Так работать будет !!!
cPth := leto_udf( "leto_GetAppOptions", 1) не работает, проверил, еси бы рабтало, то опасно leto_udf( "fErase", myFile) и не нужны leto_ferase(...) и ключ ini EnableFileFunc = 0
Петр
постоянный участник
Пост N: 1223
Зарегистрирован: 09.10.06
Отправлено: 01.08.16 23:04. Заголовок: SergKis пишет: не р..
др. вызовUDF If ! leto_file(cPath+"test3"+".cdx") USE ( cPath+"test3" ) New INDEX ON NUM TAG KOD FOR ! deleted() INDEX ON NAME TAG NAM FOR ! deleted() INDEX ON NUM TAG DEL FOR deleted() USE ? "File has been created", cPath+"test3"+".cdx" EndIf
USE ( cPath+"test3" ) New SHARED If OrdCount() > 0 OrdSetFocus(2) EndIf t := Seconds() dbGotop() If ! EOF() aEval({10,20,30,40,50,60,70,80,90,99}, {|nR,nE,lR| dbGoto(nR), lR := RLock(), iif(lR, dbDelete(), ), ; iif(lR, dbUnLock(), ) }) Leto_Udf("UDF_DeleteRecs", , , "DEL", , .F.) dbGotop() ENDIF
? "File has been opened", Used(), select(), Alias(), "Append UDF_...", IndexOrd(), OrdCount()
j := Valtype(NUM) For i := 1 To 100 cRecBuf := Leto_Udf("UDF_AppendRec", 'NUM', {'KOD', 'DEL'}, 100) Leto_ParseRec( cRecBuf ) // ? i, RecNo(), NUM IF RLock() REPL NAME with "Name_"+strzero(RecNo(), 7), ; INFO with "Info_"+iif(j == "N", hb_ntos(NUM), NUM)+"-"+j dbUnLock() ENDIF ? i, RecNo(), NUM, NAME Next
leto_commit()
? "File appendet", LastRec(), "time", seconds() - t USE ? "Ok"
результат TEST_DBF ( //127.0.0.1:2812/temp/ ) File = test3.dbf File has been created //127.0.0.1:2812/temp/test3.dbf File has been created //127.0.0.1:2812/temp/test3.cdx File has been opened .T. 1 TEST3 Append UDF_... 2 3 1 1 101 Name_0000001 2 2 102 Name_0000002 3 3 103 Name_0000003 4 4 104 Name_0000004 5 5 105 Name_0000005 6 6 106 Name_0000006 7 7 107 Name_0000007 8 8 108 Name_0000008 9 9 109 Name_0000009 10 10 110 Name_0000010 11 11 111 Name_0000011 12 12 112 Name_0000012 13 13 113 Name_0000013 14 14 114 Name_0000014 15 15 115 Name_0000015 16 16 116 Name_0000016 17 17 117 Name_0000017 ... 97 97 197 Name_0000097 98 98 198 Name_0000098 99 99 199 Name_0000099 100 100 200 Name_0000100 File appendet 100 time 8.89 Ok
Если эти команды должны работать (я думал только из hrb и это мне нравилось), то надо копать у себя клиентов letodb 1. letodb server - borland, hb3.2 из последней MiniGui 2. letodb client - msvc, hb2.0 + MiniGui 2.07 + LV866 ( EN+LV+RU ) 2. letodb client - msvc, hb3.2 + Hwg 2.19.b6 + LV866 ( EN+LV+RU ) Udf функции из letoudf.hrb - работают ok!
Петр спасибо за помощь
Pasha
Администратор
Пост N: 3474
Зарегистрирован: 23.05.05
Отправлено: 02.08.16 09:07. Заголовок: Петр пишет: не работ..
Петр пишет:
цитата:
не работает, проверил, еси бы рабтало, то опасно leto_udf( "fErase", myFile) и не нужны leto_ferase(...) и ключ ini EnableFileFunc = 0
Такие опасные функции вызвать нельзя, поскольку они не прилинкованы к серверу. Вызывать можно функции, указанные в request, ну и некоторые другие. Я пересматривал этот набор - он вполне безопасен. Впрочем, я уже добавил параметр EnableUDF в letodb.ini, для возможности отключения udf. Пока не сбросил это изменение - есть некоторые проблемы с правами доступа git
SergKis
постоянный участник
Пост N: 1121
Зарегистрирован: 17.02.12
Отправлено: 02.08.16 09:57. Заголовок: Pasha пишет Впрочем,..
Pasha пишет
цитата:
Впрочем, я уже добавил параметр EnableUDF в letodb.ini, для возможности отключения ud
SergKis
постоянный участник
Пост N: 1122
Зарегистрирован: 17.02.12
Отправлено: 02.08.16 10:10. Заголовок: Pasha пишет Такие оп..
Pasha пишет
цитата:
Такие опасные функции вызвать нельзя, поскольку они не прилинкованы к серверу.
Тут не все просто, если реализовывать запрос на сервере типа (через udf) SELECT R_1,R_2,R_3,... AS Kod,Name,Cena,... From TablM01 WHERУ R_1=... ORDER BY upper(Name) то fErase, fRename вполне могут понадобитьсяб, а возможность их вызова с клиента должна быть исключена, т.е. hb_IsFunction("fErase") - не выполнять requect подключение leto_Udf("UDF_fErase") - можно выполнять при наличии в hrb мне как то так видится, при установке флага
Все даты в формате GMT
3 час. Хитов сегодня: 145
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет