Clipper On Line • Ver Tópico - Preciso de ajuda para converter para CDX

Preciso de ajuda para converter para CDX

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Preciso de ajuda para converter para CDX

Mensagempor gilsonpaulo » 15 Jun 2008 14:17

Ganhei umas funções prontas e estou com dificuldade para converter elas para cdx.

Se alguem puder me ajudar desde ja agradeço.

#include "acesso.ch"
#include "inkey.ch"

       /*
            DEFAULT PARA GERA€ÇO DO ARQUIVO DE SENHAS
       */

#define  USER_ID        '¶®©¨º­¹'
#define  USER_PW        '°­§º©'
#define  USER_ACCESS   'šš›š'

//     - DECLARA CAMPOS DE ARQUIVO(S)

FIELD    TITULO, VERIFICA, CGC, CORMENU, CORWORK, CORJANELA, PATHDBF,;
         PATHNTX, PATHBACK, PATHSPOOL, SPOOL, COMPRIME, NEGRITO, PICOTE,;
         LINHAS, BOXTOP, BOXLEFT, BOXBOTTOM, BOXRIGHT, BOXIMP,;
         CABL1, CABL2, CABL3, CABL4, CABL5, CABL6, CABL7, CABL8

FIELD    USERID , USERPW, USERACCESS

/*
* GeraConfig()   -  Procedure para gera‡Æo autom tica do arquivo
*                   de configura‡Æo do sistema.
*/

FUNCTION GeraConfig()

LOCAL   tSelect:=   SELECT()
LOCAL   tCfg:=      MainPrg() + ".CFG"
LOCAL   tTitulo:=   "SISTEMA PRE-GERADO  -  Gilson Paulo Schuck"

// Array contendo campos do arquivo a ser gerado

LOCAL    aStruc:=    {   {  "TITULO",      "C",  78,   0 },;
                                {  "PATHDBF",     "C",  50,   0 },;
                                {  "PATHNTX",     "C",  50,   0 },;
                                {  "PATHSPOOL",   "C",  50,   0 },;
                                {  "PATHBACK",    "C",  20,   0 },;
                                {  "CORMENU",     "C",  30,   0 },;
                                {  "CORWORK",     "C",  30,   0 },;
                                {  "CORJANELA",   "C",  30,   0 },;
                                {  "BOXTOP",      "N",   1,   0 },;
                                {  "BOXLEFT",     "N",   1,   0 },;
                                {  "BOXBOTTOM",   "N",   1,   0 },;
                                {  "BOXRIGHT",    "N",   1,   0 },;
                                {  "BOXIMP",      "C",   6,   0 },;
                                {  "LINHAS",      "N",   3,   0 },;
                                {  "COMPRIME",    "L",   1,   0 },;
                                {  "NEGRITO",     "L",   1,   0 },;
                                {  "PICOTE",      "L",   1,   0 },;
                                {  "SPOOL",       "L",   1,   0 },;
                                {  "CABL1",       "C",  79,   0 },;
                                {  "CABL2",       "C",  79,   0 },;
                                {  "CABL3",       "C",  79,   0 },;
                                {  "CABL4",       "C",  79,   0 },;
                                {  "CABL5",       "C",  79,   0 },;
                                {  "CABL6",       "C",  79,   0 },;
                                {  "CABL7",       "C",  79,   0 },;
                                {  "CABL8",       "C",  79,   0 },;
                                {  "VERIFICA",    "C",  13,   0 },;
                                {  "CGC",         "C",  14,   0 }  }

   IF !FILE( tCfg )
     DBCREATE( tCfg, aStruc )
   ENDIF

   USE ( tCfg ) NEW
   APPEND BLANK

   REPLACE   TITULO      WITH  tTitulo,;
                PATHBACK        WITH  "A:\",;
                PATHNTX         WITH  '.\INDICES\',;
                PATHDBF         WITH  '.\DADOS\',;
                PATHSPOOL       WITH  '.\SPOOL\',;
                BOXTOP          WITH  1,;
                BOXLEFT         WITH  1,;
                BOXBOTTOM       WITH  1,;
                BOXRIGHT        WITH  1,;
                BOXIMP          WITH  "-=+*|-",;
                LINHAS          WITH 40,;
                COMPRIME        WITH  .F.,;
                NEGRITO         WITH  .F.,;
                PICOTE          WITH  .F.,;
                VERIFICA        WITH  clKey( STRZERO( ChecaString(;
                                  TRIM( tTitulo)), 13), ENCRIPT )
   USE

   SELECT( tSelect )

   RETURN( NIL )

/*
* GERASYS()   -  Procedure para a gera‡ao autom tica do arquivos de senha
*              e c¢digos de acesso
*/

FUNCTION GeraSys()

LOCAL    tSelect:=      SELECT()
LOCAL    tArqSys:=      PathDbf() + MAINPRG() + ".SYS"
LOCAL   tTitulo:=   "SISTEMA PRE-GERADO  - Gilson Paulo Schuck"

LOCAL   aStruc:=    {  {  "USERID",      "C",  12,   0 },;
                        {  "USERPW",      "C",   8,   0 },;
                        {  "USERACCESS",  "C",   5,   0 }  }

   IF ( !FILE( tArqSys ))
      DBCREATE( tArqSys, aStruc )
   ENDIF

   USE ( tArqSys ) SHARED NEW
   APPEND BLANK
   REPLACE   USERID      WITH  USER_ID,;
                USERPW          WITH  USER_PW,;
                USERACCESS      WITH  USER_ACCESS
   COMMIT
   USE

   SELECT( tSelect )

   RETURN( NIL )

/*
* GeraMsg()   -  Gera‡Æo autom tica das mensagens do sistema
*/

FUNCTION GeraMsg()

LOCAL      tArq:=    PATHDBF() + MAINPRG() + ".MSG"

LOCAL      aStruc:= {   {  "CODMESSAGE",  "C",  4, 0 },;
                                {  "MESSAGE",     "C", 68, 0 }  }

     DBCREATE( tArq, aStruc )
     COMMIT

     RETURN( NIL )

/*
* SetUp()      -  Inicializa os principais flags do sistema
*/

FUNCTION SetUp()

LOCAL    tMain:=  MAINPRG() + ".CFG"

   IF !FILE( tMain )
     GeraConfig()
   ENDIF

   SET SCOREBOARD      OFF
   SET CONFIRM         ON
   SET MESSAGE TO      23
   SET EXACT        OFF
   SET WRAP         ON
   SET DELETED         ON
   SET DATE         BRITISH
   SET SOFTSEEK     ON

//   SET KEY K_ALT_C TO
//   SET KEY K_ALT_S TO SENHA
//   SET KEY K_ALT_T TO   ALTSENHA

   USE ( tMain ) SHARED NEW READONLY

   SysId( TRIM( TITULO ))
   SysVerify( VAL( clKey( VERIFICA, DECRIPT )))
   SysCgc( CGC )
   CorMenu( TRIM( CORMENU ))
   CorWork( TRIM( CORWORK ))
   CorJan( TRIM( CORJANELA ))
   PathDbf( TRIM( PATHDBF ))
   PathNtx( TRIM( PATHNTX ))
   PathBack( TRIM( PATHBACK ))
   PathSpool( TRIM( PATHSPOOL ))
   Spool( SPOOL )
   Comprime( COMPRIME )
   Bold( NEGRITO )
   SaltaPicote( PICOTE )
   FormSize( LINHAS )

   BoxFrame( SetBoxFrame( BOXTOP, BOXLEFT, BOXBOTTOM, BOXRIGHT ))
   BordaFrame( SetBordaFrame( BOXTOP, BOXLEFT, BOXBOTTOM, BOXRIGHT ))
   BoxImpFrame( BOXIMP )

   ClearCab()

   AddCabLine( CABL1 )
   AddCabLine( CABL2 )
   AddCabLine( CABL3 )
   AddCabLine( CABL4 )
   AddCabLine( CABL5 )
   AddCabLine( CABL6 )
   AddCabLine( CABL7 )
   AddCabLine( CABL8 )

   USE

   IF ( !FILE( PathDbf() + MainPrg() + ".MSG" ) )
     GeraMsg()
   ENDIF

   IF ( !FILE( PathDbf() + MainPrg() + ".SYS" ) )
     GeraSys()
   ENDIF

   SetMsg()

   RETURN( NIL )

   //    eof   -  RVLStart.prg
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor sygecom » 15 Jun 2008 17:35

De uma olhada nessa Sessão que tem diversos topicos de como migrar de NTX para CDX.
E pode dar uma olhada tmb. no link abaixo:
http://www.pctoledo.com.br/col_dic.htm#ind7
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Preciso de ajuda para converter para CDX

Mensagempor gvc » 16 Jun 2008 09:34

Vc postou um código que não tem nada de indexação.
Aonde esta o módulo que cria os arquivos de indices?
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor gilsonpaulo » 20 Jun 2008 08:43

Desculpe, aqui esta onde se faz a indexação.

#include "acesso.ch"

STATIC    _RVL_aMsg:=       { {}, {} }   // Array contendo as mensagens
STATIC    _RVL_LastMsg:=    "Sem Mensagem" // éltima Mensagem Apresentada

/*
* TABMSG( pCodMsg:String[4] )    -   Devolve a mensagem da tabela de ac“rdo
*                                      com o c¢digo pCodMsg especificado
*
*         Formato do c¢digo pCodMsg
*         -------------------------
*
*                      S99[A][D][I] -> Sistema  N£mero  A‡ao Decisao Informa‡ao
*                                      S        99      A    D       I
*/

FUNCTION TabMsg( pCodMsg )

LOCAL tMsg:=   ""

   IF ( LEN( pCodMsg ) = 4 )
     AEVAL( _RVL_aMsg[1], {|x,y| IIF(( x = pCodMsg),;
          ( tMsg:= _RVL_aMsg[2,y] ) != "", .F. ) } )
   ENDIF

//   RETURN( IIF( ( LEN( TRIM( tMsg )) > 0), pCodMsg + " " + tMsg, pCodMsg ))
   RETURN( IIF( ( LEN( TRIM( tMsg )) > 0), tMsg, pCodMsg ))

/*
* SETMSG() -  Fun‡Æo que coloca a tabela de mensagens numa array bidimen-
*            cional do tipo STATIC _RVL_aMsg.
*
*/

FUNCTION SetMsg()

LOCAL tSelect:=   SELECT()
LOCAL tArq:=     PathDbf() + MainPrg() + ".MSG"
LOCAL tInd:=     PathNtx() + MainPrg() + ".NTX"

FIELD CODMESSAGE,MESSAGE

   _RVL_aMsg:=     { {}, {} }

   BEGIN SEQUENCE

     IF !FILE( tArq )
       BREAK
     ENDIF

     IF !NetUse( tArq, USE_EXC + USE_NEW + USE_RR, 60 )
       BREAK
     ENDIF

     IF !FILE( tInd )
       INDEX ON CODMESSAGE TO ( tInd )
     ENDIF

     SET INDEX TO ( tInd )
     GO TOP

     WHILE !EOF()

       AADD( _RVL_aMsg[1], CODMESSAGE )
       AADD( _RVL_aMsg[2], MESSAGE   )
       SKIP
     ENDDO

     USE
   END

   SELECT( tSelect )

   RETURN( NIL )

/*
* GETKEY()    -  Fun‡Æo que mostra mensagem, lˆ tecla e devolve seus
*              Mai£sculos
*
*/

FUNCTION GetKey( pMensagem, pValidKeys )

LOCAL tKeys:=  IIF( pValidKeys = NIL, "SsNn", pValidKeys )
LOCAL wTela:=  SAVESCREEN( LINE_MSG, 0, LINE_MSG, MAXCOL(), )
LOCAL tChar

   Mensagem( pMensagem )

   TONE( 1200, 2 )

   tChar:=   LerTecla( tKeys )

   RESTSCREEN( LINE_MSG, 0, LINE_MSG, MAXCOL(), wTela )

   RETURN( tChar )

/*
* Confirma()  -  Fun‡Æo Booleana de mensagem e confirma‡Æo
*
*/

FUNCTION Confirma( pMensagem, pValidKeys )

LOCAL tKeys:=  IIF( pValidKeys == NIL, "Ss+Nn-", pValidKeys )
LOCAL wTela:=  SAVESCREEN( LINE_MSG, 0, LINE_MSG, MAXCOL() )
LOCAL tChar

   IF ( pMensagem != NIL )
     Mensagem( pMensagem )
   ENDIF

   TONE( 1200, 2 )

   tChar:=   CHR( LerTecla( tKeys ))

   RESTSCREEN( LINE_MSG, 0, LINE_MSG, MAXCOL(), wTela )

   RETURN( tChar $ 'Ss+' + CHR(13) )       // + ENTER

/*
* Mensagem()  -  Fun‡Æo que imprime mensagem na linha 23 coluna 13
*
*/

FUNCTION Mensagem( pMensagem, pTempo )

