Clipper 5.02 com DBFCDX

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

tidao.baccan
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 28 Jul 2014 12:03
Localização: Mirassol/SP

Clipper 5.02 com DBFCDX

Mensagem por tidao.baccan »

Ola
Por conveniencia rodo meu programa em Clipper 5.02 a tempos. funciona muito bem. Porem agora os NTX estão muito grandes. Tentei colocar o comando:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
Porem dá erro: Syntax Erro c2001, e não tem o arquivo DBFCDX na pasta LIB. Copie um LIB DBFCDX de outra versão do Clipper a 5.2, porem tambem não funcionou.

Tento compilar com o 5.2 e alguns fontes dão o erro de Fatal C3049 String space exhausted

O que faço para resolver.
Obrigado
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Clipper 5.02 com DBFCDX

Mensagem por jairfab »

Para resolver este problema eu compilei todos os sistemas versão clipper em xharbour.

Para isto alteirei apenas o fonte do prg principal incluindo: function main() no inicio do programa.
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
tidao.baccan
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 28 Jul 2014 12:03
Localização: Mirassol/SP

Clipper 5.02 com DBFCDX

Mensagem por tidao.baccan »

Nunca mexi com xharbour.

Nem o tenho aqui.

Seria muito traumatico?
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Clipper 5.02 com DBFCDX

Mensagem por billy1943 »

Não sei se o sistema do colega que iniciou o tópico tem arquivos do tipo .DBT para os campos "memo".

Se os tiver, o padrão de índices .IDX ou .CDX exigem que os arquivos .DBT sejam convertidos para .FPT.

Em 27.03.2011, enviei para a seção DOWNLOADS deste fórum, um utilitário que faz a conversão, procure-o com o nome MUDADBT.

A única sugestão que faça primeiro uma cópia de todos os seus arquivos, pois o executável trabalhará com todos os arquivos .DBT que houver no drive e pasta
informados e procurará o seu .DBF correspondente.

Como na época somente enviei o executável, para que possa(m) saber como o mesmo funciona, anexo abaixo o seu fonte:

Código: Selecionar todos

local cores  :=  setcolor()
local i,cntarq
local option,file
request dbfcdx
rddsetdefault("dbfcdx")
dbsetdriver("dbfcdx")
set scoreboard off
set date brit
set century on
driv  := "d:\" 
diret := curdir()
private farq, fant, fnovo
setcolor("w+/b,g+/n,,bg+b")
drive  := "d:\" 
direto := curdir()
direto += space(30)
clear

text
  Esta rotina mudar  todos os arquivos do formato .DBT para o formato .FTP
  para uso com o RDD DBFCDX e uso de ¡ndices .CDX/IDX.
  Para isso, informar o diret¢rio e pasta onde se encontram tais arquivos.
  O sistema abre uma janela com os arquivos .DBT encontrados.
  Ap¢s selecionar esse arquivo, ele far  todas as modifica‡äes necess rias.
  Como o processo ‚ por gera‡Æo de estrutura e c¢pia de arquivos, o tempo
  de processamento pode variar em fun‡Æo do tamanho do arquivo tratado.
  Quando retornar … janela, o arquivo .DBT tratado nÆo aparecer  mais.
  Somente utilizar esta rotina ap¢s ter feito c¢pia dos seus arquivos.
  NÆo utilizar esse arquivo em rede, e nem com terminais abertos.
  A rotina nÆo verificar  nem alterar  nenhum arquivo de ¡ndices.
  A gera‡Æo de novos ¡ndices ficar  por conta de sua aplica‡Æo.
 
  Coloque o execut vel em:

  - drive: C: 
  - Pasta: Arquivos de programas\MudarDbt

endtext

inkey(0)

do while .t.

   @ 0,0 clear to 23,79
   @ 0,0 to 23,79 double
   @ 1,10 say "[ MUDAN€A DE ARQUIVOS .DBT PARA .FPT ]"
   @ 3,2 say "Drive atual dos arquivos: " get drive ;
         pict "@!" valid ! empty("drive")
   read

   if lastkey() == 27
      clear 
      return
   endif

   @ 4,2 say "Diret¢rio atual: " get direto pict "@!Ks40" ;
                                 valid ! empty(direto)
   read
   direto := alltrim(direto)
   drdir  := drive + direto + "\"
   @ 5,2 say "Path selecionado: " + alltrim(drdir)
   sn := "S"
   @ 7,2 say "Confirma os dados acima ? <SN>" get sn pict "@!" valid sn $ "SN"
   read

   if sn == "N"
      loop
   endif

   ! &drive.
   ! cd\
   ! cd &direto.

   private dbt_arq[adir("*.dbt")]
   cntarq := adir("*.dbt", dbt_arq)

   if cntarq == 0
      @ 24,0 say "NÆo existem arquivos DBTs nessa pasta! "
      inkey(0)
      @ 24,0
      ! &driv.
      ! cd\
      ! cd &diret.
      direto += space(40)
      direto := left(direto,40)
      loop
   endif
 
   do while (.t.)

      close databases
      @ 3,2 clear to 7,77 
      private dbt_arq[adir("*.dbt")]
      @ 2,1 to 2,78
      @ 4,35 to 17,44 double
      @ 4,38 say "DBTs"
      cntarq := adir("*.dbt", dbt_arq)

      for i := 1 to cntarq
               pospto := at(".", dbt_arq[i])
               dbt_arq[i] := substr(substr(dbt_arq[i], 1, pospto - 1) + ;
                             space(8),1,8)
      next

      option  :=  achoice(5,36,16,43,dbt_arq)

      if (option == 0)
         exit
      endif

      @ 1,1 clear to 20,79
      farq  :=  trim(substr(dbt_arq[option],1,8)) + ".dbt"
      fnovo :=  trim(substr(dbt_arq[option],1,8)) + ".fpt"
      fant  :=  trim(substr(dbt_arq[option],1,8)) + ".dbf"

      if file(fnovo)
         @ 24,0 say "O arquivo DBT j  foi modificado para FPT"
         inkey(0)
         @ 24,0
         loop
      endif

      if ! file(fant)
         @ 24,0 say "NÆo existe o arquivo DBF correspondente a esse DBT !"
         inkey(0)
         @ 24,0
         delete file (farq)
         loop
      endif

      file  :=  drdir + fant
      mud_dbt(file)

   enddo

   direto := direto + space(40)
   direto := left(direto,40)
   ! &driv.
   ! cd\
   ! cd &diret.

enddo

setcolor(cores)
return nil

PROCEDURE mud_dbt(fdbf)
cls
select 1
use (fdbf) via "dbfntx" 
nreg_ant := lastrec()
copy struc to novo_arq
@ 24,0 say "Aguarde. Copiando para GuardaDB.."
copy to guardadb
close
@ 24,0
select 2
use novo_arq via "dbfcdx" 
ndbf := "novo_arq.dbf"
nfpt := "novo_arq.fpt"
@ 24,0 say "Aguarde. Adicionando do GuardaDB.." + ndbf
append from guardadb
nreg_atu := lastrec()

if str(nreg_ant,8) == str(nreg_atu,8)
   erase(fdbf)
   erase(farq)
endif
 
close
rename (ndbf) to (fant)
rename (nfpt) to (fnovo)
select 2
use (fant) via "dbfcdx" 
close databases
@ 24,0 
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
tidao.baccan
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 28 Jul 2014 12:03
Localização: Mirassol/SP

Clipper 5.02 com DBFCDX

Mensagem por tidao.baccan »

Companheiro...

Não uso DBT. Não uso Memo.

Ou seja, não seria esse o motivo para o erro. Será que o CDX não é compativel com Clipper 5.02 ?

Obrigado
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Clipper 5.02 com DBFCDX

Mensagem por Jairo Maia »

