Clipper On Line • Ver Tópico - Letodbf - o Inicio
Página 1 de 3

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 10:43
por rubens
Bom dia..
Estou tentando colocar o LetoDbf para rodar. Depois de muitas pesquisas e consultas nas postagens a respeito aqui no Fórum, acho que é a melhor solução neste momento.
Então Vamos lá.
Meu ambiente:
hbmk2: Processando opções do ambiente: -comp=mingw
Harbour 3.2.0dev (r1411040054)
Copyright (c) 1999-2014, http://harbour-project.org/

Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r1411040054)
Compiler: MinGW GNU C 4.6.1 (32-bit)
Platform: Windows 8 6.2.9200
PCode version: 0.3
ChangeLog last entry: 2014-11-04 01:54 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
ChangeLog ID: d0bdab4707bc9a6a62ecd653d4e404015aca43f5
Built on: Nov 6 2014 02:40:14
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------

Baixei o Letodbf do endereço https://github.com/elchs/LetoDBf através do botão clone or download. Salvei na pasta d:\LetoDbf
Tentativa de compilar letodb, com hbmk2 letodb
erros retornados:
D:/LetoDBf/source/server/letofunc.c: In function 'leto_PingForZombies':
D:/LetoDBf/source/server/letofunc.c:3702:19: warning: implicit declaration of function 'hb_fsPipeWrite' [-Wimplicit-function-declaration]
D:/LetoDBf/source/server/letofunc.c: In function 'HB_FUN_LETO_DBEVAL':
D:/LetoDBf/source/server/letofunc.c:7264:4: warning: implicit declaration of function 'HB_ISEVALITEM' [-Wimplicit-function-declaration]
D:/LetoDBf/source/server/letofunc.c: In function 'leto_Info':
D:/LetoDBf/source/server/letofunc.c:11847:15: error: 'DBI_TRANSREC' undeclared (first use in this function)
D:/LetoDBf/source/server/letofunc.c:11847:15: note: each undeclared identifier is reported only once for each function it appears in
D:/LetoDBf/source/server/leto_2.c: In function 'HB_FUN_LETO_SERVER':
D:/LetoDBf/source/server/leto_2.c:2148:13: warning: implicit declaration of function 'hb_fsPipeWrite' [-Wimplicit-function-declaration]
hbmk2[letodb]: Erro: Executando compilador C/C++. 1
C:\hb32\comp\mingw\bin\gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -DUSE_LZ4=1 -DUSE_PMURHASH=1 -W -Wall -pipe -IC:/hb32/include -ID:/LetoDBf/include -ID:/LetoDBf/source/3rd/lz4/lib -IC:/hb32/contrib/hbct C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_0nnnng.dir/server.c C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_0nnnng.dir/errorsys.c C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_0nnnng.dir/common.c D:/LetoDBf/source/server/errint.c D:/LetoDBf/source/server/letoacc.c D:/LetoDBf/source/server/letovars.c D:/LetoDBf/source/server/letofunc.c D:/LetoDBf/source/server/letolist.c D:/LetoDBf/source/server/leto_2.c D:/LetoDBf/source/common/blowfish.c D:/LetoDBf/source/common/common_c.c D:/LetoDBf/source/3rd/lz4/lib/lz4.c D:/LetoDBf/source/common/lz4net.c D:/LetoDBf/source/common/PMurHash.c C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_4xrbef.c

