12 Replies Latest reply on Dec 29, 2015 4:25 PM by martinsorich

    When 6 > 13.  Fishing for data in a simple array.




      Posting this as a cautionary tale (most likely to myself and possibly not for this first time).   I get caught out by this far too often.
      I realize that the default data type for a variable is text unless Draco observes it could be a number, in which case it is treated as  number.
      Where I stumble is pulling a "number" out of a variable stack (the stacking quite reasonably makes the data type text) and expecting it to be a number.

      #$$Stack simulates data gathering from 4 different records
      Set Variable [ $$Stack; Value:"3¶17¶24¶13" ]
      Set Variable [ $Test; Value:6 ]
      Set Variable [ $Count; Value:1 ]
      Set Variable [ $Loops; Value:ValueCount($$Stack) ]
        Set Variable [ $RowTest; Value:Case( $Test > GetValue($$Stack;$Count); $Test & " is apparently greater than " & GetValue($ $Stack;$Count);"Nothing") ]
        Show Custom Dialog [ Message: $RowTest; Buttons: “Oh!” ]
        Set Variable [ $Count; Value:1 + $Count ]
        Exit Loop If [ $Count > $Loops ]
      End Loop

      thus 6 > 3 which is correct and 6 > 13 which is wrong (except for very small values of 13)


      Case( $Test > GetAsNumber(GetValue($$Stack;$Count) solves this problem.  I am told this is known as "casting" - will work on remembering this fact.


      ps.  it is reasonable to call the data result of "3¶17¶24¶13" an "array"?






      "No good movie is too long and no bad movie is short enough." -- Roger Ebert