Página 1 de 1

Preciso de ajuda para converter para CDX

Enviado: 15 Jun 2008 14:17
por gilsonpaulo
Ganhei umas funções prontas e estou com dificuldade para converter elas para cdx.

Se alguem puder me ajudar desde ja agradeço.

Código: Selecionar todos

#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

Re: Preciso de ajuda para converter para CDX

Enviado: 15 Jun 2008 17:35
por sygecom
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:
https://pctoledo.org/col_dic.htm#ind7

Re: Preciso de ajuda para converter para CDX

Enviado: 16 Jun 2008 09:34
por gvc
Vc postou um código que não tem nada de indexação.
Aonde esta o módulo que cria os arquivos de indices?

Re: Preciso de ajuda para converter para CDX

Enviado: 20 Jun 2008 08:43
por gilsonpaulo
Desculpe, aqui esta onde se faz a indexação.

Código: Selecionar todos

#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
*============================================

Re: Preciso de ajuda para converter para CDX

Enviado: 20 Jun 2008 11:11
por gvc
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.

Código: Selecionar todos

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 )

Re: Preciso de ajuda para converter para CDX

Enviado: 20 Jun 2008 19:04
por gilsonpaulo
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.

Re: Preciso de ajuda para converter para CDX

Enviado: 21 Jun 2008 13:12
por gvc

Código: Selecionar todos

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').

Re: Preciso de ajuda para converter para CDX

Enviado: 21 Jun 2008 23:01
por gilsonpaulo
Vou testar e assim que completar a migracao posto o resultado, desde ja agradeço antecipadamente a ajuda.