[jawsscripts] Re: Problem with StringToFile, Jamal's HSL

  • From: Andrew Hart <ahart@xxxxxxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Thu, 22 Nov 2012 12:53:27 -0300

Yep.  that's a curly one and I am not sure what's going on.  glancing at 
the source of StringToFile in homer.jss, everything looks hunky dory.

I initially thought that perhaps the + operator was plonking a space 
char on the end of the string, but a little testing invalidated this 
hypothesis.  Plus, I would have thought a bunch of other stuff would 
have already been broken in JAWS if this were the case.

I did a test in V14 (not in 13 yet) along the lines of what you 
suggested and found an extra character at the end of the file, just like 
you reported.  Brian, the extra character is not a space (ASCII code 32 
or 0x20 hex); it is a 0 byte (ASCII 0 or 0x0 hex), which is normally 
used to terminate raw strings in C/C++ code.  When I load the test file 
into Notepad, the extra character appears as a space because Notepad 
converts non-printable characters to spaces when it opens files.

Now, in order to pass the string to a COM object, it mus tbe converted 
to a Variant variable type and then to a BSTR object which complies with 
the COM standard for module interoperability.  My initial reaction, 
though I could be totally off the mark here, is that JAWS 14 is 
miscalculating the string length and inadvertently including the 
terminator character at some point in the process of passing the string 
to the COM object.
Some further testing would be required to really confirm this.

Hth,
Andrew.

On 22/11/2012 11:40 AM, Brian Hartgen wrote:
> Hi
> I have a problem which is baffling me at the moment. For various projects 
> available to the community, I use Jamal's Homer Script Library. It is full of 
> useful functions and I've used it for years.
>
> However there is one function which is causing a problem. It works fine with 
> many jaws versions up to and including 13, but it does not work correctly in 
> 14 and I do need it to if anyone can please suggest a solution.
>
> The function, StringToFile, writes a string to a text file. In jaws 14, this 
> is working fine except that it leaves an extra space character at the end. 
> This can be simulated simply as follows:
>
> Assume that homer.jsb is attached via a use statement to your script.
>
> Script test700 ()
>
> saystring ("ok")
>
> var
>
> string temp
>
> let temp = "hello "
>
> let temp = temp +"goodbye"
>
> StringToFile (temp, "c:\\temp\\test.txt")
>
> ã
>
> ã
>
> EndScript
>
>
> This outputs to a text file "hello goodbye", then a space character, rather 
> than just having a clean file.
>
> Does anyone have a suggestion as to how I may erase the space character?
>
> Thank you.
>
> Brian Hartgen
>
> __________ï
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
>
>


__________ï

View the list's information and change your settings at 
http://www.freelists.org/list/jawsscripts

Other related posts: