Página 1 de 1

Gravar um string em Arquivo MEMO em uma nova linha.

Enviado: 12 Jun 2007 14:46
por Dilson José
:f Como efetuar uma gravação de string em um campo memo em uma nova linha. Ex. Dilson J. Hasselmann + Sorocaba => Dilson J. Hasselmann
Sorocaba

Desde já agradeço a quem tiver uma dica, obrigado!

Sds.
Dilson J. Hasselmann

Enviado: 12 Jun 2007 18:23
por MARCELOG
#DEFINE CRLF CHR(13)+CHR(10)
....

mCampoMemo := mCampoMemo+CRLF+xAcrescimo

onde xAcrescimo é a cadeia de caracteres que você quiser.

MarceloG

Ps: o campo memo é igual a um campo caractere. O que muda é a forma como o conteúdo é armazenado.

Veja as funções memo... para aprender a manipular, como quiser, esses campos.

CAMPO do tipo MEMO

Enviado: 13 Jun 2007 04:04
por Pablo César
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.

Enviado: 13 Jun 2007 16:07
por salmen
Pablo vc tem razão pois quando o arquivo .DBT chega nos 32Mb o sistema grava o texto mas se perde no retorno.
O engracado é que nao é a quantidade de registros do .DBF e sim o tamanho do .DBT. O .DBF continua normal mas o .DBT traz texto de outras coisas do conteudo do proprio .DBT. Se vc olha por exemplo o
registro 1,2,3, etc.. os textos estao corretos mas se o registro 1000 tiver seu texto gravado apos os 32 MB, ele traz texto que nao condiz com que deveria estar gravado e este texto esta dentro do proprio .DBT enfim ele se perde. Tive esse problema e aqui neste forum é que me ajudaram. Nao me lembro do nome do cara que me respondeu mas ele foi muito claro quanto a explanacao do problema. Fiquei com certo receio mas tive que partir tambem para arquivo texto e diga-se de passagem fiquei muito satifeito. Em tempo de resposta de abrir e ler o texto deste arquivo ficou totalmente transparente nem se percebe a mudança ou seja é bem rapido e alem de tudo é muito mais seguro. Vale apena mudar, com certeza!!

Mensagens Memo.

Enviado: 15 Jun 2007 10:10
por Dilson José
Valeu pessoal e mais uma vez muito obrigado, estou adisposição!

Sds.
Dilson J. Hasselmann