Tentativa de compilar rddletoaddon, com hbmk2 rddletoaddon
erros retornados:
hbmk2: Processando opções do ambiente: -comp=mingw
D:/LetoDBf/source/client/letocl.c: In function 'leto_Send':
D:/LetoDBf/source/client/letocl.c:1225:10: warning: implicit declaration of function 'hb_socketSetError' [-Wimplicit-function-declaration]
D:/LetoDBf/source/client/letocl.c: In function 'LetoConnectionClose':
D:/LetoDBf/source/client/letocl.c:3050:10: warning: implicit declaration of function 'hb_fsPipeWrite' [-Wimplicit-function-declaration]
D:/LetoDBf/source/client/leto1.c: In function 'leto_dbfTransCheckCounters':
D:/LetoDBf/source/client/leto1.c:2404:36: error: 'DBTF_CPYCTR' undeclared (first use in this function)
D:/LetoDBf/source/client/leto1.c:2404:36: note: each undeclared identifier is reported only once for each function it appears in
D:/LetoDBf/source/client/leto1.c: In function 'letoInfo':
D:/LetoDBf/source/client/leto1.c:2645:12: error: 'DBI_TRANSREC' undeclared (first use in this function)
D:/LetoDBf/source/client/leto1.c:2654:13: warning: implicit declaration of function 'hb_dbTransInfoGet' [-Wimplicit-function-declaration]
D:/LetoDBf/source/client/leto1.c:2654:40: warning: initialization makes pointer from integer without a cast [enabled by default]
D:/LetoDBf/source/client/leto1.c: In function 'HB_FUN_LETO_DBTRANS':
D:/LetoDBf/source/client/leto1.c:6164:10: warning: implicit declaration of function 'hb_dbTransInfoPut' [-Wimplicit-function-declaration]
D:/LetoDBf/source/client/leto1.c:6164:20: warning: assignment makes pointer from integer without a cast [enabled by default]
D:/LetoDBf/source/client/leto1.c:6167:20: error: 'DBI_TRANSREC' undeclared (first use in this function)
D:/LetoDBf/source/client/leto1.c:6178:66: error: 'DBTF_CPYCTR' undeclared (first use in this function)
D:/LetoDBf/source/client/leto1.c:6179:16: warning: implicit declaration of function 'hb_dbTransCounters' [-Wimplicit-function-declaration]
hbmk2[rddletoaddon]: Erro: Executando compilador C/C++. 1
C:\hb32\comp\mingw\bin\gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -DUSE_PMURHASH=1 -DUSE_LZ4=1 -W -Wall -pipe -IC:/hb32/include -ID:/LetoDBf/include -ID:/LetoDBf/source/3rd/lz4/lib C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_iomxse.dir/rddsys.c D:/LetoDBf/source/client/letocl.c D:/LetoDBf/source/client/leto1.c D:/LetoDBf/source/client/letomgmn.c D:/LetoDBf/source/common/blowfish.c D:/LetoDBf/source/common/common_c.c D:/LetoDBf/source/3rd/lz4/lib/lz4.c D:/LetoDBf/source/common/lz4net.c D:/LetoDBf/source/common/PMurHash.c

Aí acho que não adianta ficar fazendo mais tentativas enquanto não passar por isso aí.
Diante da minha configuração/ambiente e erros descritos, vou conseguir compilar e rodar o letodbf?
Estou convertendo tudo para minigui extends e compilo com BCC padrão da minigui extends. Mesmo que consiga corrigir estes erros acima, não vai gerar lib .lib, daí não vou conseguir usar com a minigui extends?
Obrigado
Rubens

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 11:13
por Itamar M. Lins Jr.
Ola!
Esse harbour 3.2 eu baixo onde ?
Pq meu GCC é o 7x ai está usando o 4x pode ser isso esses avisos e pode ter parâmetros exclusivos da Minigui ai no GCC.
Preciso simular aqui suas ferramentas.
Use hbmk2 letodbsvc.hbp e hbmk2 rddleto.hbp para compilar.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 11:34
por Itamar M. Lins Jr.
Ola!
Estou convertendo tudo para minigui extends e compilo com BCC padrão da minigui extends. Mesmo que consiga corrigir estes erros acima, não vai gerar lib .lib, daí não vou conseguir usar com a minigui extends?

Os avisos que postou está usando GCC. Pq vc pergunta sobre BCC ?

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 14:14
por rubens
Estou tentando fazer a lição de casa... que é pelo que vi com GCC..
Mas a intenção é usar com minigui. Daí a pergunta... Mas vamos esquecer a Minigui por enquanto.. vamos tentar fazer funcionar somente com o harbour..
Rubens

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 14:51
por rubens
Opa..
consegui um letodb.exe, então vamos esquecer a compilação do Letodb.exe vamos para o passo 2. Compilar o teste abaixo.
#include "inkey.ch"
#include "rddleto.ch"
#include "hbgtinfo.ch"
REQUEST HB_GT_WVT_DEFAULT
Procedure Main()
  PathLeto :=  "//localhost"+cIP+":2812/"   
  nConect := leto_Connect( PathLeto )
  If nConect == -1
    nRes := leto_Connect_Err()
    If nRes == LETO_ERR_LOGIN
      Alert( "Falha ao Logar" )
    ElseIf nRes == LETO_ERR_RECV
      Alert( "Error ao conectar" )
    ElseIf nRes == LETO_ERR_SEND
      Alert( "Erro de envio" )
    Else
      Alert( "Erro na conexão com o servidor: " + PathLeto )
    Endif
    Quit
  Endif
  Altd()
  leto_DisConnect()
Return