Olá tidao.baccan,
tidao.baccan escreveu:Tentei colocar o comando:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
Porem dá erro: Syntax Erro c2001
Sim. Sua versão não comporta outro RDD além do DBF/NTX.
tidao.baccan escreveu:Tento compilar com o 5.2 e alguns fontes dão o erro de Fatal C3049 String space exhausted
Aqui acho que você quiz dizer 5.02. Esse problema foi solucionado a partir da versão 5.2e, a última lançada pela CA-Clipper antes da versão 5.3. Ele ocorre quando você tem um .PRG muito grande, uma solução para sua versão deste caso seria você dividir seus .PRGs em tamanho menor. Este erro nas versões anteriores a 5.2e também ocorre quando você tem linha com mais de 128 bytes (caracteres), como uma mensagem por exemplo.
tidao.baccan escreveu:Será que o CDX não é compativel com Clipper 5.02 ?
Sinto muito decepcioná-lo, Não é! Somente a partir da versão 5.2 você pode usar outros RDDs.

Você precisa atualizar sua versão para a versão 5.2e. Me lembro que já passei algumas vezes o link no site do colega Maligno (um colaborador aqui do fórum), que tinha essa versão no site dele, mas perdi.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Clipper 5.02 com DBFCDX

Mensagem por alxsts »

Olá!

Seja bem-vindo ao fórum, Tiddao!

Poderia confirmar a versão do Clipper que você usa? Versão 5.02? Conheço 5.0, 5.01 e depois vieram 5.2 e 5.3...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Clipper 5.02 com DBFCDX

Mensagem por Toledo »

Jairo Maia escreveu:Me lembro que já passei algumas vezes o link no site do colega Maligno (um colaborador aqui do fórum), que tinha essa versão no site dele, mas perdi.
Tem aqui na seção de downloads: https://pctoledo.org/forum/fileba ... t=c&page=1

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
tidao.baccan
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 28 Jul 2014 12:03
Localização: Mirassol/SP

Clipper 5.02 com DBFCDX

Mensagem por tidao.baccan »

Verdade.

Clipper 5.01

Vou tentar o Clipper 5.2e como o amigo Jairo Maia me recomendou.

Agradeço a todos a força.

Muito obrigado por enquanto.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Clipper 5.02 com DBFCDX

Mensagem por rochinha »

Amiguinhos,

tiddao.baccan, tenho certeza de saber de sua existencia de outro lugar, a tempos. Ou voce se recadastrou aqui recentemente, novamente.

Em todo caso vejamos o seu problema.

voce relata:
Fatal C3049 String space exhausted
Isto tem referencia a memória e com certeza em seu Clipper voce usa o RTlink. Passando a usar versões como 5.2 em diante(a melhor é 5.3e) voce deva passar a usar Blinker ou EXOspace.

Com RTlink ele te mantém engessado nos 640 iniciais de memória enquanto que nos dois que citei são criados espaço maiores de uso de memória para trabalho.

Caso queira testas um ambiente de trabalho sem muita dor de cabeça, baixe meu ambiente aqui

Baixe o arquivo, crie uma pasta no seu drive C: chamada DEV4DOS ficando C:\DEV4DOS e arraste o conteudo do arquivo compactado para dentro dela, ficando:

C:\DEV4DOS
----Clipper
----DOSBox-0.72
----FiveDOS
----Output

Na pasta C:\DEV4DOS tem um atalho chamado Fivewin SDK DOS, execute-o e espere o DOSBox configurar e te jogar dentro do prompt de comando.

Se tudo correr bem voce será jogado na pasta C:\DEV4DOS\FIVEDOS\SAMPLES e nela possui um lote de nome BUILDH.BAT.

Este lote mostra toda configuração necessária para compilar em Clipper com BLinker. Para testar basta comandar BUILDH TUTOR01, BUILDH TUTOR02, etc.

O ambiente possui a FiveDOS, uma biblioteca muito antiga e não deve levar em consideração a inclusão dela para resolver o seu problema, mas entenda que a intalação do ambiente é apenas para te apresentar o uso.

Bom trabalho.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Clipper 5.02 com DBFCDX

Mensagem por lucimauro »

Se for continuar em clipper aconselho a usar o NSX

REQUEST SIXNSX
RDDSETDEFAULT("SIXNSX")

Uso a anos e não tinve problemas, pode usar indices compostos e tudo mais.
Responder