Página 1 de 1

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 14:15
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

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 15:48
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.

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 15:52
por tidao.baccan
Nunca mexi com xharbour.

Nem o tenho aqui.

Seria muito traumatico?

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 16:38
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 

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 17:19
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

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 20:11
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.

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 20:20
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...

Clipper 5.02 com DBFCDX

Enviado: 28 Jul 2014 22:56
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,

Clipper 5.02 com DBFCDX

Enviado: 29 Jul 2014 08:10
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.

Clipper 5.02 com DBFCDX

Enviado: 29 Jul 2014 18:22
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.

Clipper 5.02 com DBFCDX

Enviado: 30 Jul 2014 22:19
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.