Question:
I have written a function which strips out all carriage returns from a memo field passed to
it, replacing them with the characters "
". The returned piece of text is then
placed/merged into a text file. However, when I go to look at my text file, it appears that
several carriage returns or paragraph marks have been inserted at random points
throughout the file.
What is causing this? How can I prevent paragraph markers being inserted into the text?
Answer:
There are a couple of possibilities that spring to my mind. First of all, what we usually
think of as carriage returns in text files are actually a combination of a carriage return
character ( CHR(13) ) followed by a line feed character ( CHR(10) ). This combination is
usually referred to as CRLF (Carriage Return Line Feed).
Some text editors (and editboxes within VFP too) use carriage returns only to indicate an
end of a line. If your code only translates CRLF combinations to
then you will
be missing any lone carriage return characters. Here is a code sample that handles both
CRLF and lone CRs in a memofield:
lcTranslatedText =
STRTRAN(MyTable.mMyMemoField,CHR(13)+CHR(10),"
")
lcTranslatedText = STRTRAN(lcTranslatedText,CHR(13),"
")
The second possibility I can think of relates to how you are merging the information
together. You may want to check to see if these errant carriage returns occur right where
two pieces of information get merged.
Your message does not specify what approach you are using to merge the data. If you are
using TEXTMERGE to merge the information together, if you use "\" to add information
to the merge, this inserts a carriage return before what you are adding to the merge. To
solve this use "\\" instead, which does not insert a carriage return. A similar situation
occurs if you are using SET ALTERNATE to redirect whatever is sent to the screen to a
file. If you use "?" to add information to the merge, this inserts a carriage return before
what you are adding to the merge. To solve this use "??" instead, which does not insert a
carriage return.