Problemas com Memoedit()
Moderador: Moderadores
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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.
Fernando
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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.
Fernando
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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.
Fernando
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Problemas com Memoedit()
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.
Abs.
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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)
Fernando
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com Memoedit()
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.
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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Problemas com Memoedit()
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)
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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.
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.
Fernando
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Problemas com Memoedit()
E se você criar uima função para retirar este caracter, tipo:
Código: Selecionar todos
FUNCTION TIRA_ACENTUACAO()
...
RETURN NIL
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Problemas com Memoedit()
Amigo, faz um teste, altere:Softwhouse escreveu:A cada alteração do registro é inserido o caracter Ì.
Código: Selecionar todos
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 23
EndCase
Return(Nil)Código: Selecionar todos
FUNCTION MemControl(nMode,nLine,nCol)
Do Case
Case LastKey() == 27
Return 273
EndCase
Return(Nil)Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
Problemas com Memoedit()
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
Test
e
Fernando
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Problemas com Memoedit()
Amigo, segue em anexo um demo... execute ele.Softwhouse escreveu:Toledo, infelizmente, também não de certo.
Abraços,
- Anexos
-
demomemoedit.rar- (558.79 KiB) Baixado 258 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Problemas com Memoedit()
Tente,
Abs,
Código: Selecionar todos
Replace Texto With ( mTexto, CRLF, "-" )