Gostaria de acrescentar mais uma informação a este assunto, da qual ja foi comentado em tópicos anteriores e sem menos prezar a resposta do colega MARCELOG (que está correta a sua indicação).
Mas cada vez que é mencionado "CAMPO MEMO"... logo penso: ARGHHHH
Dilson, se quiser evitar problemas com este tipo de campo, mude já !. Não vincule ao seu BD com este tipo de campo. Desvincule-o, como fazer ?. Darei um exemplo:
Digamos que é um arquivo de clientes, onde você tem um campo código/matricula/CPF ou qualquer designação que identifique que tal registro pertence a tal pessoa (ou tal registro). Então você ja tem um campo identificador chave. Você ja devia utilizar o MEMOEDIT() para editar o campo MEMO, pois bem, você pode ainda utilizá-lo da mesma forma. Só que em vez de gravar no seu DBF através do REPLACE, você gravaria em arquivo (continua sendo texto) através do MEMOWRIT(). Você até pode reservar uma pasta, onde você pode colocar todos esses arquivos. Isto, irá economizar espaço (sei que hoje em dia isso não é problema) e você terá seu dados de forma enxugada e melhor administrada. Exemplo:
Código: Selecionar todos
VCLI:=1
VARQ:="C:\OBS\OBS"+STRZERO(VCLI,5,0)+".TXT"
IF FILE(VARQ)
VTXT:=MEMOREAD(VARQ)
ELSE
VTXT:=""
ENDIF
VTXT:=MEMOEDIT(VTXT,05,02,20,70,.T.,"CONTROL",68)
IF LEN(VTXT)>4
MEMOWRIT(VARQ,VTXT)
ENDIF
A função CONTROL, serviria para que o sistema atue na edição, seja pra fazer acentos, pra inserir outras funções (como de inserção de textos), ou até mesmo limitar ao usuário qual os tipos de teclas que podem ser pressionadas.
Quiser mais razões e exemplos sobre este assunto, você poderá fazer a sua "BUSCA" pelo menu do FORUM em tópicos anteriores sobre CAMPO MEMO.