home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
pocketbk
/
developmen
/
oplexamp
/
FINDFIE2.TXT
< prev
next >
Wrap
Text File
|
1994-06-03
|
1KB
|
38 lines
==========
psion/opl #1225, from psioncorp, 1153 chars, May 31 10:15 94
Comment to 1223. Comments.
----------
FINDFIELD in fact has two bugs:
1. The flags% argument is documented incorrectly in that the nibbles of the lo-
w
byte are in the opposite order. ie. the case dependent/independent value 0 or -
1
must be multiplied by 16 (hex $00 or $10), while the direction value 0,1,2 or -
3
should be used directly. The allowed values are therefore 0,1,2,3,16,17,18,19 -
(hex $00,$01,$02,$03,$10,$11,$12 and $13).
2. FINDFIELD actually does FIND unless the byte at address peekw($1c )+7
happens to be zero! Therefore a temporary fix is to use:
pokeb(peekw($1c)+7),0
immediately before calling FINDFIELD.
NB pokeb peekw($1c)+7,0 must be called *immediately* before *every*
call to FINDFIELD.This is because that address is a "scratch register" used by-
the OPL runtime for many things.
This also means, in fact, that you must not use procedures or functions of any-
kind for arguments to FINDFIELD because they could change that address. eg.
pokeb ... :FINDFIELD(a$,s%:,GET,2) will fail. Always use constants, parameters-
,
variables (array elements too), fields or arithmetical expressions based on
these for FINDFIELD arguments.
Dave (psioncorp)