Len

Returns the length of an expression or data type

Syntax
   Declare Function Len ( ByRef expression As String ) As Integer
   Declare Function Len ( ByRef expression As ZString ) As Integer
   Declare Function Len ( ByRef expression As WString ) As Integer

   Declare Operator Len ( ByRef expression As datatype ) As datatype

   Declare Function Len ( datatype ) As Integer	

Usage
   result = Len( expression )
      or
   result = Len( DataType )

Parameters
   expression
      An expression of any type.
   datatype
      A DataType.

Return Value
   Returns the size of an expression or DataType (including the data fields 
   of a UDT) in bytes.

Description
   Len returns the length of an expression or the size of a DataType, in 
   bytes.

   In the first form, if expression is of type String, WString or ZString, 
   the length of the string in characters will be returned. If the 
   expression is of a user defined type, an Operator Len compatible with 
   that data type is called.  Otherwise, the size of the expression's data 
   type in bytes is returned.

   In the second form, if expression is ZString or WString, the size in 
   bytes of an ASCII or Unicode character is returned, respectively. If 
   datatype is String, the size of the string descriptor type is returned.

   If there is both a user defined type and a variable visible with the 
   same name in the current scope, the user defined type takes precedence 
   over the variable.  To ensure that the Len takes the variable instead of 
   the user defined type, wrap the argument to Len with parentheses to 
   force it to be seen as an expression.  For example Len((variable)).

   The Len unary Operator can be overloaded with user defined types.

Example
   Print Len("hello world") 'returns "11"
   Print Len(Integer) ' returns 4

   Type xyz
      a As Integer
      b As Integer
   End Type

   Print Len(xyz) ' returns 8
      

Version
   * Before fbc 1.08.0:
         Len was not returning the size of the data fields of a UDT.
         When a variable from a given namespace was accessed with the 
         namespace's name prefix, the argument to Len had to be wrapped 
         with parentheses to force it to be seen as an expression. For 
         example Len((namespace_name.variable)).

Dialect Differences
   * Len only allows expressions in the -lang qb dialect. 
   * Can be used with built-in types and user-defined types in the -lang fb
     and -lang fblite dialects.

Differences from QB
   * Can be used with built-in types and user-defined types in the -lang fb
     and -lang fblite dialects.
   * None in the -lang qb dialect.

See also
   * SizeOf