LOCAL tCor:=   SETCOLOR("W+/R,W+/R")
LOCAL tMsg:=   IIF( pMensagem = NIL, '<ESC> Volta ...',;
                              TabMsg( pMensagem ))

   _RVL_LastMsg:= tMsg      // <-- Linha acrescentada

   @ LINE_MSG, COL_MSG SAY PADR( tMsg, LEN_MSG, " " )

   IF ( pTempo != NIL )
     TONE( 1200, 1 )
     CLEAR TYPEAHEAD
     INKEY( pTempo )
   ENDIF

   SETCOLOR( tCor )

   RETURN( NIL )

/*
* Aviso()   -  Fun‡Æo que espera at‚ que seja pressionada alguma tecla,
*            dando beeps a intervalos regulares
*
*/

FUNCTION Aviso( pMensagem )

   CLEAR TYPEAHEAD

   IF ( pMensagem != NIL )
     MENSAGEM( pMensagem )
   ENDIF

   WHILE ( INKEY() == 0 )
    TONE( 90, .1 )
   ENDDO

   Mensagem()

   RETURN( LASTKEY() )

/*
* LastMsg()   -  Devolve a £ltima mensagem passada por parƒmetro
*
*/

FUNCTION LastMsg()

   RETURN( _RVL_LastMsg )

//     eof   -  RVLMsg.prg


*============================================
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor gvc » 20 Jun 2008 11:11

Continua tendo alguma coisa errada aqui.
O que vc postou é para indexar um arquivo que contem as mensagens do sistema e carretar em um array.
Pelo que pude ver, não é a parte que indexa os arquivos do sistema.

FUNCTION SetMsg()

LOCAL tSelect:= SELECT()
LOCAL tArq:= PathDbf() + MainPrg() + ".MSG"
LOCAL tInd:= PathNtx() + MainPrg() + ".NTX"

FIELD CODMESSAGE,MESSAGE

_RVL_aMsg:= { {}, {} }

BEGIN SEQUENCE // ??????? Não entendi.

   IF !FILE( tArq )
      BREAK
   ENDIF

   IF !NetUse( tArq, USE_EXC + USE_NEW + USE_RR, 60 ) // Abre o arquivo de mensagens
      BREAK
   ENDIF

   IF !FILE( tInd )
      INDEX ON CODMESSAGE TO ( tInd ) // Indexa o arquivo de mensagens
   ENDIF

   SET INDEX TO ( tInd )
   GO TOP

   WHILE !EOF()

      AADD( _RVL_aMsg[1], CODMESSAGE ) // Carrega as mensagens em um array
      AADD( _RVL_aMsg[2], MESSAGE )
     SKIP
   ENDDO

USE // Fecha o arquivo de mensagens
END

SELECT( tSelect )

RETURN( NIL )
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor gilsonpaulo » 20 Jun 2008 19:04

No resto do sistema a conversão para cdx é tranquilo. É neste ultima parte que postei que to com dificuldades para rodar com cdx que estou me batendo para rodar com cdx.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor gvc » 21 Jun 2008 13:12

FUNCTION SetMsg()

LOCAL tSelect:= SELECT()
LOCAL tArq:= PathDbf() + MainPrg() + ".MSG"
LOCAL tInd:= PathNtx() + MainPrg() + ".CDX"  // Veja essa função PATHNTX()

FIELD CODMESSAGE,MESSAGE

_RVL_aMsg:= { {}, {} }

BEGIN SEQUENCE // Não entendi isto

IF !FILE( tArq )
BREAK
ENDIF

IF !NetUse( tArq, USE_EXC + USE_NEW + USE_RR, 60 )
BREAK
ENDIF

IF !FILE( tInd )
INDEX ON CODMESSAGE tag 01 TO ( tInd ) // aqui
ENDIF

SET INDEX TO ( tInd )
GO TOP

WHILE !EOF()

AADD( _RVL_aMsg[1], CODMESSAGE )
AADD( _RVL_aMsg[2], MESSAGE )
SKIP
ENDDO

USE
END

SELECT( tSelect )

RETURN( NIL )


tlv vc tenha que coocar no inicio do sistema rddsetdefault('dbfcdx').
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Preciso de ajuda para converter para CDX

Mensagempor gilsonpaulo » 21 Jun 2008 23:01

Vou testar e assim que completar a migracao posto o resultado, desde ja agradeço antecipadamente a ajuda.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 13 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro