Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Replace a string with Chr(13)

Status
Not open for further replies.

ZombieW

Programmer
Oct 31, 2018
2
BR
Hello all!

I have a problem...

In my text, I have a long text and some "+<chr(13)>+<chr(10)>" in the middle.

When I try to replace with Strtran, does not work.

Code:
lc_funcionario = Proper("douglas lodetti garcia")

lc_texto = "Prezado(a) Colaborador(a) <lc_funcionario>, +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>"+;
"Pela presente carta de cientificação, a TVMED lhe dá a devida ciência de que a nossa política de premiação mensal compreende em atingir o "+;
"mínimo de: +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>* 200 ligações por dia +<chr(13)>+<chr(10)>* 100 e-mails por mês +<chr(13)>+<chr(10)>* "+;
"15 pesquisas por mês +<chr(13)>+<chr(10)>* Falar com 10 medicos por dia +<chr(13)>+<chr(10)>* Máximo de 12 faltas no semestre sem "+;
"justificativa +<chr(13)>+<chr(10)>* Envio de CD Rom e/ou fitas para médicos, secretarias de saúde e outros órgãos públicos, "+;
"hospitais, +<chr(13)>+<chr(10)>  faculdades de medicina e/ou laboratórios, a ser estipulado a quantidade mensalmente de acordo com "+;
"a +<chr(13)>+<chr(10)>  campanha em vigor e também de acordo com os períodos em que não há "+;
"congressos +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>Tal procedimento "+;
"deverá ser rigorosamente respeitado, e que não será premiado aquele que não atingir qualquer um dos itens previamente estipulados acima, "+;
"não possuindo tais prêmios característica habitual."

lc_texto = Strtran(lc_texto,"<lc_funcionario>",lc_funcionario)
lc_texto = Strtran(lc_texto,"<chr(13)>","chr(13)")
lc_texto = Strtran(lc_texto,"<chr(10)>","chr(10)")

How can I replace the strings to the chr itself?
 
All that you are doing is replacing one quoted string with another. So you will end up with the same text, but without the angle brackets.

What you want is something like this:

Code:
lc_texto = Strtran(lc_texto,"<chr(13)>",chr(13))
lc_texto = Strtran(lc_texto,"<chr(10)>",chr(10))

In other words, remove the quote marks from the third STRTRAN() parameter.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Presumably, you also want to remove the + signs. If so, do this instead:

Code:
lc_texto = Strtran(lc_texto,"+<chr(13)>",chr(13))
lc_texto = Strtran(lc_texto,"+<chr(10)>",chr(10))

I've just done myself, and this is what I get:

Code:
Prezado(a) Colaborador(a) Douglas Lodetti Garcia, 


Pela presente carta de cientificação, a TVMED lhe dá a devida ciência de que a nossa política de premiação mensal compreende em atingir o mínimo de: 

* 200 ligações por dia 
* 100 e-mails por mês 
* 15 pesquisas por mês 
* Falar com 10 medicos por dia 
* Máximo de 12 faltas no semestre sem justificativa 
* Envio de CD Rom e/ou fitas para médicos, secretarias de sa&uacute;de e outros órgãos p&uacute;blicos, hospitais, 
  faculdades de medicina e/ou laboratórios, a ser estipulado a quantidade mensalmente de acordo com a 
  campanha em vigor e também de acordo com os períodos em que não há congressos 




Tal procedimento deverá ser rigorosamente respeitado, e que não será premiado aquele que não atingir qualquer um dos itens previamente estipulados acima, não possuindo tais prêmios característica habitual.

Does that look right to you?

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Yeah, it worked!

I was loging me in easy coding... Weird in Debug/Watch, the content of the variable was not changing.
 
What you have there is almost in a syntax for textmerge brackets, but indeed because of the + outside of the brackets textmerging won't work out.

This can be fixed towards textmerging this way:

Code:
lc_texto = strtran(lc_texto,'+<','<')
lc_texto = strtran(lc_texto,'><','+')

So overall this will give you a good result:
Code:
lc_funcionario = Proper("douglas lodetti garcia")

lc_texto = "Prezado(a) Colaborador(a) <lc_funcionario>, +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>"+;
"Pela presente carta de cientificação, a TVMED lhe dá a devida ciência de que a nossa política de premiação mensal compreende em atingir o "+;
"mínimo de: +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>* 200 ligações por dia +<chr(13)>+<chr(10)>* 100 e-mails por mês +<chr(13)>+<chr(10)>* "+;
"15 pesquisas por mês +<chr(13)>+<chr(10)>* Falar com 10 medicos por dia +<chr(13)>+<chr(10)>* Máximo de 12 faltas no semestre sem "+;
"justificativa +<chr(13)>+<chr(10)>* Envio de CD Rom e/ou fitas para médicos, secretarias de sa&uacute;de e outros órgãos p&uacute;blicos, "+;
"hospitais, +<chr(13)>+<chr(10)>  faculdades de medicina e/ou laboratórios, a ser estipulado a quantidade mensalmente de acordo com "+;
"a +<chr(13)>+<chr(10)>  campanha em vigor e também de acordo com os períodos em que não há "+;
"congressos +<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>+<chr(13)>+<chr(10)>Tal procedimento "+;
"deverá ser rigorosamente respeitado, e que não será premiado aquele que não atingir qualquer um dos itens previamente estipulados acima, "+;
"não possuindo tais prêmios característica habitual."


lc_texto = strtran(lc_texto,'+<','<')
lc_texto = strtran(lc_texto,'><','+')
lcMerged = Textmerge(lc_texto,.f.,'<','>')

Which results in lcMErged having this text:

[pre]Prezado(a) Colaborador(a) Douglas Lodetti Garcia,


Pela presente carta de cientificação, a TVMED lhe dá a devida ciência de que a nossa política de premiação mensal compreende em atingir o mínimo de:

* 200 ligações por dia
* 100 e-mails por mês
* 15 pesquisas por mês
* Falar com 10 medicos por dia
* Máximo de 12 faltas no semestre sem justificativa
* Envio de CD Rom e/ou fitas para médicos, secretarias de sa&uacute;de e outros órgãos p&uacute;blicos, hospitais,
faculdades de medicina e/ou laboratórios, a ser estipulado a quantidade mensalmente de acordo com a
campanha em vigor e também de acordo com os períodos em que não há congressos




Tal procedimento deverá ser rigorosamente respeitado, e que não será premiado aquele que não atingir qualquer um dos itens previamente estipulados acima, não possuindo tais prêmios característica habitual.[/pre]

I would go that route instead of rolling your own strtran, as the placeholder <lc_funcionario> indicates it's really meant to be used with textmerge.

You could have it much easier in terms of line breaks as there is TEXT..ENDTEXT and all of that can be done with the linebreaks just as part of the multiline TEXT...ENDTEXT string:

Code:
Local lcMerged, lc_funcionario
lc_funcionario = Proper("douglas lodetti garcia")

Text To lcMerged Textmerge Noshow
Prezado(a) Colaborador(a) <<lc_funcionario>>, 


Pela presente carta de cientificação, a TVMED lhe dá a devida ciência de que a nossa política de premiação mensal compreende em atingir o mínimo de: 

* 200 ligações por dia 
* 100 e-mails por mês 
* 15 pesquisas por mês 
* Falar com 10 medicos por dia 
* Máximo de 12 faltas no semestre sem justificativa 
* Envio de CD Rom e/ou fitas para médicos, secretarias de sa&uacute;de e outros órgãos p&uacute;blicos, hospitais, 
  faculdades de medicina e/ou laboratórios, a ser estipulado a quantidade mensalmente de acordo com a 
  campanha em vigor e também de acordo com os períodos em que não há congressos 




Tal procedimento deverá ser rigorosamente respeitado, e que não será premiado aquele que não atingir qualquer um dos itens previamente estipulados acima, não possuindo tais prêmios característica habitual.
EndText
Notice I changed this to use the double << and >> textmerging brackets.

IF you have more code like that you better change it this way, as this is covering not only chr(13) and chr(10) much easier by actually having the line breaks in code, but also takes into account any textmerge placeholders like variable names as in <<lc_funcionario>>.

Besides, you can also put the text into files and do
Code:
lcMerged = Textmerge(FileToStr(textmergefile))
Or put the template texts into memos and do
Code:
lcMerged = Textmerge(memofield)

Bye, Olaf.

Olaf Doschke Software Engineering
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top