Página 1 de 1

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:09
por jvcfigueiredo
boa noite
estou tentando compilar esse codigo mas está dando erro sou novo em programação, se alguem puder me ajudar

Código: Selecionar todos

// Arquivo: cadastro.prg

#include "inkey.ch" // Para teclas
#include "setcurs.ch" // Para o cursor

REQUEST DBFCDX // Para usar o driver de índice CDX

//----------------------------------------------------------------------------//
FUNCTION Main()
//----------------------------------------------------------------------------//

   LOCAL nOpcao := 0

   SETMODE( 25, 80 ) // Define modo de tela
   SETCURSOR( SC_NONE ) // Oculta o cursor padrão

   // Abre ou cria o arquivo de dados
   IF ! ( "DADOS" $ SET( _SET_DBF_AREAS ) ) // Verifica se a area de trabalho DADOS esta aberta
      IF ! FILE( "DADOS.DBF" ) // Se o arquivo nao existe, cria
         DBCREATE( "DADOS.DBF", { ;
                  { "NOME",    "C", 50, 0 }, ;
                  { "CPF",     "C", 14, 0 }, ;
                  { "BAIRRO",  "C", 50, 0 }, ;
                  { "RUA",     "C", 50, 0 }, ;
                  { "NUMERO",  "N",  6, 0 } } )
         USE DADOS NEW ALIAS DADOS EXCLUSIVE VIA "DBFCDX" // Abre o arquivo recem criado
         INDEX ON CPF TAG CPF UNIQUE TO DADOS ALIAS DADOS // Cria indice por CPF
         INDEX ON NOME TAG NOME TO DADOS ALIAS DADOS      // Cria indice por Nome
      ELSE
         USE DADOS NEW ALIAS DADOS VIA "DBFCDX" // Abre o arquivo existente
         // Verifica se os indices existem, se nao, cria
         IF ! INDEXKEY(1) == "CPF"
             INDEX ON CPF TAG CPF UNIQUE TO DADOS ALIAS DADOS
         ENDIF
         IF ! INDEXKEY(2) == "NOME"
             INDEX ON NOME TAG NOME TO DADOS ALIAS DADOS
         ENDIF
      ENDIF
   ENDIF

   DO WHILE nOpcao != 5
      CLS // Limpa a tela
      @ 02, 25 SAY "--- SISTEMA DE CADASTRO SIMPLES ---" COLOR "W+/B"
      @ 04, 30 SAY "1. Cadastrar"
      @ 05, 30 SAY "2. Pesquisar"
      @ 06, 30 SAY "3. Alterar Cadastro"
      @ 07, 30 SAY "4. Excluir Cadastro"
      @ 08, 30 SAY "5. Sair"
      @ 10, 25 SAY "Escolha uma opção: " GET nOpcao PICTURE "9" VALID ( nOpcao >= 1 .AND. nOpcao <= 5 )
      READ

      DO CASE
         CASE nOpcao == 1
            Cadastrar()
         CASE nOpcao == 2
            Pesquisar()
         CASE nOpcao == 3
            AlterarCadastro()
         CASE nOpcao == 4
            ExcluirCadastro()
      ENDCASE

   ENDDO

   CLOSE ALL // Fecha todos os arquivos abertos
   CLS
   @ MAXROW()/2, MAXCOL()/2 - 10 SAY "Obrigado por usar!"
   WAIT ""

RETURN NIL

//----------------------------------------------------------------------------//

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:14
por Jairo Maia
Olá jvcfigueiredo,

Que tipo de erro? Seja mais específico. É na compilação? Ou compila e dá erro ao rodar? etc...

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:25
por Itamar M. Lins Jr.
Olá!

Bem vindo ao forum!
Cadê o erro ?
Não sei. Mas não pega código de IA, e cola sem informar(não sei se foi de IA)
SET( _SET_DBF_AREAS ) -> Esse é novidade. Nunca vi.

