====== EnsureVariable statement ====== ==== Description ==== Ensures that the internal format of a Basic+ variable is coerced to the specified type. ==== Syntax ==== **EnsureVariable** //variable// Is //VARIABLE_TYPE// **//{{{guides:programming:programmers_reference_manual:caution.gif?28x21}}// Caution:** In the syntax for EnsureVariable, //VARIABLE_TYPE// is not quoted, although it is a literal. //VARIABLE_TYPE// should not be quoted. Quoting this parameter will cause compiling errors and unpredictable results. ==== Parameters ==== EnsureVariable has the following parameters. ^Parameter^Description^ |//Variable//|A BASIC+ variable name. The name cannot be an expression.| |//VARIABLE_TYPE//|Specifies the type of data referenced by variable.| EnsureVariable is required because OpenInsight is an "untyped" language, and variables do not have specific data types, while calls to external routines require the variable to be a specific type. This is important when passing the variable contents to DLL functions - if the return value from GetPointer is being assigned to a variable, use EnsureVariable first before passing it to GetPointer. EnsureVariable may also be necessary to control how variable comparisons are made. For example, consider comparing two Basic+ variables that contain different values in a numeric format. Due to the limitations of the numeric format when rounding, it is possible that they can appear as the same value for the purposes of the comparison. Coercing them to a string format before the comparison prevents this. === Data Types === The following table shows C data types and the corresponding OpenInsight Engine-level data types. ^C data type^OpenEngine-level Data Type^ |Char|String.| |Byte, Ubyte|Long.| |Short, Ushort|Long.| |Long|Long.| |Float|Double.| |Double|Double.| |LPVoid|Long.| |LPChar|String.| |LPByte, LPUByte|Long.| |LPShort, LPUShort|Long.| |LPLong|Long.| |LPDouble|Double.| ==== See Also ==== [[lockvariable|LockVariable]]