Subject Re: STUFF() returns incorrect character
From John Gillen <johngillen@cox.net>
Date Thu, 07 Jan 2021 23:26:07 -0500
Newsgroups dbase.getting-started

John Gillen Wrote:

> John Gillen Wrote:
>
> > Hello,
> >
> > I am using low level file functions (FOPEN(), FEOF(), FREAD(), FWRITE() and FCLOSE() to parse a text file. As part of this parsing, I am using three commands to replace characters in the incoming file: mstring = <incoming string>; mpos = AT(<where character to replace is found in the incoming string>);  mstring = STUFF(mstring,mpos,1,"") to do the character replacement.
> >
> > If I run these three steps in the Command window, it works as expected.
> >
> > If I run these three steps in a program, instead of NULL, I get a comma (,).
> >
> > I tried "",'', and NULL CHR(0) all with the same result - a comma.
> >
> > dBASE 8/Windows 10 64bit
> >
> > Any ideas/suggestions are appreciated.
> >
> > John
>
> John Gillen Wrote:
>
> > Hello,
> >
> > I am using low level file functions (FOPEN(), FEOF(), FREAD(), FWRITE() and FCLOSE() to parse a text file. As part of this parsing, I am using three commands to replace characters in the incoming file: mstring = <incoming string>; mpos = AT(<where character to replace is found in the incoming string>);  mstring = STUFF(mstring,mpos,1,"") to do the character replacement.
> >
> > If I run these three steps in the Command window, it works as expected.
> >
> > If I run these three steps in a program, instead of NULL, I get a comma (,).
> >
> > I tried "",'', and NULL CHR(0) all with the same result - a comma.
> >
> > dBASE 8/Windows 10 64bit
> >
> > Any ideas/suggestions are appreciated.
> >
> > John
>
> Hello All and thanks for the feedback,
>
> The text file I am processing is acutally an html file from the State of California's website. I don't know the file's encoding format, but a hex view identified the as CHR(194) in the first example below.
>
> I could open the html file and save it as ANSI, but I was hoping to avoid that step if possible, as there are hundreds of these files. So, I opted to use the low level commands to see if I could clean up the wayward characters.
>
> I have used STUFF() in many other programs, but this is the first time I have used it in processing an html file.
>
> Here's the code for the test file. (TestOut.log is just for troubleshooting) I normally use an .h file, but this was a quick proof of concept test. In this version, I was testing CHR(00), but I have tried "", '' and CHR(00):
>
> mchaptest = FOPEN("Test.html","R")
> mtestout  = FCREATE("TestOut.txt","W")
> mchaplog  = FCREATE("TestOut.log","W")
>
> DO WHILE .NOT. FEOF(mchaptest)
>   mstring = FGETS(mchaptest)
>   moutstr = "Current string: " + mstring
>   FWRITE(mchaplog,moutstr)
>   FWRITE(mchaplog,CHR(10)+CHR(13))
>
>   DO WHILE CHR(194) $ mstring
>     moutstr = "Testing for CHR(194)"
>     FWRITE(mchaplog,moutstr)
>     FWRITE(mchaplog,CHR(10)+CHR(13))
>     mpos = AT(CHR(194), mstring)
>     mstring = STUFF(mstring,mpos,1,CHR(00))
>   ENDDO
>
>   DO WHILE CHR(195) $ mstring
>     moutstr = "Testing for CHR(195)"
>     FWRITE(mchaplog,moutstr)
>     FWRITE(mchaplog,CHR(10)+CHR(13))
>     mpos = AT(CHR(195), mstring)
>     mstring = STUFF(mstring,mpos,1,CHR(00))
>   ENDDO
>
>   * write the results
>   FWRITE(mtestout,mstring)
>   FWRITE(mtestout,CHR(10)+CHR(13))
> ENDDO
>
> * close Chapters file
> FCLOSE(mchaptest)
> FCLOSE(mtestout)
>
> Here are sample lines subject to STUFF() and the output:
> </span> <span style="font-size: 13pt">February 13, 2020.
> This produces:
> </span>   <span style="font-size: 13pt">February   13,   2020.
>
> submitting to the voter’s county elections official
> This produces:
> submitting to the voter €™s county elections official
>
> 2119.5.</h6> (a) From the 14th day
> This produces:
> 2119.5.</h6>   (a)   From the 14th day
>
> (2) The voter’s former residence
> This produces:
> The voter €™s former residence
>
> Thanks again.
>
> John
>
Thanks to all for the suggestions and information!