Форум » LetoDB, HbNetio. » Вопросы новичка... » Ответить

Вопросы новичка...

Andrey: Взял последнюю версию с "Новая страница с бинарниками", установил на 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" Помню что где то обсуждали, а результат не запомнил...

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

Dima: Пиши "пионера"

SergKis: Andrey пишет:Получил rddleto.lib - 131072 байт - правильный ли размер ? у меня rddleto.lib - 134656 (сечас пересобрал). Собираю: @echo off cls echo ... wait ... set path=e:\minigui\harbour\bin;c:\borland\bcc55\bin; if exist .\bin\letodb.exe del .\bin\letodb.exe > nul if exist .\bin\.hbmk\win\bcc\*.obj del .\bin\.hbmk\win\bcc\*.obj > nul hbmk2.exe -info -comp=bcc -trace rddleto.hbp letodb.hbp > _hbmk2.txt протокол: hbmk2: Autodetected platform: win hbmk2: Using Harbour: e:\minigui\harbour\bin e:\minigui\harbour\include e:\minigui\harbour\lib e:\minigui\harbour\bin e:\minigui\harbour\contrib e:\minigui\harbour\addons hbmk2: Using C compiler: c:\borland\bcc55\bin\bcc32.exe hbmk2: Target up to date: lib\rddleto.lib hbmk2: Autodetected platform: win hbmk2: Using Harbour: e:\minigui\harbour\bin e:\minigui\harbour\include e:\minigui\harbour\lib e:\minigui\harbour\bin e:\minigui\harbour\contrib e:\minigui\harbour\addons hbmk2: Using C compiler: c:\borland\bcc55\bin\bcc32.exe hbmk2: Compiling Harbour sources... hbmk2: Harbour compiler command (embedded): (e:\minigui\harbour\bin\harbour.exe) -n2 source\server\server.prg -n -w -q0 -es2 -D__BM -D__WIN_SERVICE__ -obin\.hbmk\win\bcc\ -ic:\borland\bcc55\Include -ie:\minigui\harbour\include -iinclude hbmk2: Compiling... hbmk2: C/C++ compiler command: bcc32.exe -c -q -CP437 -d -O2 -OS -Ov -Oc -Oi -6 -D__WIN_SERVICE__ -D__BM -tW -tWM -w -Q -w-sig- -nbin\.hbmk\win\bcc -Ic:\borland\bcc55\Include -Ie:\minigui\harbour\include -Iinclude bin\.hbmk\win\bcc\server.c bin\.hbmk\win\bcc\errorsys.c bin\.hbmk\win\bcc\letobm.c bin\.hbmk\win\bcc\common.c bin\.hbmk\win\bcc\letoserv.c source\server\errint.c source\server\leto_win.c source\server\letoacc.c source\server\letovars.c source\server\letofunc.c source\server\letolist.c source\server\leto_2.c source\common\blowfish.c source\common\common_c.c bin\.hbmk\win\bcc\server.c: bin\.hbmk\win\bcc\errorsys.c: bin\.hbmk\win\bcc\letobm.c: bin\.hbmk\win\bcc\common.c: bin\.hbmk\win\bcc\letoserv.c: source\server\errint.c: source\server\leto_win.c: Warning W8004 source\server\leto_win.c 116: 'State' is assigned a value that is never used in function leto_ServiceControlHandler source\server\letoacc.c: source\server\letovars.c: source\server\letofunc.c: Warning W8012 source\server\letofunc.c 1348: Comparing signed and unsigned values in function leto_CheckClientVer source\server\letolist.c: source\server\leto_2.c: source\common\blowfish.c: source\common\common_c.c: hbmk2: Linking... bin\letodb.exe hbmk2: Linker command: ilink32.exe @C:\Users\MASTE_~1\AppData\Local\Temp\5eqzvd.lnk hbmk2: Linker script: -Gn -Tpe -Lc:\borland\bcc55\Lib;c:\borland\bcc55\Lib\PSDK;e:\minigui\harbour\lib -aa c0w32.obj bin\.hbmk\win\bcc\server.obj bin\.hbmk\win\bcc\errorsys.obj bin\.hbmk\win\bcc\letobm.obj bin\.hbmk\win\bcc\common.obj bin\.hbmk\win\bcc\letoserv.obj bin\.hbmk\win\bcc\errint.obj bin\.hbmk\win\bcc\leto_win.obj bin\.hbmk\win\bcc\letoacc.obj bin\.hbmk\win\bcc\letovars.obj bin\.hbmk\win\bcc\letofunc.obj bin\.hbmk\win\bcc\letolist.obj bin\.hbmk\win\bcc\leto_2.obj bin\.hbmk\win\bcc\blowfish.obj bin\.hbmk\win\bcc\common_c.obj, bin\letodb.exe, nul, rddbm.lib hbextern.lib hbdebug.lib hbvmmt.lib hbrtl.lib hblang.lib hbcpage.lib gtcgi.lib gtpca.lib gtstd.lib gtwin.lib gtwvt.lib gtgui.lib hbrdd.lib hbuddall.lib hbusrrdd.lib rddntx.lib rddcdx.lib rddnsx.lib rddfpt.lib hbrdd.lib hbhsx.lib hbsix.lib hbmacro.lib hbcplr.lib hbpp.lib hbcommon.lib kernel32.lib user32.lib gdi32.lib advapi32.lib ws2_32.lib iphlpapi.lib winspool.lib comctl32.lib comdlg32.lib shell32.lib uuid.lib ole32.lib oleaut32.lib mpr.lib winmm.lib mapi32.lib imm32.lib msimg32.lib wininet.lib hbpcre.lib hbzlib.lib cw32mt.lib import32.lib, , Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

andrey: Dima пишет: Пиши "пионера"


andrey: Есть чуть меньше 100 файлов справочников (весит меньше мегабайта). Нужно периодически, два-четыре раза в месяц стаскивать эти справочники на локальную машину. Вопрос, как лучше сделать, чтобы быстро это операция проходила ? 1) Вариант открывать каждую базу справочника на LetoDB и через транзакцию записывать на локальную машину. 2) Вариант копировать каждый файл справочника через LETO_MEMOREAD() и записывать на локальную машину. Только как правильно можно реализовать 2-ой вариант ? Подскажите пожалуйста.

Dima: andrey пишет: цитата: Пиши "пионера"

Andrey: Теперь понял !

alkresin: Andrey пишет: 1) Вариант открывать каждую базу справочника на LetoDB и через транзакцию записывать на локальную машину. 2) Вариант копировать каждый файл справочника через LETO_MEMOREAD() и записывать на локальную машину. Наверное, второй вариант быстрее. Впрочем, попробуйте, сравните. В первом случае транзакции не помогут - они предназначены для записи данных. Для буферизации чтения после открытия каждого файла на сервере ставьте leto_setSkipBuffer( количество_записей_в_буфере ). Для второго варианта cBuf := leto_memoRead( путь/имя_файла) hb_memowrit( путь/имя_файла, cBuf )

Andrey: alkresin пишет: Для второго варианта cBuf := leto_memoRead( путь/имя_файла) hb_memowrit( путь/имя_файла, cBuf ) Спасибо БОЛЬШОЕ ! Буду пробовать этот вариант, мне он кажется проще. А какой максимальный размер можно передать через cBuf ? А если надо несколько (10) больших баз из сотни полей и общим весом 150-200 Мб переносить. Как быть в этом случае ? Может там их на сервере zip-пом сжать (будет примерно 3 Мб), перетащить архив как файл, а уже на локальной машине распаковать и уже добавлять в локальные базы.

Dima: Andrey пишет: Может там их на сервере zip-пом сжать (будет примерно 3 Мб), перетащить архив как файл, а уже на локальной машине распаковать и уже добавлять в локальные базы. Пробовать надо Андрей.

alkresin: Andrey пишет: А какой максимальный размер можно передать через cBuf ? Насколько я помню, ограничений нет, но все в пределах разумного... Может там их на сервере zip-пом сжать ... Вообще говоря, не вижу большого смысла использовать letodb для этих процедур. Если надо просто время от времени переписывать группу файлов, почему не использовать ftp или rsync, предназначенные именно для подобных целей.