Saudações,
Itamar M. Lins Jr.

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:27
por jvcfigueiredo
Eu peguei algumas coisas da IA para me ajudar, como disse sou novo em programação, ao tentar compilar ele dá erro

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:29
por jvcfigueiredo
Se alguém puder me ajudar é um cadastro bem simples mesmo em harbour

Projeto Cadastro Simples

Enviado: 14 Jun 2025 18:53
por JoséQuintas
Entendi menos ainda, se cadastrar, e já enviar mensagem particular pedindo ajuda.

Código: Selecionar todos

IF ! ( "DADOS" $ SET( _SET_DBF_AREAS ) ) // Verifica se a area de trabalho DADOS esta aberta
Nunca vi isso, não sei se existe.
Se o fonte chama outras rotinas, e as rotinas não existem, vai dar erro na compilação.
É normal isso.
Ou cria as rotinas, ou não faz chamada para o que não existe.

Código: Selecionar todos

 DO CASE
	         CASE nOpcao == 1
	            Cadastrar()
	         CASE nOpcao == 2
	            Pesquisar()
	         CASE nOpcao == 3
	            AlterarCadastro()
	         CASE nOpcao == 4
	            ExcluirCadastro()
	      ENDCASE

Projeto Cadastro Simples

Enviado: 14 Jun 2025 19:00
por jvcfigueiredo
É que sou novo em programação, ai peguei algumas coisas de IA para me ajudar. ,mas ao tentar compilar dar erro
seria um cadastro bem simples mesmo em harbour

Projeto Cadastro Simples

Enviado: 14 Jun 2025 19:04
por Itamar M. Lins Jr.
Olá!
É que sou novo em programação, ai peguei algumas coisas de IA para me ajudar. ,mas ao tentar compilar dar erro
seria um cadastro bem simples mesmo em harbour
Tem tantos prontos. Veja algum livro antigo, ou procure os fontes prontos na internet.
Assim, vc não vai aprender, pq será nós aqui consertando IA. E vamos ficar correndo atraz de IA e de vc e é muito cansativo.
Vc precisa colocar o erro e dizer pq não entendeu. O que vc não entendeu ?
Não é ficar colocando código de IA pra consertamos sem vc entender nada.
Tem coisa ai que não existe. Vc precisa ser mais específico. Tudo de vez, vc não vai aprender com esse pequeno código.
Faça perguntas simples.

Saudações,
Itamar M. Lins Jr.

Projeto Cadastro Simples

Enviado: 14 Jun 2025 22:28
por JoséQuintas
Talvez outras questões:

Porque harbour ?
O que exatamente instalou pra testar ?

Projeto Cadastro Simples

Enviado: 14 Jun 2025 22:45
por jvcfigueiredo
Bom eu sempre gostei de sistemas antigos, uma vez fiz estágio em uma empresa que usava o clipper, porém como não entendia muito mal sabia o que era, na verdade ainda não sei, estou tentando usar a IA para poder fazer um sistema de cadastro simples, gostei do harbour pois é um avanço do clipper, já fiz alguns programinhas em BAT, mas queria algo mais complexo, estou usando IA sim pois nem entendo muita coisa, seria mais uma curiosidade do que realmente aprender ponto a ponto até pq não teria muito tempo pra isso.

Projeto Cadastro Simples

Enviado: 14 Jun 2025 23:50
por Jairo Maia
Tente então compilar esse exemplo, e estude a partir dele, ok?

NOTA: Se você pegou esse exemplo por IA, provavelmente também tem as funções: Cadastrar(), Pesquisar(), AlterarCadastro() e ExcluirCadastro(), elas precisam ser colocadas no arquivo do exemplo.

Código: Selecionar todos

// Arquivo: cadastro.prg

#include "inkey.ch" // Para teclas
#include "setcurs.ch" // Para o cursor

REQUEST HB_CODEPAGE_PT850  // Coloca a CodePage em OEM Português
REQUEST HB_LANG_PT  // Coloca as mensagens de erros em Português

REQUEST DBFCDX // Para usar o driver de índice CDX

//----------------------------------------------------------------------------//
FUNCTION Main()
//----------------------------------------------------------------------------//

   LOCAL nOpcao := 0
   
   SET SCOREBOARD OFF  // habilita uso da linha 0
 
   SET AUTOPEN ON      // abre automaticamente o indice de mesmo nome do dbf (sem a extensão)
   SET AUTORDER TO 1   // aloca a ordem 1 como corrente, se omitir, o padrão é 0 (zero)
   
   SET DATE BRIT  // define datas no formato "britanico/brasileiro"
   
   SET CENTURY ON  // Habilita data com ano de 4 dígitos
   
   RDDSETDEFAULT( "DBFCDX" )
   DBSETDRIVER( "DBFCDX" )
   
   HB_LANGSELECT( "PT" )
   HB_CDPSELECT( "PT850" )
   
   SETMODE( 25, 80 ) // Define modo de tela

   IF ! FILE( "DADOS.DBF" ) // Se o arquivo nao existe, cria
   
      DBCREATE( "DADOS.DBF", { ;
               { "NOME",    "C", 50, 0 }, ;
               { "CPF",     "C", 14, 0 }, ;
               { "BAIRRO",  "C", 50, 0 }, ;
               { "RUA",     "C", 50, 0 }, ;
               { "NUMERO",  "N",  6, 0 } } )
               
      USE DADOS NEW ALIAS DADOS EXCLUSIVE VIA "DBFCDX" // Abre o arquivo recem criado
      
      INDEX ON ( CPF ) TAG CPF TO "DADOS"  // Cria indice por CPF
      
      INDEX ON ( NOME ) TAG NOME TO "DADOS"  // Cria indice por Nome
      
   ELSEIF SELECT( "DADOS" ) = 0
   
      USE ( "DADOS.DBF" ) ALIAS "DADOS" EXCLUSIVE NEW
      SET INDEX TO "DADOS"
   
   ENDIF

   DO WHILE nOpcao != 5
   
      CLS // Limpa a tela
      
      @ 02, 25 SAY "--- SISTEMA DE CADASTRO SIMPLES ---" COLOR "W+/B"
      @ 04, 30 SAY "1. Cadastrar"
      @ 05, 30 SAY "2. Pesquisar"
      @ 06, 30 SAY "3. Alterar Cadastro"
      @ 07, 30 SAY "4. Excluir Cadastro"
      @ 08, 30 SAY "5. Sair"
      @ 10, 25 SAY "Escolha uma opção: " GET nOpcao PICTURE "9" VALID ( nOpcao >= 1 .AND. nOpcao <= 5 )
      READ

      DO CASE
         CASE nOpcao == 1
            Hb_Alert( "Colocar a função Cadastrar()")
            //Cadastrar()
         CASE nOpcao == 2
            Hb_Alert( "Colocar a função Pesquisar()")
            //Pesquisar()
         CASE nOpcao == 3
            Hb_Alert( "Colocar a função AlterarCadastro()")
            //AlterarCadastro()
         CASE nOpcao == 4
            Hb_Alert( "Colocar a função ExcluirCadastro()")
            //ExcluirCadastro()
      ENDCASE

   ENDDO

   CLOSE ALL // Fecha todos os arquivos abertos
   CLS
   @ MAXROW()/2, MAXCOL()/2 - 10 SAY "Obrigado por usar!"
   WAIT ""

RETURN NIL

//----------------------------------------------------------------------------//

Projeto Cadastro Simples

Enviado: 15 Jun 2025 11:29
por sygecom
De uma olhada nesse documento do Vladimir que ajuda muito para quem está iniciando.
https://sagierp.com.br/devel/aulas/Harbour2ed.pdf