Página 1 de 2
Problemas com Memoedit()
Enviado: 06 Set 2016 16:37
por Softwhouse
Estou tendo problemas com memoedit() no Harbour. Está gravando diversos caracteres Ì no campo FPT. Existe outra função substituindo a memoedit()? No xHarbour estava funcionando perfeitamente, convertí para harbour deu problema. Grato.
Problemas com Memoedit()
Enviado: 08 Set 2016 11:02
por Softwhouse
Complementando, esses caracteres Ì significam a troca de linha e somente são acrescentados quando o texto for alterado ou seja quando carrego o texto para alteração esses caracteres aparecem e são gravados no memo. Compilei com o Harbour 3.2 e 3.4 e o problema aparece em ambos.
Problemas com Memoedit()
Enviado: 08 Set 2016 11:34
por Kapiaba
Problemas com Memoedit()
Enviado: 08 Set 2016 15:50
por Softwhouse
Caro Kapiaba, cheguei a conclusão que essa função está com bug no harbour. No clipper e xharbour funciona perfeitamente. Cada vez que carrego o texto no memoedit() é acrescentado o caractér para mudança de linha. Se carregar e salvar dez vezes serão acrescentados 10 caracteres.
Problemas com Memoedit()
Enviado: 08 Set 2016 15:55
por Kapiaba
Fernando, neste caso, o melhor a fazer, é mostrar o seu código fonte, para que os mestres em HARBOUR, analisem o seu código, não se preocupe, criticas são sempre bem vindas e aprimora o conhecimento. Pode ser uma coisa que o harbour tem e o xHarbour não tem ou vice versa.
Abs.
Problemas com Memoedit()
Enviado: 08 Set 2016 16:48
por Softwhouse
Montei esse pequeno exemplo para terem uma idéia. Se for digitar além do final da linha passará para o final da linha e será inserido o caractér Ì. Tentei remover com memotran() e hardcr() e nada...
Código: Selecionar todos
Function Main()
Request DBFCDX, DBFFPT
RddSetDefault('DBFCDX')
DbSetDriver('DBFCDX')
Scroll()
If !File('Tabela.dbf')
aStructure:={}
AADD(aStructure,{'Texto','M',10,0})
DbCreate('Tabela.dbf',aStructure)
Use Tabela.dbf New
DbAppend()
DbCloseAll()
EndIf
Use Tabela.dbf New
mTexto:=Tabela->Texto
EditaTexto()
Replace Texto With mTexto
EditaTexto()
Replace Texto With mTexto
Return(.T.)
FUNCTION EditaTexto(mTextFile)
Local cOldTela:=SaveScreen(06,13,20,65)
@ 06,13 To 18,64
@ 20,00 Say 'Tecle ESC para gravar'
mTexto:=MemoEdit(mTexto,07,14,16,62,.T.,'MemControl')
RestScreen(06,13,20,65,cOldTela)
Return(.T.)
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 23
EndCase
Return(Nil)
Problemas com Memoedit()
Enviado: 08 Set 2016 23:12
por Jairo Maia
Olá Softwhouse,
Removi a duplicidade da chamada EditaTexto() e compilei seu exemplo, e tanto quebrando a linha com ENTER ou digitando até o final não vi nada diferente. Deu tudo certo.
Problemas com Memoedit()
Enviado: 09 Set 2016 10:30
por Kapiaba
Aqui, compilou normal com harbour e xHarbour usando fivewin.
Código: Selecionar todos
#include "FiveWin.ch"
Function Main()
Request DBFCDX, DBFFPT
RddSetDefault('DBFCDX')
DbSetDriver('DBFCDX')
Scroll()
If !File('Tabela.dbf')
aStructure:={}
AADD(aStructure,{'Texto','M',10,0})
DbCreate('Tabela.dbf',aStructure)
Use Tabela.dbf New
DbAppend()
DbCloseAll()
EndIf
Use Tabela.dbf New
Replace Texto With "I LOVE FIVEWIN THE BEST AND XHARBOUR FOR WINDOWS"
mTexto:=Tabela->Texto
MemoEdit( mTexto )
// Browse()
// quit
EditaTexto()
Replace Texto With mTexto
Return(.T.)
FUNCTION EditaTexto(mTextFile)
Local cOldTela:=SaveScreen(06,13,20,65)
@ 06,13 To 18,64
@ 20,00 Say 'Tecle ESC para gravar'
mTexto:=MemoEdit(mTexto,07,14,16,62,.T.,'MemControl')
RestScreen(06,13,20,65,cOldTela)
Return(.T.)
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 23
EndCase
Return(Nil)
Problemas com Memoedit()
Enviado: 09 Set 2016 11:38
por Softwhouse
Jairo e Kapiaba, vejam bem, vcs removeram a segunda chamada a memoedit() e é exatamente aí que está o problema. A cada alteração do registro é inserido o caracter Ì. Se fizer dez alterações serão inseridos dez caracteres Ì.
Quando grava a primeira vez tudo ok, se for alterar, quando carrega o campo no memoedit() aparece o caracter Ì. Se der ENTER no final da linha não aparece, somente se for digitando e a quebra de linha for automática.
Problemas com Memoedit()
Enviado: 09 Set 2016 11:49
por Kapiaba
E se você criar uima função para retirar este caracter, tipo:
Problemas com Memoedit()
Enviado: 09 Set 2016 12:47
por Toledo
Softwhouse escreveu:A cada alteração do registro é inserido o caracter Ì.
Amigo, faz um teste, altere:
Código: Selecionar todos
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 23
EndCase
Return(Nil)
por:
Código: Selecionar todos
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 273
EndCase
Return(Nil)
Abraços,
Problemas com Memoedit()
Enviado: 09 Set 2016 14:05
por Softwhouse
Toledo, infelizmente, também não de certo.
Problemas com Memoedit()
Enviado: 09 Set 2016 14:15
por Softwhouse
Kapiaba, tentei a função HardCR(), mas termina com a distribuição automática das linhas, ou seja é truncado a quebra de linha, por exemplo:
Test
e
Problemas com Memoedit()
Enviado: 09 Set 2016 16:40
por Toledo
Softwhouse escreveu:Toledo, infelizmente, também não de certo.
Amigo, segue em anexo um demo... execute ele.
Abraços,
Problemas com Memoedit()
Enviado: 09 Set 2016 17:00
por Kapiaba