|
- Variant type and NULL
- Type of a variant
- Property Class on variants
- Named sub-elements
- Subscripted sub-elements
- Nesting named and indexed sub-elements
Variant (Type of variable) In french: Variant
The Variant type is used to: - store any simple value: boolean, numeric (Currency, Real, Integer, etc.), characters and character string, date (Date, Time, DateTime and Duration), etc.
Versions 19 and laterstore named or indexed sub-elements. New in version 19store named or indexed sub-elements. store named or indexed sub-elements. Versions 15 and laterstore any complex value: structures, classes, advanced types, arrays, associative arrays, queues, stacks and lists. New in version 15store any complex value: structures, classes, advanced types, arrays, associative arrays, queues, stacks and lists. store any complex value: structures, classes, advanced types, arrays, associative arrays, queues, stacks and lists.- handle the NULL value in WLanguage.
- store interactions with ActiveX objects and Automation programming.
Versions 17 and later New in version 17 Versions 18 and later New in version 18 Versions 21 and later New in version 21 Versions 22 and later New in version 22
nValue is Variant = 10 nValue = EDT_Edit1 nValue = Customer.Name
Syntax
Declaring and assigning a Variant type Hide the details
<Variable name> is Variant = <Value> OR
<Variable Name> is Variant <Variable name> = <Value>
<Variable name>: Name of the variable to declare. <Value>: Value that will be assigned to the variable. One of the following values can be assigned to a Variant variable:- any literal value,
- the content of a variable,
- the content of a simple control,
- the content of an item.
Remarks To specify that a Variant variable contains no value, use the NULL constant. Remarks: - for a Variant type, NULL means "Not assigned".
- for a Numeric type, NULL means "equal to 0".
nVal is int IF vVal = Null THEN ... // the test returns True because nVal=0 nVal = 5 IF vVal = Null THEN ... // the test returns False because nVal=5
vVal is Variant IF vVal = Null THEN ... // returns True because the variant is not assigned vVal = 0 IF vVal = Null THEN ... // returns False because the variant is assigned // with an integer whose value is 0 vVal = 5 IF vVal = Null THEN ... // returns False because the variant is assigned // with an integer whose value is 5
vVal is Variant vVal = Null IF vVal = 0 THEN ... // returns True because a non-assigned variable // and a value cannot be compared, True is returned by convention
The type of a variant is returned by Type. Type is used to get the type of value stored in the variable. Remarks: - VariantConvert is used to convert the type of value stored in a Variant variable.
- TypeVar is used to find out the type of variable.
vVal is Variant TypeVar(vVal) // returns the number of the variant type vVal..Type // returns the type of the value stored in the variant
Property Class on variants Class is used to obtain the name of the class used if the variant corresponds to a class. Versions 19 and laterNamed sub-elements You can directly use members without any declaration on a Variant variable. When assigning a member, if the member does not exist, it is automatically created ; if the member already exits, it is modified. Example:
Person is Variant Person.LastName = "MOORE" Person.FirstName = "Vince"
When reading a member, if the member does not exist, it is not created. To check if a member exists, use ..Exist. Example:
Person is Variant IF NOT Personn.Name..Exist THEN Error("The name was not specified") END
If the member does not exist, the returned value is Null. Several methods can be used to explicitly test the Null value: - use ..Value.
Example:
Element is Variant IF Element.MemberNotFound..Value = Null THEN ... END
Versions 23 and latertest the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
New in version 23test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
The named sub-elements can be handled by the following properties: | | Exist | Returns: - True if the element exists,
- False if the element does not exist. The element is not created.
| Name | Element name | Type | Type of element (same values as TypeVar). | Value | Element value. |
Using Member on Variant variables allows you to get the array of named elements. This array can be handled by FOR EACH, the Occurrence property, the [ ] operator, ... It is also possible to delete an element. Example:
o is JSON o.m = 1 o.n = 2 Trace(o) x is Variant = o Delete(x..Member, 1) Trace(x) // The member has been deleted.
New in version 19Named sub-elements You can directly use members without any declaration on a Variant variable. When assigning a member, if the member does not exist, it is automatically created ; if the member already exits, it is modified. Example:
Person is Variant Person.LastName = "MOORE" Person.FirstName = "Vince"
When reading a member, if the member does not exist, it is not created. To check if a member exists, use ..Exist. Example:
Person is Variant IF NOT Personn.Name..Exist THEN Error("The name was not specified") END
If the member does not exist, the returned value is Null. Several methods can be used to explicitly test the Null value: - use ..Value.
Example:
Element is Variant IF Element.MemberNotFound..Value = Null THEN ... END
Versions 23 and latertest the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
New in version 23test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
The named sub-elements can be handled by the following properties: | | Exist | Returns: - True if the element exists,
- False if the element does not exist. The element is not created.
| Name | Element name | Type | Type of element (same values as TypeVar). | Value | Element value. |
Using Member on Variant variables allows you to get the array of named elements. This array can be handled by FOR EACH, the Occurrence property, the [ ] operator, ... It is also possible to delete an element. Example:
o is JSON o.m = 1 o.n = 2 Trace(o) x is Variant = o Delete(x..Member, 1) Trace(x) // The member has been deleted.
Named sub-elements You can directly use members without any declaration on a Variant variable. When assigning a member, if the member does not exist, it is automatically created ; if the member already exits, it is modified. Example:
Person is Variant Person.LastName = "MOORE" Person.FirstName = "Vince"
When reading a member, if the member does not exist, it is not created. To check if a member exists, use ..Exist. Example:
Person is Variant IF NOT Personn.Name..Exist THEN Error("The name was not specified") END
If the member does not exist, the returned value is Null. Several methods can be used to explicitly test the Null value: - use ..Value.
Example:
Element is Variant IF Element.MemberNotFound..Value = Null THEN ... END
Versions 23 and latertest the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
New in version 23test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
test the Null value directly (available from version 230042). Example: test the Null value directly. Example:
Element is Variant IF Element.MemberNotFound = Null THEN ... END
The named sub-elements can be handled by the following properties: | | Exist | Returns: - True if the element exists,
- False if the element does not exist. The element is not created.
| Name | Element name | Type | Type of element (same values as TypeVar). | Value | Element value. |
Using Member on Variant variables allows you to get the array of named elements. This array can be handled by FOR EACH, the Occurrence property, the [ ] operator, ... It is also possible to delete an element. Example:
o is JSON o.m = 1 o.n = 2 Trace(o) x is Variant = o Delete(x..Member, 1) Trace(x) // The member has been deleted.
Versions 19 and laterSubscripted sub-elements The Variant variable can be directly used as an array of variants. Using the [ ] operator automatically creates the array. Example:
Days is Variant Days[1] = "Monday" Days[2] = "Tuesday" Days[3] = "Wednesday" Days[4] = "Thursday" Days[5] = "Friday" Days[6] = "Saturday" Days[7] = "Sunday"
The array operations can be directly performed on the Variant variable: FOR EACH, Occurrence, [ ] operator, ... New in version 19Subscripted sub-elements The Variant variable can be directly used as an array of variants. Using the [ ] operator automatically creates the array. Example:
Days is Variant Days[1] = "Monday" Days[2] = "Tuesday" Days[3] = "Wednesday" Days[4] = "Thursday" Days[5] = "Friday" Days[6] = "Saturday" Days[7] = "Sunday"
The array operations can be directly performed on the Variant variable: FOR EACH, Occurrence, [ ] operator, ... Subscripted sub-elements The Variant variable can be directly used as an array of variants. Using the [ ] operator automatically creates the array. Example:
Days is Variant Days[1] = "Monday" Days[2] = "Tuesday" Days[3] = "Wednesday" Days[4] = "Thursday" Days[5] = "Friday" Days[6] = "Saturday" Days[7] = "Sunday"
The array operations can be directly performed on the Variant variable: FOR EACH, Occurrence, [ ] operator, ... Versions 19 and laterNesting named and indexed sub-elements Since the named and indexed sub-elements are of type Variant, they can be nested recursively. Example:
Library is Variant Library.Book[1].Title = "Mrs Dalloway" Library.Book[1].Author = "Virginia Woolf" Library.Book[2].Title = "Oliver Twist" Library.Book[2].Author = "Charles Dickens"
New in version 19Nesting named and indexed sub-elements Since the named and indexed sub-elements are of type Variant, they can be nested recursively. Example:
Library is Variant Library.Book[1].Title = "Mrs Dalloway" Library.Book[1].Author = "Virginia Woolf" Library.Book[2].Title = "Oliver Twist" Library.Book[2].Author = "Charles Dickens"
Nesting named and indexed sub-elements Since the named and indexed sub-elements are of type Variant, they can be nested recursively. Example:
Library is Variant Library.Book[1].Title = "Mrs Dalloway" Library.Book[1].Author = "Virginia Woolf" Library.Book[2].Title = "Oliver Twist" Library.Book[2].Author = "Charles Dickens"
This page is also available for…
|
|
|
| |
| Comentarios Sobre tipo Variant |
|
| http://windevdesenvolvimento.blogspot.com.br/2016/01/a-incrivel-variavel-do-tipo-variant-e.html
http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/854-incrivel-variavel-tipo-variant-buffer-uma-das-solucoes/read.awp
|
|
|
|
| |
| |
| |
| |
| |
| |
| | |
| |