[QUESTION] data types on "input" cmd - compsystems - 12-07-2016 02:43 PM
Hello HP-PRIME programmers and users
According to the help in data types of "INPUT" cmd, if the value is -1, it means "allow all types" (REAL, COMPLEX, ..., etc), I'm misunderstanding?.
Executing the dialog box, an output message is generated "Error: Invalid input" Why?
Test code
PHP Code:
export input0() begin local a, b, c; local resetVAL_a, resetVAL_b, resetVAL_c; local initVAL_a, initVAL_b, initVAL_c;
//initVAL_a:=1; initVAL_b:=2; initVAL_c:=3; // real //initVAL_a:=#FFFh; initVAL_b:=#FFh; initVAL_c:=#Fh; // integer //initVAL_a:="abc"; initVAL_b:="123"; initVAL_c:="X"; // string //initVAL_a:=i; initVAL_b:=(3,4); initVAL_c:=3+4*i; // complex initVAL_a:=[1]; initVAL_b:=[2]; initVAL_c:=[3]; // matrix //initVAL_a:={1}; initVAL_b:={2}; initVAL_c:={3}; // list //initVAL_a:=cas( "f(x):=x+20" ); initVAL_b:=cas( "f(x):=x+30" ); initVAL_c:='A+B'; // function //initVAL_a:=1_m; initVAL_b:=2_cm; initVAL_c:=3_inch; // real
resetVAL_a:=0; resetVAL_b:=0; resetVAL_c:=0;
local ObjectType_AllAllowed := -1; local ObjectType_Real := 0; local ObjectType_Integer := 1; local ObjectType_String := 2; local ObjectType_Complex := 3; local ObjectType_Matrix := 4; local ObjectType_List := 6; local ObjectType_Function := 8; local ObjectType_Unit := 9; local ObjectType_CAS := 14;
local ObjectType := ObjectType_List; local title;
case if ObjectType == 0 then title:="Real" end; if ObjectType == 1 then title:="Integer" end; if ObjectType == 2 then title:="String" end; if ObjectType == 3 then title:="Complex" end; if ObjectType == 4 then title:="Matrix" end; if ObjectType == 6 then title:="List" end; if ObjectType == 8 then title:="Function" end; if ObjectType == 9 then title:="Unit" end; if ObjectType == 14 then title:="CAS" end; default title:="?" end;
local ObjectType_Real := 0; local ObjectType_Integer := 1; local ObjectType_String := 2; local ObjectType_Complex := 3; local ObjectType_Matrix := 4; local ObjectType_List := 6; local ObjectType_Function := 8; local ObjectType_Unit := 9; local ObjectType_CAS := 14;
local ok := 1; local cancel := 0; local keyPressedOnMenu := 0; keyPressedOnMenu := input ( { {a, [ObjectType] }, {b, [ObjectType] }, {c, [ObjectType] }
}, title, { "label_a", "label_b","label_c" }, { "help_a", "help_b", "help_c" }, { resetVAL_a, resetVAL_b, resetVAL_c }, { initVAL_a, initVAL_b, initVAL_c } ); if keyPressedOnMenu == ok then return ({a, b, c}); //return ([expr(a), expr(b), expr(c)]); // for -1 else return "Done"; end; end;
RE: [QUESTION] data types on "input" cmd - Tim Wessman - 12-07-2016 05:02 PM
(12-07-2016 02:43 PM)compsystems Wrote: return ([a, b, c]);
You are returning a vector/matrix of strings. That is not a valid object type. Try typing ["1"] and you will see the same error.
RE: [QUESTION] data types on "input" cmd - compsystems - 12-07-2016 05:42 PM
Thanks TIM, the output is converted into a string
Thus requires conversion to expression
return ([a, b, c]); ->
return ([expr(a), expr(b), expr(c)]);
or
return ({a, b, c});
A help for data types
I think initialization variables should also be detected with the data type, in order to load correctly.
The following code does not generate error, Type defined LIST, type loaded Matrix, should generate a"Error: Invalid type , a list is expected"
PHP Code:
export input0() begin local a, b, c; local resetVAL_a, resetVAL_b, resetVAL_c; local initVAL_a, initVAL_b, initVAL_c;
//initVAL_a:=1; initVAL_b:=2; initVAL_c:=3; // real 0 //initVAL_a:=#FFFh; initVAL_b:=#FFh; initVAL_c:=#Fh; // integer 1 //initVAL_a:="abc"; initVAL_b:="123"; initVAL_c:="X"; // string 2 //initVAL_a:=i; initVAL_b:=(3,4); initVAL_c:=3+4*i; // complex 3 initVAL_a:=[1]; initVAL_b:=[2]; initVAL_c:=[3]; // matrix 4 //initVAL_a:={1}; initVAL_b:={2}; initVAL_c:={3}; // list 6 //initVAL_a:=cas( "f(x):=x+20" ); initVAL_b:=cas( "f(x):=x+30" ); initVAL_c:='A+B'; // function 8 //initVAL_a:=1_m; initVAL_b:=2_cm; initVAL_c:=3_inch; // unit 9
resetVAL_a:=0; resetVAL_b:=0; resetVAL_c:=0;
local ObjectType_AllAllowed := -1; local ObjectType_Real := 0; local ObjectType_Integer := 1; local ObjectType_String := 2; local ObjectType_Complex := 3; local ObjectType_Matrix := 4; local ObjectType_List := 6; local ObjectType_Function := 8; local ObjectType_Unit := 9; local ObjectType_CAS := 14;
local ObjectType := ObjectType_List; local title;
case if ObjectType == 0 then title:="Real" end; if ObjectType == 1 then title:="Integer" end; if ObjectType == 2 then title:="String" end; if ObjectType == 3 then title:="Complex" end; if ObjectType == 4 then title:="Matrix" end; if ObjectType == 6 then title:="List" end; if ObjectType == 8 then title:="Function" end; if ObjectType == 9 then title:="Unit" end; if ObjectType == 14 then title:="CAS" end; default title:="?" end;
local ObjectType_Real := 0; local ObjectType_Integer := 1; local ObjectType_String := 2; local ObjectType_Complex := 3; local ObjectType_Matrix := 4; local ObjectType_List := 6; local ObjectType_Function := 8; local ObjectType_Unit := 9; local ObjectType_CAS := 14;
local ok := 1; local cancel := 0; local keyPressedOnMenu := 0; keyPressedOnMenu := input ( { {a, [ObjectType] }, {b, [ObjectType] }, {c, [ObjectType] }
}, title, { "label_a", "label_b","label_c" }, { "help_a", "help_b", "help_c" }, { resetVAL_a, resetVAL_b, resetVAL_c }, { initVAL_a, initVAL_b, initVAL_c } ); if keyPressedOnMenu == ok then return ({a, b, c}); //return ([expr(a), expr(b), expr(c)]); // for -1 else return "Done"; end; end;
|