Andrey: alkresin пишет: не вижу большого смысла использовать letodb для этих процедур Понятно. Просто эти функции хотелось бы сделать как дополнение. А так основные базы буду переделывать под letodb.

Andrey: Сделал чтение/запись справочников через файловые функции LETO_MemoRead/LETO_MemoWrite. Тестовая база: 1) 70 файлов примерно общий весом 1 Мб. 2) Старенький нетбук Самсунг 10 дюймов экран, WinXP Home, сеть WiFi 54 Мб 3) Интернет WiFi - через сотовый телефон оператор МТС 4) Местонахождение - комп в г.Севастополе, сервер LetoDB в Москве Скорость передачи всех файлов МЕНЬШЕ минуты !!! Классно !!! Это я еще ставлю INKEGUI(100) для красоты прорисовки бегунка...

SergKis: Andrey пишет:Сделал чтение/запись справочников через файловые функции Сделай Browse\TsBrowse на них (с ведением) и гонять никуда не надо. Проверено деревня под Питером (Билаин, МТС) клиент, сервер в Риге.

Andrey: SergKis пишет: Сделай Browse\TsBrowse на них (с ведением) и гонять никуда не надо. Это проба. Browse\TsBrowse чуть позже буду делать, пока отдельную задачу реализовать надо, загрузка базы на локальную машину. Пока пробую, привыкаю...

Andrey: Сделал копирование баз с LetoDB на локальную машину. 10 файлов общим размером 136 Мб копируются на локальную машину за 2 мин. 33 сек. Вот это скорость.... Нафиг нужны всякие fpt и другое если можно сделать самому для юзера. Всё бросаю и перехожу на LetoDB !!!

Andrey: Использую пока у себя гибрид: 1) главное меню МиниГуи (кнопочки, рюшечки ...), по кнопке вызывается 2) exe-ник терминалка (таблицы пока все в терминалке). Терминалку конечно же переделаю, но времени на это много нужно. Хочу сделать у себя отправку заказов сразу на LetoDB, т.е. правится таблица заказов на терминалке, передает НОМЕР ЗАПИСИ которая правилась юзером в главную программа на МиниГуи. А главная программа отправляет эту запись в LetoDB. Вопрос такой - как организовать передачу номера записи между своими программами ? По таймеру не хочу... Программа многопользовательская.

SergKis: Andrey пишет:Вопрос такой - как организовать передачу Можно посмотреть в сторону сообщения WM_COPYDATA смотри: SAMPLES\Applications\DbfView\source\userfun.prg SAMPLES\Applications\RunCmd\RunCmd.prg как сделать посылку из WVT не скажу (надо смотреть), мои такие изыскания закончились 2-мя вариантами, т.к. менять wvt модуль надо полюбому, то вполне можно: 1. коннект с лето перенести туда и запись перебросить уже не проблемма (это практически одна ф-я с параметрами) 2. запускать на run (с отрывом) прогу, которая делает тоже самое в фоне

SergKis: Andrey пишет:Вопрос такой - как организовать передачу Можно посмотреть в сторону сообщения WM_COPYDATA смотри: SAMPLES\Applications\DbfView\source\userfun.prg SAMPLES\Applications\RunCmd\RunCmd.prg как сделать посылку из WVT не скажу (надо смотреть), мои такие изыскания закончились 2-мя вариантами, т.к. менять wvt модуль надо полюбому, то вполне можно: 1. коннект с лето перенести туда и запись перебросить уже не проблемма (это практически одна ф-я с параметрами) 2. запускать на run (с отрывом) прогу, которая делает тоже самое в фоне

Andrey: SergKis пишет: 2. запускать на run (с отрывом) прогу, которая делает тоже самое в фоне У меня есть уже есть в фоне главная программа. Как туда передать НОМЕР измененной записи и как принять это сообщение ? SAMPLES\Applications\RunCmd\RunCmd.prg посмотрел и ни фига не понял...

Haz: Andrey пишет: Как туда передать НОМЕР измененной записи и как принять это сообщение ? глянь MiniGUI\SAMPLES\Advanced\HMGTALK\ PS. там клиенты общаются через свою программу- сервер. При желании можно позаимствовать идею



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