I am trying to filter out "illegal" characters as the user is writing them
into a text field. To do this I wait for a keyDownEvent and then I process
it with the following code:

  case keyDownEvent:
        ch = pEvent->data.keyDown.chr;
        handled = ! ( TxtCharIsAlNum( ch ) || TxtCharIsCntrl( ch ) );
   break;

If handled = true
Then
    the system does not concatenate the character to the field.
Else
    the system concatenates the character to the field.

When I look at the results of TxtCharIsAlNum() it works correctly on the
Palm OS Emulator (Sony Clie).

Which ROM? I'm assuming this is 4.x (since you mention POSE).


On the device Sony Clie NX60 (Palm OS 5.0) it
returns 0 for all character values including international characters.

Has anyone run into this problem?  Or does anyone have any ideas on the
cause of this defect and maybe a work around?

The PIM apps and other 68K bits and pieces in the OS use the results returned by TxtCharAttr(). So it would surprise me if this was returning something invalid. Can you provide information on what TxtCharAttr returns for 'a' and '0'?


Also, one occasional problem is when the variable ch (in your example above) is declared as a char or Char instead of a WChar. When you pass this to TxtCharAttr, the compiler will sign-extend the value to be 16 bits, and thus if the high bit is set (for high-ASCII) you can wind up passing 0xFFxx instead of 0x00xx.

-- Ken
--
Ken Krugler
TransPac Software, Inc.
<http://www.transpac.com>
+1 530-470-9200

--
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to