Erros apresentados:
D:\LetoDBf>hbmk2 teste letodb.hbc
hbmk2: Processando opções do ambiente: -comp=mingw
Harbour 3.2.0dev (r1411040054)
Copyright (c) 1999-2014, http://harbour-project.org/
Compiling 'teste.prg'...
Lines 748, Functions/Procedures 1
Generating C source output to 'C:\Users\PROGRAMA\AppData\Local\Temp\hbmk_anmd3g.dir\teste.c'... Done.
lib/librddleto.a(leto1.o):(.text+0xbdc7): undefined reference to `hb_dbTransInfoGet'
lib/librddleto.a(leto1.o):(.text+0xf2cc): undefined reference to `hb_dbTransInfoPut'
lib/librddleto.a(leto1.o):(.text+0xf3e5): undefined reference to `hb_dbTransCounters'
lib/librddleto.a(letocl.o):(.text+0x364): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x206e): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x209a): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x212f): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x21aa): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x22cf): more undefined references to `hb_socketSetError' follow
lib/librddleto.a(letocl.o):(.text+0x4906): undefined reference to `hb_fsPipeWrite'
lib/librddleto.a(letocl.o):(.text+0x601d): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x626a): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x64cd): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x68da): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x6d3f): undefined reference to `hb_socketSetError'
lib/librddleto.a(letocl.o):(.text+0x6e2f): more undefined references to `hb_socketSetError' follow
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
C:\hb32\comp\mingw\bin\gcc.exe C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_anmd3g.dir/teste.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_anmd3g.dir/hbmk_erqdwi.o -mconsole -Wl,--start-group -lrddleto -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -oteste.exe -LC:/hb32/lib/win/mingw -Llib

dados da minha lib
librddleto.a 28/06/2017 00:50 Arquivo A 322KB

Rubens

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 15:14
por Itamar M. Lins Jr.
Ola!
consegui um letodb.exe, então vamos esquecer a compilação do Letodb.exe vamos para o passo 2. Compilar o teste abaixo.

Não é assim não rapaz.rsrsrsrs
A versão do BCC ou GCC importa.
Vc não pode linkar as libs do BCC5x com o BCC10, nem pode linkar GCC 4 com o GCC 7.
Se pegou o letodbf.exe do Jairo, precisa saber qual GCC ele usou e usar a mesma coisa.
O BCC que vc vai usar deve ser igual ao que vc criou as libs.
Onde vc pegou o Harbour ? é esse que já vem com a minigui ? pq eu preciso perguntar ao ELCH se o LetoDb pode ser compilado com um GCC tão velho de 2014... o GCC já vai na versão 8x e vc achou um 4x onde foi ?

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 15:58
por rubens
Itamar estamos progredindo... kkkkkkkkkk
Tô usando o harbour compilado Harbour-nightly.win.exe.
Baixei agora a ultima versão
Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r1802131223)
Compiler: MinGW GNU C 5.3 (32-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2018-02-13 13:23 UTC+0100 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: d629aa0cad08399fa42c0dbf1df7cbd06486ac38
Built on: Feb 22 2018 04:47:00
Build options: (memory tracking) (Clipper 5.3b) (Clipper 5.x undoc)

Compilou o meu teste.prg da postagem anterior.
Mas a lib ainda tá embirrada, mas pelo menos mudou os erros.
D:\LetoDBf>hbmk2 letodb.hbp letodb.hbc
hbmk2: Processando opções do ambiente: -comp=mingw
lib\librddleto.a(leto1.o):(.text+0xe4b0): multiple definition of `HB_FUN_LETO_DBEVAL'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x23100): first defined here
lib\librddleto.a(leto1.o):(.text+0x100b0): multiple definition of `HB_FUN_LETO_SET'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/server.o:server.c:(.text+0x60): first defined here
lib\librddleto.a(letomgmn.o):(.text+0xac0): multiple definition of `HB_FUN_LETO_FERASE'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x222c0): first defined here
lib\librddleto.a(letomgmn.o):(.text+0xb40): multiple definition of `HB_FUN_LETO_FRENAME'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x22370): first defined here
lib\librddleto.a(letomgmn.o):(.text+0xce0): multiple definition of `HB_FUN_LETO_FOPEN'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x21e30): first defined here
lib\librddleto.a(letomgmn.o):(.text+0xdd0): multiple definition of `HB_FUN_LETO_FCREATE'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x21f80): first defined here
lib\librddleto.a(letomgmn.o):(.text+0xec0): multiple definition of `HB_FUN_LETO_FCLOSE'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o:letofunc.c:(.text+0x220d0): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x4c30): multiple definition of `HB_FUN_LETO_VARSET'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2450): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x4ef0): multiple definition of `HB_FUN_LETO_VARGET'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2290): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x4ff0): multiple definition of `HB_FUN_LETO_VARGETCACHED'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0xf90): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x5010): multiple definition of `HB_FUN_LETO_VARINCR'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2900): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x5180): multiple definition of `HB_FUN_LETO_VARDECR'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2910): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x52f0): multiple definition of `HB_FUN_LETO_VARDEL'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2920): first defined here
lib\librddleto.a(letomgmn.o):(.text+0x5440): multiple definition of `HB_FUN_LETO_VARGETLIST'
C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o:letovars.c:(.text+0x2b00): first defined here
collect2.exe: error: ld returned 1 exit status
hbmk2[letodb]: Erro: Executando linkeditor. 1
C:\hb32\comp\mingw\bin\gcc.exe C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/server.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/errorsys.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/common.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/errint.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letoacc.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letovars.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letofunc.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/letolist.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/leto_2.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/blowfish.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/common_c.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/lz4.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/lz4net.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/PMurHash.o C:/Users/PROGRAMA/AppData/Local/Temp/hbmk_mm1wy2.dir/hbmk_ca0epr.o -mconsole -static -Wl,--start-group -lhbmemio -lhbct -lrddleto -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -s -obin/letodb.exe -LC:/hb32/lib/win/mingw -Llib

Rubens

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 16:34
por Itamar M. Lins Jr.
Ola!
Rubens olha dentro de cada arquivo .hbp para aprender como é.
Porque tem o letodb.hbp e também tem o letodbsvc.hbp ?
Use:
>hbmk2 letodbsvc.hbp

svc significa services(serviço) o leto já vai ser instalado (apenas uma vez) no windows e vc não precisara mais mexer nisso.
Depois de criado vc chama assim letodb install. E ele vai ficar instalado definitivamente no windows, quando o windows é ligado ele procura o letodb.exe e roda ele como serviço.

>hbmk2 letodb.hbp

Vai criar o letodb.exe também e vc vai precisar chamar ele (colocar) no inicializar do windows quando ligar o computador.
Use sempre o primeiro que citei, dá menos trabalho.

Veja dentro do arquivo letodb.hbp que o código dele funciona com BCC também. Só que o BCC não vai usar todo o poder do letodb, vai desligar a compressão dos dados.
{!bcc}-env:__LZ4=yes


No caso vc mandou linkar as libs do leto 2 vezes. Não coloque na linha do hbmk2 esse arquivo letodb.hbc

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 16:42
por Itamar M. Lins Jr.
Ola!
Para criar a LIB que será LINKADA junto com sua aplicação, use:
>hbmk2 rddleto.hbp
vai criar ela dentro da subpasta \lib

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 17:49
por rubens
Itamar... olha só...
Com todo o respeito do mundo, sem querer ofender.. porque você tá me ajudando... mas esse último post seu se fosse o primeiro, moço já teria resolvido tudo.. Sabe, quando eu "desabafei" no outro post, era referente a isso. Você faz o negócio aí até andando para trás se for preciso, mas quando não se conhece a ferramenta, quanto mais resumido a gente receber a instrução mais fácil será de compreender. Entender o tal de conceito é meio complicado, principalmente quando vem inflado. Tá vendo.. como é simples... Rubens vai lá e compila o letodbsvc e pronto. A gente ainda tá ignorante naquele assunto, olha um projeto desse e fica assustado. Principalmente que existe muita coisa avançada, tem coisas nos hbp que eu nunca vi. O que você tá visualizando na hora de passar o ensinamento é muito diferente do que a gente tá visualizando aqui kkkk. Mas sua ajuda foi fundamental e não acha que está livre não porque é só o começo... o negócio ainda tá por um "beicinho de pulga"... Agora vou tentar compilar com o BCC.
Obg..
Informacoes do Letodb.png

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 17:52
por rubens
Para criar a LIB que será LINKADA junto com sua aplicação, use:

Ok... blz..
Não tinha visto esse seu útimo post quando escrevi o meu com o resultado..

Rubens

Letodbf - o Inicio

MensagemEnviado: 31 Out 2018 18:12
por Itamar M. Lins Jr.
Ola!
tem coisas nos hbp que eu nunca vi

Nem eu, vc acha que eu sei ? Eu também estou aprendendo. Fico olhando na pirraça até aprender, de tanto olhar vou me familiarizando com as palavras...
Vc estava pulando etapas importantes. O pessoal está pegando coisas fáceis, tipo hbkm2 e colocando atrás de uma IDE cheia de botões, ai o pessoal fica nisso e não estuda o hbmk2 por exemplo. A mesma coisa é compilar o Harbour dos fontes. É o mesmo processo que compilar os nossos fontes. Só que demora mais.

mas esse último post seu se fosse o primeiro, moço já teria resolvido tudo

Foi vc que começou perguntar do FIM para o COMEÇO.
Primeiro é identificar seu ambiente, vc disse que usava MINIGUI, Minigui é ambiente ? Minigui não é Harbour nem GCC. è uma lib Gráfica só isso.

Vamos pra frente!

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 14 Nov 2018 13:36
por rubens
Boa tarde...
Consegui a compilação do Letodb.exe tanto com Mingw tanto com bcc.
a Lib está compilada tb com MinGw (librddleto.a) e Bcc (Rddleto.lib). Com a BCC surgiram uns Warnings mas gerou a lib beleza.
Vou usar a rddleto.lib por causa da minha compilação com a minigui extends.
Agora surgiu algumas questões relacionadas a rede, terminal. Por exemplo:
Uso pastas separadas dentro da pasta padrão do sistema. Uma raiz assim:
PdvLite \
Relatorios (Forms do FasReport)
Compras (Xmls Baixados)
Xmls_Enviados
Imagens
Tabelas (o Letodb.exe tá apontado para cá)
Bem se eu copiar o executável para o terminal o sistema inicializa mais rápido, não preciso compartilhar a pasta das tabelas, mas os outros arquivos vou precisar compartilhar a pasta para acessar correto?
Se não copia o executável vou ter que trabalhar em unidade compatilhada..
De qualquer forma ainda vou ter que continuar comparilhando/mapeando pastas, correto ?

Obrigado
Rubens

Letodbf - o Inicio

MensagemEnviado: 14 Nov 2018 18:53
por asimoes
rubens escreveu:Vou usar a rddleto.lib por causa da minha compilação com a minigui extends.


A minigui pode ser gerada com MinGw ou CLANG/LLVM eu tenho a compilação com Harbour 3.4 / CLANG/LLVM 7.0, fiz o hbp que gera a lib

Letodbf - o Inicio

MensagemEnviado: 15 Nov 2018 18:32
por Itamar M. Lins Jr.
Ola!
De qualquer forma ainda vou ter que continuar comparilhando/mapeando pastas, correto ?

Não. Pra quê compartilhar ?
Pegar vírus ransoware ?
USE os comandos do LETO para LIDAR com as outras PASTAS, tem tudo ai. Vai perguntando caso não souber.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 16 Nov 2018 17:50
por rubens
Itamar...
Veja só..

Minha estrutura de pastas:
PDVLITE \Tabelas
\Relatorios

Setei o DataPath para d:\PDVLITE\

a conexão ficou: //LOCALHOST:2832/

Daí para abrir o arquivo: USE //LOCALHOST:2832/TABELAS\CAIXA.DBF. Beleza, abre cria indices e tudo o mais.

Daí preciso carregar um arquivo tipo para Fastreport (não importa a ferramenta, é só o exemplo)
FrPrn:LoadFromFile('Relatorios\Compras.Fr3') (forma normal de carregar sem o LetoDBf)

Daí não sei como fazer.
Criei uma variável: cFileFR3 := //LOCALHOST:2832/RELATORIOS\Compras.Fr3
File( cFileFR3 ) -> Retorna .f.
Leto_File( cFileFR3) -> Retorna .t.
mas como vou carregar isso?
Tentei FrPrn:LoadFromFile(cFileFR3)
mas nao funciona...

Obrigado
Rubens

Letodbf - o Inicio

MensagemEnviado: 16 Nov 2018 19:32
por Itamar M. Lins Jr.
Ola!
Use leto_memoread() para carregar para uma variável. Não uso o Fastreport mais vi agora quem tem :LoadFromStream(), para ler de uma variável ou campo BLOB. Vc pode Salvar seus formulários em CAMPOS BLOB no Harbour e LER eles também.
cFrm:=leto_memoread("seu.frm")

Ou copiar o FRM quando for usar na ESTAÇÃO.
Leto_FCopyFromSrv( cLocalFileName, sServerFileName[, nStepSize ] ) ==> lSuccess

Copiar do servidor para a estação o arquivo, depois pode usar LoadFromFile()

E pode usar leto_memoread, leto_memowrit() para ler e salvar do servidor para a estação também.

Ou deixar a pasta compartilhada só como leitura se for o caso.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 17 Nov 2018 07:50
por rubens
Bom dia..

Certo..

Nos meus testes aqui esses arquivos externos eu tava copiando junto com o executável para a estação. Acho que vou continuar assim. São poucos e já estão direcionados no programa. Daí quando fizer a instalação no terminal copia junto os arquivos externos tipo imagens, ini e etc... Já que a intenção é minimizar o uso da rede e não ficar compartilhando o server.

Obrigado
Rubens

Letodbf - o Inicio

MensagemEnviado: 21 Nov 2018 11:06
por rubens
Bom dia...

Hoje é o dia da prova de fogo... vamos por em produção em um cliente...

As tabelas ficaram com o leto.
Não criei condição para leto ou cdx.. tudo pelo leto mesmo..
cada terminal vai ter um ini de configuração que vai ter o path do leto, se terminal o nome do servidor ou ip, se servidor localhost
no ini vai ter tb informação se é terminal ou server. Se terminal mapeia e define o caminho dos arquivos não tabelas que vão ser usados.
Tudo no basicão sem refinamento algum.
Por enquanto o que eu percebi de melhoria foi em relação ao ganho de velocidade... realmente tá evidente...
fiz testes com o server num atlhlon x2 com 2gb de memória. é o ambiente do cliente que vou instalar hoje..
E os terminais com celeron e rede 10/100. Tabela de produtos com uns 10000, 4000 clientes e tal.. nos testes não percebi nenhum delay...
Notei que a velocidade é um pouco inferior ao TS. Mas bem superior a mapeamento.
Para mim foi satisfatório e pouco trabalhoso até aqui.
Tem que lembrar de conceitos. Pelo manual dá para trabalhar com o leto para outros tipos de arquivos, mas achei meio trabalhoso, já que a intenção no momento era resolver a questão rapidamente. O compartilhamento foi necessário e mais prático para o uso de arquivos de configuração, xmls e etc.. mas não está mexendo com isso toda hora.
Vamos ver no uso em produção o que vai rolar.
Se tiver na dúvida vale a pena.. Acho que muda seu sistema para outro nível sem uma curva de aprendizado muito grande..
Rubens

Letodbf - o Inicio

MensagemEnviado: 22 Nov 2018 07:43
por Jairo Maia
Olá Rubens,

rubens escreveu:Não criei condição para leto ou cdx.. tudo pelo leto mesmo..
O que você quis dizer com isso? Não entendi...

rubens escreveu: Se terminal mapeia e define o caminho dos arquivos não tabelas que vão ser usados.
Porque mapear? Se a rede está conectada, basta colocar o IPv4 do servidor nas estações que o Leto acha o servidor na rede. Alguma razão especifica para mapear?

Letodbf - o Inicio

MensagemEnviado: 22 Nov 2018 08:19
por rubens
Bom dia..

O que você quis dizer com isso? Não entendi...

Tô vendo alguns exemplos, onde se não conectar usa dbfcdx normal... eu testei conectando no leto normal aqui local no localhost então vou deixar tudo conectando mesmo o servidor... Ou isso pode me trazer problemas?

Porque mapear? Se a rede está conectada, basta colocar o IPv4 do servidor nas estações que o Leto acha o servidor na rede. Alguma razão especifica para mapear?

Eu tenho relatórios que usam arquivos fr3 (fastreport), baixo arquivos xml e salvo em subpastas do sistema etc... nõ dá para ficar copindo isso para os terminais porque o programa vai ser executado no terminal. Daí vou ter que mapear e indicar onde é para salvar.

Obrigado
Rubens

Letodbf - o Inicio

MensagemEnviado: 22 Nov 2018 09:00
por Jairo Maia
rubens escreveu:Eu tenho relatórios que usam arquivos fr3 (fastreport)
Ok, entendi.

rubens escreveu:Tô vendo alguns exemplos, onde se não conectar usa dbfcdx normal... eu testei conectando no leto normal aqui local no localhost então vou deixar tudo conectando mesmo o servidor... Ou isso pode me trazer problemas?
Pelo contrário, só vejo vantagens. Hoje meu sistema abre localmente as tabelas com informações do Cest e a tabela IBPTax. Estou mudando para que sejam lidas diretamente do servidor, e não mais localmente.

Isso porque no inicio do mês cada máquina verifica no site se existe nova versão dessas tabelas, e se sim atualizam. Não vejo necessidade, já que o trafego na rede que é ler essas tabelas é insignificante, não justifica fazer essa segregação.

Apenas a verificação se o executável do terminal é o mesmo do servidor é feita diariamente, através da verificação da data e hora de criação dos arquivos (DateTime). Se houver diferença, os terminais renomeiam o executável local, copiam o executável do servidor, avisa o usuário que a versão foi atualizada, e solicita para fechar a janela e reabrir o sistema.

Assim, todas atualizações necessárias, serão feitas apenas no servidor, isso polpa trabalho...

Boa sorte, sucesso. Acho que você vai notar muitas vantagens com esse RDD.

Letodbf - o Inicio

MensagemEnviado: 23 Nov 2018 09:05
por rossine
Bom dia,

Estou desenvolvendo um novo módulo em meu sistema e eu gostaria de usar o LetoDBF neste novo módulo, mas continuar usando o RDDCDX no resto do sistema.

É possível usar em concomitância ambos RDD´s sem ter problemas de perca de dados ou índice corrompido ?

Alguém já usa desta forma ?

Obrigado,

Letodbf - o Inicio

MensagemEnviado: 23 Nov 2018 09:50
por rubens
Bom dia..

Rossine quem entende mais vai te responder melhor..
Mas pelo que eu entendi continua usando padrão CDX tanto é que isto é setado no ini do letodb server.
O Leto nesse caso tá fazendo somente o trabalho de rede mas a manipulação continua sendo CDX.
Se você quer local sem usar o leto é só na conectar no leto.. daí vai continuar trabalhando CDX.
Acho que é isso.

Rubens

Letodbf - o Inicio

MensagemEnviado: 18 Out 2019 14:46
por Fernando queiroz
Ajuda dos experientes:

1 - Baixei e compilei o LETODBF
2 - ativei o serviço
10.18.2019 14:31:45 DEBUG thread3() ending ..
10.18.2019 14:31:45       Server at port 2812 have shutdown.
10.18.2019 14:32:38       UDF file: C:\LetoDBf-master\bin\letoudf.hrb not present.
10.18.2019 14:32:38 INFO: LetoDBf Server 3.00 (20191017), will run at port :2812 ( internal also used :2813 )
10.18.2019 14:32:38 INFO: DataPath=C:\COMARA, ShareTables=1, NoSaveWA=1, Max Tables=999
10.18.2019 14:32:38 INFO: LoginPassword=0, CacheRecords=21, LockExtended=0, Max Users=99
10.18.2019 14:32:38 DEBUG second socket: 324 for errors established
10.18.2019 14:32:38 DEBUG thread3() with pipe handle: 332 started ..

3 - o meu arquivo .ini segue abaixo
;Server = 192.168.15.30
;IP = 192.168.15.30
Port = 2812
DataPath = C:/COMARA
;LogPath = /tmp
Default_Driver = CDX
;Lock_Scheme = 6
;Memo_Type = FPT
Share_Tables = 1
No_Save_WA = 1
Lower_Path = 0
EnableFileFunc = 1
EnableAnyExt = 1
Allow_UDF = 1
Pass_for_Login = 0
Pass_for_Manage = 0
Pass_for_Data = 0
;Pass_File = leto_users
Cache_Records = 21
;Max_Vars_Number = 1000
;Max_Var_Size = 67108864
;Tables_Max  = 999
;Users_Max = 99
Debug = 1
Optimize = 1
;AutOrder = 0
;ForceOpt = 0
;TimeOut = 360
;Zombie_Check = 0
;Server_User = advantage
;Server_UID = 1000
;Server_GID = 4
;BC_Services = letodb;
;BC_Interface = eth2
;BC_Port = 2812
;SMB_SERVER = 1
DataBase = /
Backup = /tmp/backup
Mask = *.dbf,*.dbt,*.ntx
Lock = 1
Seconds = 30
Wait = 1
ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/*


o ip na rede interna da maquina onde esta o letodbf é 192.168.15.30

4-Liberei a porta do modem conforme abaixo
Untitled.jpg


5-fiz o seguinte codigo no aplicativo

#include "dbinfo.ch"
#include "rddleto.ch"
#include "hwgui.ch"
REQUEST LETO
REQUEST DBFCDX   
REQUEST HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
****************************************
FUNCTION MAIN( Caminho )
****************************************
LOCAL oMENUPRINC;
   , oToolbar1;
   , oFont;
   , TENTATIVA, OK_SENHA;
    , nPort := 2812
   
PUBLIC cPath := Caminho

   IF Empty( cPath )

     //cPath := "//127.0.0.1:2812/"

     cPath := ""

     RDDSETDEFAULT( "DBFCDX" )

   ELSE

     cPath := "//" + cPath + IiF( ":" $ cPath, "", ":" + ALLTRIM( STR( nPort ) ) )

     cPath += Iif( Right(cPath,1) == "/", "", "/" )

     RDDSETDEFAULT( "LETO" )
    
      IF ( leto_Connect( cPath ) ) < 0
         hwg_MsgInfo( "Erro Conectando ao Servidor: " + cPath + leto_Connect_Err( .T. ), "Verifique!!!")
         quit
      ELSE
        hwg_MsgInfo( "Conecção com o Servidor "+ cPath + " OK", "Conecção!!!" )
      ENDIF    
   ENDIF


mas a coisa nao funciona , simplesmente da erro de conecção,
onde estou errando ???? :'( :'( :'(

tenho de carregar algo cliente na outra maquina???

como chamar o aplicativo ???
já testei destas formas:

sgc 192.168.15.30
sgc localhost

mas todas as formas que tentei dão erro de conecção

Letodbf - o Inicio

MensagemEnviado: 18 Out 2019 16:57
por Fernando queiroz
Tava tudo certo era o tal do firewall do Windows sacaneando a coisa, desativei e funcionou,
agora tenho de criar regras para resolver o problema, so não sei como fazer :'( :'( :'(

Letodbf - o Inicio

MensagemEnviado: 18 Out 2019 18:04
por MSDN
Estou falando mais para ajudar, pq não tenho experiência no que vc precisa, mas talvez assinando o EXE ajude, ou então, descobrindo se existe alguma chave no registro do Windows que libere o Firewall do Windows para o Leto.

Letodbf - o Inicio

MensagemEnviado: 19 Out 2019 01:10
por Fernando queiroz
TUDO RESOLVIDO , regra criada, letodbf funcionando 100%
preparado para base normal e com letodbf

gostei do resultado :* :* :*

Letodbf - o Inicio

MensagemEnviado: 21 Out 2019 11:57
por Itamar M. Lins Jr.
Ola!
TUDO RESOLVIDO , regra criada, letodbf funcionando 100%
preparado para base normal e com letodbf

gostei do resultado

Legal.
Bom ver, pq alguns não acertam e ficam inventando problema. Dizendo que ficou mais lento etc...
O firewall eu faço manual mesmo a regra do letodbf, alguns clicks, não digitamos nada só o nome da regra.
Nunca mais vai querer usar rede mapeada. São mudanças mínimas, e ainda ganhamos uma serie de funções extras, para ajudar. Por isso ainda uso DBF e vou ficar por muito tempo, salvo alguma necessidade extra...

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 28 Out 2019 22:31
por Fernando queiroz
Pergunta aos mais experientes em LetoDBF:

Como fazer o travamento para atualização ou deleção de um registro.

tenho feito com
DO WHILE .NOT. RLOCK( )
hwg_MsgInfo( "Registro em uso pelo Operador: "+ HB_EOL()+PRODUTOS->QUEM_BLOQ+ HB_EOL()+ "Solicite que liberem o cadastro desse Produto", "ATENÇÃO!!!" )
ENDDO

Só que tem dado erro de bloqueio, estive olhando na documentação e me sugerem FLOCK(), isto é, para bloquear todo o arquivo
alguém me explica o caso, tenho o arquivo de pedidos e de itens do pedido, se bloquear o pedido ninguém pode usar sei la to perdido,

Seguindo dicas do Quintas to bloqueando o arquivo Flock() somente no momento do UPDATE ou DELETE e já desbloqueio, com isso parou de dar erro de LOCK REQUIRED que estava dando antes com o RLOCK() , vi também que no .INI tem uma opção de tempo de bloqueio, bom vamos aos estudos

:% :% :%

Estava olhando na documentação e encontrei isso

Lock_Scheme = 0 - If > 0, extended locking scheme will be used by server.
* This is only needed, if your DBF will be greater in size as 1 GB. *
Then DB_DBFLOCK_HB32 will be used for NTX/CDX;
_or_ if set to 6, DB_DBFLOCK_CLIPPER2 for NTX, HB32 for other
_or_ if set to 2, DB_DBFLOCK_COMIX for CDX, HB32 for other
_or_ if set to 5, DB_DBFLOCK_HB64 for all.

o meu está 6 agora ficou a duvida de qual usar, ou tenhi de voltar pra RLOCK() novamente????

Letodbf - o Inicio

MensagemEnviado: 06 Nov 2019 22:07
por Itamar M. Lins Jr.
Ola!
Uso "DBFCDX" e rlock() nunca tive problema. Nem com o velho LetoDB.
Nunca usei flock(), nem faço uso do "set filter"
Não tenho problema com essa parte.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 08 Nov 2019 13:27
por Fernando queiroz
Consegui resolver modificando meu .INI

Lock_Scheme = 2 antes estava 6

funcionando perfeito :|< :|< :|<

Letodbf - o Inicio

MensagemEnviado: 25 Mar 2020 02:27
por curiosoaqp
Hola amigos,

Estoy empezando a incursionar en letodbf y se me presento un problema en relacion con los indices, me da un error LETO/1003 : Variable does not exist DLOCA.
DLOCA es una variable publica que toma diferentes valores para realizar las condiciones de los indices y filtros.

Gracias por la atencion.

Hello friends,

I am starting to venture into letodbf and I have a problem related to the indexes, it gives me a LETO / 1003 error: Variable does not exist DLOCA.
DLOCA is a public variable that takes different values to perform the conditions of the indexes and filters.

Thanks for your attention.

Letodbf - o Inicio

MensagemEnviado: 26 Mar 2020 07:20
por Itamar M. Lins Jr.
Ola!
Mostre seu código.
Mas adianto que suas variáveis mesmo publica, não são vistas do lado do servidor.

Saudações,
Itamar M. Lins Jr.

Letodbf - o Inicio

MensagemEnviado: 14 Jul 2023 11:53
por Linguagemclipper
Fernando queiroz escreveu:TUDO RESOLVIDO , regra criada, letodbf funcionando 100%
preparado para base normal e com letodbf

gostei do resultado :* :* :*


Estou tendo o mesmo problema. Se você tivesse explicado como fez essa regra já teria me ajudado...
Como é que faz, alguém me ajuda?

Letodbf - o Inicio

MensagemEnviado: 15 Jul 2023 09:34
por Jairo Maia
Linguagemclipper escreveu:Se você tivesse explicado como fez essa regra já teria me ajudado...

Mas depois ele explicou, está um pouco mais acima. Ele disse que trocou no Letodb.ini Lock_Scheme = 6 para Lock_Scheme = 2

Letodbf - o Inicio

MensagemEnviado: 15 Jul 2023 13:45
por Linguagemclipper
Ah, isso eu fiz também. Depois que eu lí eu mudei o meu, era 3 passei para 2 também, mas não resolveu.
No 3 funcionava normal com o Windows, mas no Linux não está nem com 3 nem com 2 no locks_cheme.