john — 8-Oct-2014/10:17:39-7:00
Hi
I have changed this program and now it won't work. I have been absent from rebol for a while and I'm sure someone will spot my error.
When I make an error entry (say I enter an alpha in a decimal field) the error isn't getting recorded in errfld and errmsg. This was working when errfld and errmsg were an array with positions 1/1 and 1/2. Now it doesn't work. I'm hoping someone with experience can spot this quickly and tell me what is going on here.
Thx.
john — 8-Oct-2014/10:19:04-7:00
R E B O L []
fldblk: [vi to-integer vdc to-decimal vdt to-date vtm to-time vmn to-money]
errchk: func [fldblk errfld errmsg ][
-foreach [fld tp] fldblk [
--;print errblk
--;print i
--f: get fld
--;print rejoin [tp " " f/text]
--if error? try [do rejoin [tp " " f/text]] [ errfld: fld errmsg: "Invalid entry" ]
-]
]
view gui: layout[
-vi: field
-vdc: field
-vdt: field
-vtm: field
-vmn: field
-
-button "val" [
--errfld: ""
--errmsg: ""
--errchk fldblk errfld errmsg
--either errfld == "" [
---alert "Good Entry"
--][
---alert reform ["Errors " errmsg]
---;print to-string errfld
---focus get errfld
---print errmsg
---return
--]
-]
]
Nick — 8-Oct-2014/23:11:22-7:00
Hi John,
Try this:
R E B O L []
fldblk: [vi to-integer vdc to-decimal vdt to-date vtm to-time vmn to-money]
errchk: func [fldblk][
errfld: ""
errmsg: ""
foreach [fld tp] fldblk [
f: get fld
if error? try [do rejoin [tp " " f/text]] [errfld: form fld errmsg: "Invalid entry" ]
]
reduce [errfld errmsg]
]
view gui: layout[
vi: field
vdc: field
vdt: field
vtm: field
vmn: field
button "val" [
errs: errchk fldblk
either errs/2 = "" [
alert "Good Entry"
][
alert reform ["Errors " errs/1]
focus do errs/1
print errs/2
return
]
]
]
John — 9-Oct-2014/11:06:27-7:00
Hi Nick,
Once again you have come to the rescue. Thx pal.
Sam — 9-Oct-2014/21:41:24-7:00
The money (vmn) field accepts very long numbers. But, if one were to later use to-money on an entry greater than 15 digits, a math error will occur. So this error would not be captured.
Using a number greater in length than 9 digits in vi, the integer field, produces an an error alert. Sometimes. Except when 10 digits are used as the first entry to the field. If later applying to-integer to an entry longer than 9 digits a math error results. This error is captured - sometimes.
The integer field error alert seems almost right, but shouldn't the money field generate an error when the length of the entry exceeds 15 in a way similar to integer field entry?
Then again, why is vi and the to-integer function is limited to a length of 9 (or 10) and to-money limited to 15?
Apologies in advance if I got this wrong. I found it confusing.