Fatal C3049
Moderador: Moderadores
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Fatal C3049
estou com um problema quando vou compilar o arquivo funcoes1.prg do meu sistema, acontece o seguinte:
quando digito: clipper funcoes1 <ENTER>
da a seguinte mensagem: Fatal C3049 String Space Exausted
já me disseram que é o tamanho do arquivo, mas ele só tem 500 linhas
uso a visual lib
no cabeçalho do PRG está as seguintes linhas:
#include "clipper.ch"
#include "visual_lib2ex"
set date brit
set wrap on
set scor off
se tiro essas linhas consigo compilar
alguém pode me ajudar?
desde já agradeço
quando digito: clipper funcoes1 <ENTER>
da a seguinte mensagem: Fatal C3049 String Space Exausted
já me disseram que é o tamanho do arquivo, mas ele só tem 500 linhas
uso a visual lib
no cabeçalho do PRG está as seguintes linhas:
#include "clipper.ch"
#include "visual_lib2ex"
set date brit
set wrap on
set scor off
se tiro essas linhas consigo compilar
alguém pode me ajudar?
desde já agradeço
Piter Galdiano
Programador Clipper
Programador Clipper
Prezado Piter
O que é esse CLIPPER.CH ?
E essa "visual_lib2ex" ? Não seria "visual2.ch"
O Clipper com certeza não reconhecerá esse nome de arquivo "visual_lib2ex"
Tente trocar o nome para visual2.ch , se bem que a Visual Lib já vem com ela, dê um olhada nos seus includes e veja se já não tem ela lá.
Até logo.
Marcelo
O que é esse CLIPPER.CH ?
E essa "visual_lib2ex" ? Não seria "visual2.ch"
O Clipper com certeza não reconhecerá esse nome de arquivo "visual_lib2ex"
Tente trocar o nome para visual2.ch , se bem que a Visual Lib já vem com ela, dê um olhada nos seus includes e veja se já não tem ela lá.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
visual lib
o arquivo é o da visual lib, está certo, coloquei aquele nome porque não me lembrava.
Os includes estão certos porém não funciona.
Os includes estão certos porém não funciona.
Piter Galdiano
Programador Clipper
Programador Clipper
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Bom dia Vc Usa todos as rotinas contidas no include clipper.ch.
Se não usar copie somente as que vc use para um novo include tipo clipper2.ch e altere seu prg.
Se não usar copie somente as que vc use para um novo include tipo clipper2.ch e altere seu prg.
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Bom, as soluções dos amigos são válidas, mas primeiro vamos entender o problema:
Este problema é muito no Clipper quando a versão dele está abaixo da 5.2e, isto não era para acontecer nesta versão, mas no meu caso eu uso o Clipper 5.2e e tenho este mesmo problema.
Isto acontece quando na compilação, o clipper vai montando o comando para gerar o .OBJ, quando esta memória que fica com o comando armazenado antes dele ir para o .OBJ, mas esta memória tem um certo limite e quando ele estoura temos o erro "STRING SPACE EXAUSTED".
No caso de declararmos arrays muitos granades tipo: wag:={"1","2","3",....."34344534"}, quando compilamos vamos nos deparar com este erro, para resolver temos que rever os fontes e colocar assim
WAG:={}
AADD(WAG,"1")
AADD(WAG,"2")
AADD(WAG,"3")
....
AADD(WAG,"34344534")
Ai o problema acaba, pois ao inves do compilador montar todo o array para jogar para o arquivo .OBJ ele gera um array vazio e vai jogando as chamadas de funções uma a uma, como a cada linha ele esvazia o buffer da memória, ai não temos este erro.
Este erro acontece não só neste momento, tente por exemplo declarar uma variável string e colocar um valor bem grande de dados no PRG, este erro provavelmente irá acontecer.
Ter boa quantidade de memória convencional ajuda, mas não resolve, se quiser poste seu código, com certeza iremos ajudar.
Este problema é muito no Clipper quando a versão dele está abaixo da 5.2e, isto não era para acontecer nesta versão, mas no meu caso eu uso o Clipper 5.2e e tenho este mesmo problema.
Isto acontece quando na compilação, o clipper vai montando o comando para gerar o .OBJ, quando esta memória que fica com o comando armazenado antes dele ir para o .OBJ, mas esta memória tem um certo limite e quando ele estoura temos o erro "STRING SPACE EXAUSTED".
No caso de declararmos arrays muitos granades tipo: wag:={"1","2","3",....."34344534"}, quando compilamos vamos nos deparar com este erro, para resolver temos que rever os fontes e colocar assim
WAG:={}
AADD(WAG,"1")
AADD(WAG,"2")
AADD(WAG,"3")
....
AADD(WAG,"34344534")
Ai o problema acaba, pois ao inves do compilador montar todo o array para jogar para o arquivo .OBJ ele gera um array vazio e vai jogando as chamadas de funções uma a uma, como a cada linha ele esvazia o buffer da memória, ai não temos este erro.
Este erro acontece não só neste momento, tente por exemplo declarar uma variável string e colocar um valor bem grande de dados no PRG, este erro provavelmente irá acontecer.
Ter boa quantidade de memória convencional ajuda, mas não resolve, se quiser poste seu código, com certeza iremos ajudar.
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
ai vai meu código
Editado por moderador evolver: Por favor quando usar codigos grandes use o botão code pra abrir e fechar senão eu acabo com meu botão de rolagem!
Código: Selecionar todos
#Include "Inkey.ch"
#Include "Visual2.ch"
Request DBFCDX
RddSetDefault("DBFCDX")
DbSetDriver("DBFCDX")
Set Scor Off
Set Dele On
Set Date Brit
Function fCadCli
Local nButton := 1
Local nButton1 := 1
Local nOpcao := 0
Local aEnv := SavEnv(01,00,24,79) //VL-Salva o ambiente
Local aButton := NewButton()
Local nOpcao1 := 0
Local oTbr := TBrowseDB( 04, 04, 19, 74 )
Local oTbc1 := TBColumnNew( "C¢digo" , { || cadcli->Codigo } )
Local oTbc2 := TBColumnNew( "Cliente" , { || cadcli->Cliente } )
Local aWst
Local lExt := .F.
Local DigNome := .T.
Local nInd, nLin, nCol, nTbrLin, nTbrCol
Local MouseESC := .F.
Public cCodigo := Space (05) , cCliente := Space (45) ,;
cConjuge := Space (30) , cCPFCNPJ := Space (19) ,;
cInscEst := Space (20) , cEmail := Space (35) ,;
cFone := Space (15) , cFax := Space (15) ,;
cCelular := Space (15) , cEndereco := Space (30) ,;
cCidade := Space (30) , cBairro := Space (22) ,;
cEstado := Space (02) , cCEP := Space (10) ,;
dDataCad := Date() , cObs1 := Space (60) ,;
cObs2 := Space (60) , cObs3 := Space (60) ,;
cCondicao1 := Space (06) , cForma1 := Space (02)
Frame(02,59,18,79,,,,,"B/W")
AddButton(aButton,04,61,17,"&Incluir" ,"Incluir produto")
AddButton(aButton,07,61,17,"&Alterar" ,"Alterar produto cadastrado")
AddButton(aButton,10,61,17,"&Excluir" ,"Excluir produto cadastrado")
AddButton(aButton,13,61,17,"&Consultar","Pesquisa produto cadastrado")
AddButton(aButton,16,61,17,"&Fechar" ,"Sair dos botäes de comando",.T.)
nOpcao := ProcButton(aButton,1)
DrawFn(07,"Pesquisa")
SetKey(K_F7,{||fPesquisa()})
SetKeyMouse(K_F7,{24,24,48,55})
If nOpcao == 1
Clrted()
SetColor("N/W,N*/W,,,N*/W")
SetCursor(1)
SetKey(K_SH_F10,{||nButton1 := 2,VLKeyboard(Chr(K_ESC)+Chr(K_ENTER))})
SetKeyMouse(K_SH_F10,{08,08,42,57})
Frame(02,00,17,79,"Cadastro de Clientes",2,,,"B/W")
Linbutton2(LB_SHOW,NB_GRAY,15,nButton1,2,"&Salvar","Gravar cliente","&Cancelar","Cancela inclusÆo")
fNovoCli()
@04,02 say "C¢digo...:" Get cCodigo Picture "@!" When DwnMsg("C¢digo do cliente")
@05,45 say "Data Cad.:" Get dDataCad When DwnMsg("Data do cadastro")
Clear Gets
@04,20 say "Cliente....:" Get cCliente Picture "@!" When DwnMsg("Nome do cliente") Valid ! Empty(cCliente)
@05,02 Say "Conjuge..:" Get cConjuge Picture "@!" When DwnMsg("Conjuge do cliente")
@06,02 say "Endere‡o.:" Get cEndereco Picture "@!" When DwnMsg("Endere‡o do cliente")
@06,45 say "Bairro...:" Get cBairro Picture "@!" When DwnMsg("Bairro do cliente")
@07,02 say "Cidade...:" Get cCidade Picture "@!" When DwnMsg("Cidade do cliente")
@07,45 Say "Estado...:" Get cEstado Picture "@!" When DwnMsg("Estado do cliente") Valid ValUF(cEstado)
@07,60 say "CEP...:" Get cCEP Picture "99.999-999" When DwnMsg("CEP da cidade")
@08,02 say "Fone.....:" Get cFone Picture "@!" When DwnMsg("Fone do cliente")
@08,30 say "Fax.:" Get cFax Picture "@!" When DwnMsg("Fax do cliente")
@08,53 say "Celular.:" Get cCelular When DwnMsg("Celular do cliente")
@09,02 say "E-mail...:" Get cEmail Picture "@" When DwnMsg("E-Mail do cliente")
@09,48 say "C.Pag.:" Get cCondicao1 Picture "@!" When DwnMsg("Condi‡Æo de pagamento")
@10,02 say "CPF/CNPJ.:" Get cCPFCNPJ Picture "999.999.999/9999-99" When DwnMsg("CPF ou CNPJ do cliente") Valid ValCNPJCPF(cCPFCNPJ)
@10,34 say "Insc.Est.:" Get cInscEst Picture "@!" When DwnMsg("Inscri‡Æo estadual do cliente") Valid ValInscEst(cEstado,cInscEst)
@10,67 say "F.Pag.:" Get cForma1 Picture "@!" When DwnMsg("Forma de pagamento")
@11,02 say "Observ...:" Get cObs1 Picture "@!" When DwnMsg("Observa‡Æo 1")
@12,13 Get cObs2 Picture "@!" When DwnMsg("Observa‡Æo 2")
@13,13 Get cObs3 Picture "@!" When DwnMsg("Observa‡Æo 3")
Read
Set Key K_SH_F10 To
SetKeyMouse(K_SH_F10,{})
nOpcao1 := Linbutton2(LB_PROC,NB_GRAY,15,nButton1,2,"&Salvar","Gravar cliente","&Cancelar","Cancela inclusÆo")
If nOpcao1 == 1
Use CadCli Alias cadcli Shared New
BloqArq()
cadcli->(DbAppend())
Repla cadcli->Codigo With cCodigo ,;
cadcli->Cliente With cCliente ,;
cadcli->Endereco With cEndereco ,;
cadcli->Conjuge With cConjuge ,;
cadcli->CPFCNPJ With cCPFCNPJ ,;
cadcli->Inscricao With cInscEst ,;
cadcli->Email With cEmail ,;
cadcli->Fone With cFone ,;
cadcli->Celular With cCelular ,;
cadcli->Fax With cFax ,;
cadcli->Cidade With cCidade ,;
cadcli->Bairro With cBairro ,;
cadcli->Estado With cEstado ,;
cadcli->DataCad With dDataCad ,;
cadcli->Conjuge With cConjuge ,;
cadcli->CEP With cCEP ,;
cadcli->Obs1 With cObs1 ,;
cadcli->Obs2 With cObs2 ,;
cadcli->Obs3 With cObs3
Desbloq()
Close cadcli
Else
RstEnv(aEnv)
EndIf
EndIf
If nOpcao == 2
Use CadCli Alias cadcli Shared New
Set Index To CadCli
Set Order To 2
cadcli->(DbGoTop())
If cadcli->(Eof())
Tone(900,5)
nMsgBcoVaz := MsgBox3d1("Banco de dados vazio!")
lExt := .T.
MouseEsc := .F.
DigNome := .F.
Close cadcli
EndIf
If DigNome == .T.
MsgBox3D(,"Digite as letras iniciais (ENTER=Todos)",,"W+/B","B/W")
SetCursor(1)
SetColor("N/W,N*/W,,,N*/W")
cCliente := Space (40)
@12,20 Get cCliente Pict '@!'
Read
nNumDig := Len(AllTrim(cCliente))
Set Order To 2
Locate For AllTrim(cadcli->Cliente) = Subs(cCliente,1,nNumDig)
If cadcli->(Eof()) ; cadcli->(DbGoTop()) ; EndIf
SetCursor(0)
If LastKey() == K_ESC
lExt := .T.
MouseEsc := .F.
Close cadcli
EndIf
EndIf
oTbr:colSep := " ³ "
oTbr:headSep := "Ä"
oTbr:colorSpec := "N*/W,W+/B,R*/W,W+/R"
oTbr:addColumn( oTbc1 )
oTbr:addColumn( oTbc2 )
Win( 03, 03, 20, 75, "Escolha o cliente a ser alterado")
SetColor( "N*/W,W+/B" )
@ 23, 00 SAY PADL( "[Esc] Sa¡da", 80 ) COLOR "R*/W" // sair pelo mouse
@ 23, 01 SAY "[PgUp]" COLOR "R*/W" // PgUp pelo mouse
@ 23, 08 SAY "[PgDn]" COLOR "R*/W" // PgDn pelo mouse
@ 23, 16 SAY "[" + CHR( 24 ) + "]" COLOR "R*/W" // Sobe pelo mouse
@ 23, 20 SAY "[" + CHR( 25 ) + "]" COLOR "R*/W" // Desce pelo mouse
@ 23, 24 SAY "[" + CHR( 27 ) + "]" COLOR "R*/W" // Esq. pelo mouse
@ 23, 28 SAY "[" + CHR( 26 ) + "]" COLOR "R*/W" // Dir. pelo mouse
WHILE !lExt
VLMouseOff()
WHILE !oTbr:stabilize() ; END
VLMouseOn()
aWSt := WaitState() // substitui o INKEY()
DO CASE
CASE aWSt:wsType == WAIT_KEYPRESS // o evento foi uma tecla
DO CASE // manipula‡Æo padrÆo de teclas
CASE aWst:wsKey == K_DOWN ; oTbr:down()
CASE aWst:wsKey == K_UP ; oTbr:up()
CASE aWst:wsKey == K_PGDN ; oTbr:pageDown()
CASE aWst:wsKey == K_PGUP ; oTbr:pageUp()
CASE aWst:wsKey == K_CTRL_PGUP ; oTbr:goTop()
CASE aWst:wsKey == K_CTRL_PGDN ; oTbr:goBottom()
CASE aWst:wsKey == K_RIGHT ; oTbr:right()
CASE aWst:wsKey == K_LEFT ; oTbr:left()
CASE aWst:wsKey == K_HOME ; oTbr:home()
CASE aWst:wsKey == K_END ; oTbr:end()
CASE aWst:wsKey == K_CTRL_LEFT ; oTbr:panLeft()
CASE aWst:wsKey == K_CTRL_RIGHT ; oTbr:panRight()
CASE aWst:wsKey == K_CTRL_HOME ; oTbr:panHome()
CASE aWst:wsKey == K_CTRL_END ; oTbr:panEnd()
Case aWst:wsKey == K_ENTER
cCodigo := cadcli->Codigo
cCliente := cadcli->Cliente
cConjuge := cadcli->Conjuge
cCPFCNPJ := cadcli->CPFCNPJ
cInscEst := cadcli->Inscricao
cEmail := cadcli->Email
cFone := cadcli->Fone
cFax := cadcli->Fax
cCelular := cadcli->Celular
cEndereco := cadcli->Endereco
cCidade := cadcli->Cidade
cBairro := cadcli->Bairro
cEstado := cadcli->Estado
dDataCad := cadcli->DataCad
cCEP := cadcli->CEP
cObs1 := cadcli->Obs1
cObs2 := cadcli->Obs2
cObs3 := cadcli->Obs3
Clrted()
lExt := .T.
MouseESC := .T.
CASE aWst:wsKey == K_ESC
lExt := .T.
Close cadcli
Clrted()
MouseESC := .F.
ENDCASE
// abaixo - evento MOUSEDOWN - o usu rio clicou com o mouse
CASE aWst:wsType == WAIT_MOUSEDOWN .AND. aWst:wsRow == 23 // na linha 23
IF aWst:wsCol >= 68 .AND. aWst:wsCol <= 78 // clicou em "[Esc] Sa¡da"
lExt := .T.
Close cadcli
MouseEsc := .F.
Clrted()
ELSEIF aWst:wsCol >= 01 .AND. aWst:wsCol <= 06 // clicou em "[PgUp]"
oTbr:pageUp()
ELSEIF aWst:wsCol >= 08 .AND. aWst:wsCol <= 13 // clicou em "[PgDn]"
oTbr:pageDown()
ELSEIF aWst:wsCol >= 16 .AND. aWst:wsCol <= 18 // clicou em "Sobe"
oTbr:up()
ELSEIF aWst:wsCol >= 20 .AND. aWst:wsCol <= 22 // clicou em "Desce"
oTbr:down()
ELSEIF aWst:wsCol >= 24 .AND. aWst:wsCol <= 26 // clicou em "Esquerda"
oTbr:left()
ELSEIF aWst:wsCol >= 28 .AND. aWst:wsCol <= 30 // clicou em "Direita"
oTbr:right()
ENDIF
CASE aWSt:wsType == WAIT_MOUSEDOWN .AND.; // c¢digo para habilitar cliques nas c‚lulas do tbrowse
aWSt:wsRow >= 6 .AND. aWSt:wsRow <= 20 .AND.;
aWSt:wsCol >= 3 .AND. aWSt:wsCol <= 75
nLin := aWSt:wsRow
nCol := aWSt:wsCol
nTbrLin := oTbr:rowPos
nTbrCol := oTbr:colPos
oTbr:deHilite()
oTbr:rowPos := nTbrLin + nLin - ROW() // Acerta linha
VLMouseOff()
FOR nInd = oTbr:rightVisible TO oTbr:leftVisible STEP -1
oTbr:colPos := nInd
oTbr:Hilite()
IF COL() - 1 <= nCol
oTbr:Hilite()
EXIT
ENDIF
NEXT
oTbr:refreshCurrent()
VLMouseOn()
ENDCASE
END
If LastKey() != K_ESC .And. MouseESC == .T.
Clrted()
SetColor("N/W,N*/W,,,N*/W")
SetCursor(1)
SetKey(K_SH_F10,{||nButton1 := 2,VLKeyboard(Chr(K_ESC)+Chr(K_ENTER))})
SetKeyMouse(K_SH_F10,{08,08,42,57})
Frame(02,00,17,79,"Altera‡Æo de Clientes",2,,,"B/W")
Linbutton2(LB_SHOW,NB_GRAY,15,nButton1,2,"&Salvar","Gravar altera‡Æo","&Cancelar","Cancela altera‡Æo")
@04,02 say "C¢digo...:" Get cCodigo Picture "@!" When DwnMsg("C¢digo do cliente")
@05,45 say "Data Cad.:" Get dDataCad When DwnMsg("Data do cadastro")
Clear Gets
@04,20 say "Cliente....:" Get cCliente Picture "@!" When DwnMsg("Nome do cliente") Valid ! Empty(cCliente)
@05,02 Say "Conjuge..:" Get cConjuge Picture "@!" When DwnMsg("Conjuge do cliente")
@06,02 say "Endere‡o.:" Get cEndereco Picture "@!" When DwnMsg("Endere‡o do cliente")
@06,45 say "Bairro...:" Get cBairro Picture "@!" When DwnMsg("Bairro do cliente")
@07,02 say "Cidade...:" Get cCidade Picture "@!" When DwnMsg("Cidade do cliente")
@07,45 Say "Estado...:" Get cEstado Picture "@!" When DwnMsg("Estado do cliente") Valid ValUF(cEstado)
@07,60 say "CEP...:" Get cCEP Picture "99.999-999" When DwnMsg("CEP da cidade")
@08,02 say "Fone.....:" Get cFone Picture "@!" When DwnMsg("Fone do cliente")
@08,30 say "Fax.:" Get cFax Picture "@!" When DwnMsg("Fax do cliente")
@08,53 say "Celular.:" Get cCelular When DwnMsg("Celular do cliente")
@09,02 say "E-mail...:" Get cEmail Picture "@" When DwnMsg("E-Mail do cliente")
@10,02 say "CPF/CNPJ.:" Get cCPFCNPJ Picture "999.999.999/9999-99" When DwnMsg("CPF ou CNPJ do cliente") Valid ValCNPJCPF(cCPFCNPJ)
@10,35 say "Insc.Est.:" Get cInscEst Picture "@!" When DwnMsg("Inscri‡Æo estadual do cliente") Valid ValInscEst(cEstado,cInscEst)
@11,02 say "Observ...:" Get cObs1 Picture "@!" When DwnMsg("Observa‡Æo 1")
@12,13 Get cObs2 Picture "@!" When DwnMsg("Observa‡Æo 2")
@13,13 Get cObs3 Picture "@!" When DwnMsg("Observa‡Æo 3")
Read
Set Key K_SH_F10 To
SetKeyMouse(K_SH_F10,{})
nOpcao1 := Linbutton2(LB_PROC,NB_GRAY,15,nButton1,2,"&Salvar","Gravar altera‡Æo","&Cancelar","Cancela altera‡Æo")
If nOpcao1 == 1
BloqReg()
Repla cadcli->Cliente With cCliente ,;
cadcli->Endereco With cEndereco ,;
cadcli->Conjuge With cConjuge ,;
cadcli->CPFCNPJ With cCPFCNPJ ,;
cadcli->Inscricao With cInscEst ,;
cadcli->Email With cEmail ,;
cadcli->Fone With cFone ,;
cadcli->Celular With cCelular ,;
cadcli->Fax With cFax ,;
cadcli->Cidade With cCidade ,;
cadcli->Bairro With cBairro ,;
cadcli->Estado With cEstado ,;
cadcli->Conjuge With cConjuge ,;
cadcli->CEP With cCEP ,;
cadcli->Obs1 With cObs1 ,;
cadcli->Obs2 With cObs2 ,;
cadcli->Obs3 With cObs3
Desbloq()
Close cadcli
Else
Close cadcli
RstEnv(aEnv)
EndIf
EndIf
EndIf
If nOpcao == 3
Use CadCli Alias cadcli Shared New
Set Index To CadCli
Set Order To 2
cadcli->(DbGoTop())
If cadcli->(Eof())
Tone(900,5)
nMsgBcoVaz := MsgBox3d1("Banco de dados vazio!")
lExt := .T.
MouseEsc := .F.
DigNome := .F.
Close cadcli
EndIf
If DigNome == .T.
MsgBox3D(,"Digite as letras iniciais (ENTER=Todos)",,"W+/B","B/W")
SetCursor(1)
SetColor("N/W,N*/W,,,N*/W")
cCliente := Space (40)
@12,20 Get cCliente Pict '@!'
Read
nNumDig := Len(AllTrim(cCliente))
Set Order To 2
Locate For AllTrim(cadcli->Cliente) = Subs(cCliente,1,nNumDig)
If cadcli->(Eof()) ; cadcli->(DbGoTop()) ; EndIf
SetCursor(0)
If LastKey() == K_ESC
lExt := .T.
MouseEsc := .F.
Close cadcli
EndIf
EndIf
oTbr:colSep := " ³ "
oTbr:headSep := "Ä"
oTbr:colorSpec := "N*/W,W+/B,R*/W,W+/R"
oTbr:addColumn( oTbc1 )
oTbr:addColumn( oTbc2 )
Win( 03, 03, 20, 75, "Escolha o cliente a ser exclu¡do")
SetColor( "N*/W,W+/B" )
@ 23, 00 SAY PADL( "[Esc] Sa¡da", 80 ) COLOR "R*/W" // sair pelo mouse
@ 23, 01 SAY "[PgUp]" COLOR "R*/W" // PgUp pelo mouse
@ 23, 08 SAY "[PgDn]" COLOR "R*/W" // PgDn pelo mouse
@ 23, 16 SAY "[" + CHR( 24 ) + "]" COLOR "R*/W" // Sobe pelo mouse
@ 23, 20 SAY "[" + CHR( 25 ) + "]" COLOR "R*/W" // Desce pelo mouse
@ 23, 24 SAY "[" + CHR( 27 ) + "]" COLOR "R*/W" // Esq. pelo mouse
@ 23, 28 SAY "[" + CHR( 26 ) + "]" COLOR "R*/W" // Dir. pelo mouse
WHILE !lExt
VLMouseOff()
WHILE !oTbr:stabilize() ; END
VLMouseOn()
aWSt := WaitState() // substitui o INKEY()
DO CASE
CASE aWSt:wsType == WAIT_KEYPRESS // o evento foi uma tecla
DO CASE // manipula‡Æo padrÆo de teclas
CASE aWst:wsKey == K_DOWN ; oTbr:down()
CASE aWst:wsKey == K_UP ; oTbr:up()
CASE aWst:wsKey == K_PGDN ; oTbr:pageDown()
CASE aWst:wsKey == K_PGUP ; oTbr:pageUp()
CASE aWst:wsKey == K_CTRL_PGUP ; oTbr:goTop()
CASE aWst:wsKey == K_CTRL_PGDN ; oTbr:goBottom()
CASE aWst:wsKey == K_RIGHT ; oTbr:right()
CASE aWst:wsKey == K_LEFT ; oTbr:left()
CASE aWst:wsKey == K_HOME ; oTbr:home()
CASE aWst:wsKey == K_END ; oTbr:end()
CASE aWst:wsKey == K_CTRL_LEFT ; oTbr:panLeft()
CASE aWst:wsKey == K_CTRL_RIGHT ; oTbr:panRight()
CASE aWst:wsKey == K_CTRL_HOME ; oTbr:panHome()
CASE aWst:wsKey == K_CTRL_END ; oTbr:panEnd()
Case aWst:wsKey == K_ENTER
cCodigo := cadcli->Codigo
cCliente := cadcli->Cliente
cConjuge := cadcli->Conjuge
cCPFCNPJ := cadcli->CPFCNPJ
cInscEst := cadcli->Inscricao
cEmail := cadcli->Email
cFone := cadcli->Fone
cFax := cadcli->Fax
cCelular := cadcli->Celular
cEndereco := cadcli->Endereco
cCidade := cadcli->Cidade
cBairro := cadcli->Bairro
cEstado := cadcli->Estado
dDataCad := cadcli->DataCad
cCEP := cadcli->CEP
cObs1 := cadcli->Obs1
cObs2 := cadcli->Obs2
cObs3 := cadcli->Obs3
Clrted()
lExt := .T.
MouseESC := .T.
CASE aWst:wsKey == K_ESC
lExt := .T.
Close cadcli
Clrted()
MouseESC := .F.
ENDCASE
// abaixo - evento MOUSEDOWN - o usu rio clicou com o mouse
CASE aWst:wsType == WAIT_MOUSEDOWN .AND. aWst:wsRow == 23 // na linha 23
IF aWst:wsCol >= 68 .AND. aWst:wsCol <= 78 // clicou em "[Esc] Sa¡da"
lExt := .T.
Close cadcli
MouseEsc := .F.
Clrted()
ELSEIF aWst:wsCol >= 01 .AND. aWst:wsCol <= 06 // clicou em "[PgUp]"
oTbr:pageUp()
ELSEIF aWst:wsCol >= 08 .AND. aWst:wsCol <= 13 // clicou em "[PgDn]"
oTbr:pageDown()
ELSEIF aWst:wsCol >= 16 .AND. aWst:wsCol <= 18 // clicou em "Sobe"
oTbr:up()
ELSEIF aWst:wsCol >= 20 .AND. aWst:wsCol <= 22 // clicou em "Desce"
oTbr:down()
ELSEIF aWst:wsCol >= 24 .AND. aWst:wsCol <= 26 // clicou em "Esquerda"
oTbr:left()
ELSEIF aWst:wsCol >= 28 .AND. aWst:wsCol <= 30 // clicou em "Direita"
oTbr:right()
ENDIF
CASE aWSt:wsType == WAIT_MOUSEDOWN .AND.; // c¢digo para habilitar cliques nas c‚lulas do tbrowse
aWSt:wsRow >= 6 .AND. aWSt:wsRow <= 20 .AND.;
aWSt:wsCol >= 3 .AND. aWSt:wsCol <= 75
nLin := aWSt:wsRow
nCol := aWSt:wsCol
nTbrLin := oTbr:rowPos
nTbrCol := oTbr:colPos
oTbr:deHilite()
oTbr:rowPos := nTbrLin + nLin - ROW() // Acerta linha
VLMouseOff()
FOR nInd = oTbr:rightVisible TO oTbr:leftVisible STEP -1
oTbr:colPos := nInd
oTbr:Hilite()
IF COL() - 1 <= nCol
oTbr:Hilite()
EXIT
ENDIF
NEXT
oTbr:refreshCurrent()
VLMouseOn()
ENDCASE
END
If LastKey() != K_ESC .And. MouseESC == .T.
Clrted()
SetColor("N/W,N*/W,,,N*/W")
SetCursor(1)
SetKey(K_SH_F9 ,{||nButton := 1,VLKeyboard(Chr(K_ESC)+Chr(K_ENTER))})
SetKey(K_SH_F10,{||nButton := 2,VLKeyboard(Chr(K_ESC)+Chr(K_ENTER))})
SetKeyMouse(K_SH_F9 ,{20,20,22,37})
SetKeyMouse(K_SH_F10,{20,20,42,57})
Frame(02,00,17,79,"ExclusÆo de Clientes",2,,,"B/W")
Linbutton2(LB_SHOW,NB_GRAY,15,nButton1,2,"&Excluir","Exclui cliente","&Cancelar","Cancela exclusÆo")
@04,02 say "C¢digo...:" Get cCodigo Picture "@!" When DwnMsg("C¢digo do cliente")
@05,45 say "Data Cad.:" Get dDataCad When DwnMsg("Data do cadastro")
Clear Gets
@04,20 say "Cliente....:" Get cCliente Picture "@!" When DwnMsg("Nome do cliente") Valid ! Empty(cCliente)
@05,02 Say "Conjuge..:" Get cConjuge Picture "@!" When DwnMsg("Conjuge do cliente")
@06,02 say "Endere‡o.:" Get cEndereco Picture "@!" When DwnMsg("Endere‡o do cliente")
@06,45 say "Bairro...:" Get cBairro Picture "@!" When DwnMsg("Bairro do cliente")
@07,02 say "Cidade...:" Get cCidade Picture "@!" When DwnMsg("Cidade do cliente")
@07,45 Say "Estado...:" Get cEstado Picture "@!" When DwnMsg("Estado do cliente") Valid ValUF(cEstado)
@07,60 say "CEP...:" Get cCEP Picture "99.999-999" When DwnMsg("CEP da cidade")
@08,02 say "Fone.....:" Get cFone Picture "@!" When DwnMsg("Fone do cliente")
@08,30 say "Fax.:" Get cFax Picture "@!" When DwnMsg("Fax do cliente")
@08,53 say "Celular.:" Get cCelular When DwnMsg("Celular do cliente")
@09,02 say "E-mail...:" Get cEmail Picture "@" When DwnMsg("E-Mail do cliente")
@10,02 say "CPF/CNPJ.:" Get cCPFCNPJ Picture "999.999.999/9999-99" When DwnMsg("CPF ou CNPJ do cliente") Valid ValCNPJCPF(cCPFCNPJ)
@10,35 say "Insc.Est.:" Get cInscEst Picture "@!" When DwnMsg("Inscri‡Æo estadual do cliente") Valid ValInscEst(cEstado,cInscEst)
@11,02 say "Observ...:" Get cObs1 Picture "@!" When DwnMsg("Observa‡Æo 1")
@12,13 Get cObs2 Picture "@!" When DwnMsg("Observa‡Æo 2")
@13,13 Get cObs3 Picture "@!" When DwnMsg("Observa‡Æo 3")
Clear Gets
Set Key K_SH_F10 To
SetKeyMouse(K_SH_F10,{})
nOpcao1 := Linbutton2(LB_PROC,NB_GRAY,15,nButton1,2,"&Excluir","Exclui cliente","&Cancelar","Cancela exclusÆo")
If nOpcao1 == 1
BloqReg()
cadcli->(DbDelete())
Desbloq()
Close cadcli
Else
Close cadcli
RstEnv(aEnv)
EndIf
EndIf
EndIf
If nOpcao == 4
Use CadCli Alias cadcli Shared New
Set Index To CadCli
Set Order To 2
cadcli->(DbGoTop())
If cadcli->(Eof())
Tone(900,5)
nMsgBcoVaz := MsgBox3d1("Banco de dados vazio!")
lExt := .T.
MouseEsc := .F.
DigNome := .F.
Close cadcli
EndIf
If DigNome == .T.
MsgBox3D(,"Digite as letras iniciais (ENTER=Todos)",,"W+/B","B/W")
SetCursor(1)
SetColor("N/W,N*/W,,,N*/W")
cCliente := Space (40)
@12,20 Get cCliente Pict '@!'
Read
nNumDig := Len(AllTrim(cCliente))
Set Order To 2
Locate For AllTrim(cadcli->Cliente) = Subs(cCliente,1,nNumDig)
If cadcli->(Eof()) ; cadcli->(DbGoTop()) ; EndIf
SetCursor(0)
If LastKey() == K_ESC
lExt := .T.
MouseEsc := .F.
Close cadcli
EndIf
EndIf
oTbr:colSep := " ³ "
oTbr:headSep := "Ä"
oTbr:colorSpec := "N*/W,W+/B,R*/W,W+/R"
oTbr:addColumn( oTbc1 )
oTbr:addColumn( oTbc2 )
Win( 03, 03, 20, 75, "Pesquisa de clientes")
SetColor( "N*/W,W+/B" )
@ 23, 00 SAY PADL( "[Esc] Sa¡da", 80 ) COLOR "R*/W" // sair pelo mouse
@ 23, 01 SAY "[PgUp]" COLOR "R*/W" // PgUp pelo mouse
@ 23, 08 SAY "[PgDn]" COLOR "R*/W" // PgDn pelo mouse
@ 23, 16 SAY "[" + CHR( 24 ) + "]" COLOR "R*/W" // Sobe pelo mouse
@ 23, 20 SAY "[" + CHR( 25 ) + "]" COLOR "R*/W" // Desce pelo mouse
@ 23, 24 SAY "[" + CHR( 27 ) + "]" COLOR "R*/W" // Esq. pelo mouse
@ 23, 28 SAY "[" + CHR( 26 ) + "]" COLOR "R*/W" // Dir. pelo mouse
WHILE !lExt
VLMouseOff()
WHILE !oTbr:stabilize() ; END
VLMouseOn()
aWSt := WaitState() // substitui o INKEY()
DO CASE
CASE aWSt:wsType == WAIT_KEYPRESS // o evento foi uma tecla
DO CASE // manipula‡Æo padrÆo de teclas
CASE aWst:wsKey == K_DOWN ; oTbr:down()
CASE aWst:wsKey == K_UP ; oTbr:up()
CASE aWst:wsKey == K_PGDN ; oTbr:pageDown()
CASE aWst:wsKey == K_PGUP ; oTbr:pageUp()
CASE aWst:wsKey == K_CTRL_PGUP ; oTbr:goTop()
CASE aWst:wsKey == K_CTRL_PGDN ; oTbr:goBottom()
CASE aWst:wsKey == K_RIGHT ; oTbr:right()
CASE aWst:wsKey == K_LEFT ; oTbr:left()
CASE aWst:wsKey == K_HOME ; oTbr:home()
CASE aWst:wsKey == K_END ; oTbr:end()
CASE aWst:wsKey == K_CTRL_LEFT ; oTbr:panLeft()
CASE aWst:wsKey == K_CTRL_RIGHT ; oTbr:panRight()
CASE aWst:wsKey == K_CTRL_HOME ; oTbr:panHome()
CASE aWst:wsKey == K_CTRL_END ; oTbr:panEnd()
CASE aWst:wsKey == K_ESC
lExt := .T.
Close cadcli
Clrted()
ENDCASE
// abaixo - evento MOUSEDOWN - o usu rio clicou com o mouse
CASE aWst:wsType == WAIT_MOUSEDOWN .AND. aWst:wsRow == 23 // na linha 23
IF aWst:wsCol >= 68 .AND. aWst:wsCol <= 78 // clicou em "[Esc] Sa¡da"
lExt := .T.
Close cadcli
Clrted()
ELSEIF aWst:wsCol >= 01 .AND. aWst:wsCol <= 06 // clicou em "[PgUp]"
oTbr:pageUp()
ELSEIF aWst:wsCol >= 08 .AND. aWst:wsCol <= 13 // clicou em "[PgDn]"
oTbr:pageDown()
ELSEIF aWst:wsCol >= 16 .AND. aWst:wsCol <= 18 // clicou em "Sobe"
oTbr:up()
ELSEIF aWst:wsCol >= 20 .AND. aWst:wsCol <= 22 // clicou em "Desce"
oTbr:down()
ELSEIF aWst:wsCol >= 24 .AND. aWst:wsCol <= 26 // clicou em "Esquerda"
oTbr:left()
ELSEIF aWst:wsCol >= 28 .AND. aWst:wsCol <= 30 // clicou em "Direita"
oTbr:right()
ENDIF
CASE aWSt:wsType == WAIT_MOUSEDOWN .AND.; // c¢digo para habilitar cliques nas c‚lulas do tbrowse
aWSt:wsRow >= 6 .AND. aWSt:wsRow <= 20 .AND.;
aWSt:wsCol >= 3 .AND. aWSt:wsCol <= 75
nLin := aWSt:wsRow
nCol := aWSt:wsCol
nTbrLin := oTbr:rowPos
nTbrCol := oTbr:colPos
oTbr:deHilite()
oTbr:rowPos := nTbrLin + nLin - ROW() // Acerta linha
VLMouseOff()
FOR nInd = oTbr:rightVisible TO oTbr:leftVisible STEP -1
oTbr:colPos := nInd
oTbr:Hilite()
IF COL() - 1 <= nCol
oTbr:Hilite()
EXIT
ENDIF
NEXT
oTbr:refreshCurrent()
VLMouseOn()
ENDCASE
END
EndIf
RstEnv(aEnv)
Return Nil
Function fNovoCli
Use CadCli Alias cadcli Shared New
Set Index To CadCli
Set Order To 1
cadcli->(DbGoTop())
cCodigo := Padl("1",5,"0")
Do While ! Eof()
Locate For cadcli->Codigo == cCodigo
If Eof()
Close cadcli
Return cCodigo
Else
cCodigo := AllTrim(Str(Val(cCodigo)+1))
cCodigo := Padl(cCodigo,5,"0")
EndIf
EndDo
Close cadcli
Return cCodigoPiter Galdiano
Programador Clipper
Programador Clipper
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Eu consegui compilar sem problemas eu estou usando agora o clipper 5.2e.
Eu não possuia a Visual Lib somente copiei o arquivo visual2.ch para o diretório onde estava o prg e compilei.
// o prg e o obj
http://geocities.yahoo.com.br/dudu_xbase/piter.zip
Estou usando clipper5.2e meu Micro esta com rwin98.
// Meu Config.sys tá assim
SHELL=C:\WINDOWS\COMMAND.COM /e:2048
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICEHIGH=C:\WINDOWS\EMM386.EXE NOEMS NOVCPI
DOS=HIGH,UMB
FILES=200
BUFFERS=40,0
// No Meu Autoexec.bat eu carrego tudo na memória superior
LH mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi)
LH mode con codepage select=850
LH keyb br,,C:\WINDOWS\COMMAND\keybrd2.sys /ID:275
Vc ta usando qual versão do clipper ?
Eu não possuia a Visual Lib somente copiei o arquivo visual2.ch para o diretório onde estava o prg e compilei.
// o prg e o obj
http://geocities.yahoo.com.br/dudu_xbase/piter.zip
Estou usando clipper5.2e meu Micro esta com rwin98.
// Meu Config.sys tá assim
SHELL=C:\WINDOWS\COMMAND.COM /e:2048
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICEHIGH=C:\WINDOWS\EMM386.EXE NOEMS NOVCPI
DOS=HIGH,UMB
FILES=200
BUFFERS=40,0
// No Meu Autoexec.bat eu carrego tudo na memória superior
LH mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi)
LH mode con codepage select=850
LH keyb br,,C:\WINDOWS\COMMAND\keybrd2.sys /ID:275
Vc ta usando qual versão do clipper ?
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Seu código está limpo, o problema acho que pode ser os includes, se houver muitas declarações nos includes este erro também pode ocorrer.
Faça como a primeira dica, coloque no PRG os defines que vc usa.
Sem mais
Wagner Nunes
www.vagucs.com.br
Faça como a primeira dica, coloque no PRG os defines que vc usa.
Sem mais
Wagner Nunes
www.vagucs.com.br
-
PITERGALDIANO
- Usuário Nível 2

- Mensagens: 91
- Registrado em: 28 Nov 2003 08:48
Olá,
vagucs escreveu:Este problema é muito no Clipper quando a versão dele está abaixo da 5.2e
Dudu_XBase escreveu:Eu consegui compilar sem problemas eu estou usando agora o clipper 5.2e
PITERGALDIANO escreveu:uso windows XP! e clipper 5.2
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql

