|
- Miscellaneous
- Examples of custom sorting procedures
<Array>.Sort (Function) In french: <Tableau>.Trie
// Sort a one-dimensional array MyArray is array of 2 int MyArray[1] = 4 MyArray[2] = 1 MyArray.Sort(asAscending) Trace(MyArray[1], MyArray[2]) // Displays "1" then "4"
// Sort a two-dimensional array on the 2nd column MyArray.Sort(asAscending, 2)
// Sort a two-dimensional array on the 2nd column // (ascending) and the 3rd column (descending) MyArray.Sort(asAscending, "2;-3")
// Sort an array by using a comparison procedure MyArray.Sort(asFunction, Compare) // Comparison procedure INTERNAL PROCÉDURE Compare(Element1, Element2) IF Element1.Member < Element2.Member THEN RESULT -1 IF Element1.Member > Element2.Member THEN RESULT 1 RESULT 0
Syntax
Sort a one-dimensional array of simple elements Hide the details
<WLanguage array>.Sort([<Type of sort>])
<WLanguage array>: Array - Name of the Array variable to use. This array must be a one-dimensional array.
This array can also correspond to an array of simple elements of an advanced variable ("Group" array in the gglContact variables for example). - Name of Associative Array variable to use.
  The associative arrays cannot be sorted in this version.
<Type of sort>: Optional integer constant Type of sort to perform: | | asAscending (Default value) | Ascending sort. Versions 19 and laterFor an associative array: Sorting the elements of associative array: - if the asKey constant is specified: The sort is performed in ascending order according to the keys. In case of equality between two keys, the values are sorted according to the ascending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in ascending order according to the values. In case of equality between two values, the values are sorted according to the ascending key.
New in version 19For an associative array: Sorting the elements of associative array: - if the asKey constant is specified: The sort is performed in ascending order according to the keys. In case of equality between two keys, the values are sorted according to the ascending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in ascending order according to the values. In case of equality between two values, the values are sorted according to the ascending key.
For an associative array: Sorting the elements of associative array:- if the asKey constant is specified: The sort is performed in ascending order according to the keys. In case of equality between two keys, the values are sorted according to the ascending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in ascending order according to the values. In case of equality between two values, the values are sorted according to the ascending key.
| asDescending | Descending sort. Versions 19 and laterFor an associative array: Sorting the elements of associative array: - if the asKey constant is specified: The sort is performed in descending order according to the keys. In case of equality between two keys, the values are sorted according to the descending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in descending order according to the values. In case of equality between two values, the values are sorted according to the descending key.
New in version 19For an associative array: Sorting the elements of associative array: - if the asKey constant is specified: The sort is performed in descending order according to the keys. In case of equality between two keys, the values are sorted according to the descending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in descending order according to the values. In case of equality between two values, the values are sorted according to the descending key.
For an associative array: Sorting the elements of associative array:- if the asKey constant is specified: The sort is performed in descending order according to the keys. In case of equality between two keys, the values are sorted according to the descending value if the values can be compared. If the values cannot be compared, the initial order is kept.
- if the asKey constant is not specified: The sort is performed in descending order according to the values. In case of equality between two values, the values are sorted according to the descending key.
|
The sort type can be combined with one or more sort options: | | Versions 19 and laterasKey New in version 19asKey asKey | Associative array sorted according to the key order. If this constant is not specified, the associative array is sorted according to the order of values. This function is useful on the associative arrays only. | tccIgnoreAccent | Array sorted while ignoring the accented characters. This option is useful for arrays of strings.
| tccIgnoreCase | Array sorted while ignoring the case. This option is useful for the arrays of character strings. | Versions 20 and latertccIgnoreInsideSpace New in version 20tccIgnoreInsideSpace tccIgnoreInsideSpace | Array sorted while ignoring the space characters found inside the strings. This option is useful for the arrays of character strings. | tccIgnorePonctuationAndSpace | Array sorted while ignoring the space characters and the punctuation characters. This option is useful for arrays of strings.
| tccIgnoreSpace | Array sorted while ignoring the space characters found at the beginning and at the end of strings. This option is useful for the arrays of character strings. | tccLexicographicOrder | Array sorted according to the linguistic order. This option is useful for arrays of strings.
| tccRespectNumeric | Array sorted according to the order of numeric values. This option is useful for arrays of strings.
|
Sort a two-dimensional array of simple elements according to one column Hide the details
<WLanguage array>.Sort([<Type of sort>, ] <Column>)
<WLanguage array>: Array Name of the Array variable to use. This array must be a two-dimensional array.This array can also correspond to a two-dimensional array of an advanced type (sort an xlsDocument variable according to the values of a column for example). <Type of sort>: Optional integer constant Type of sort to perform: | | asAscending (Default value) | Ascending sort | asDescending | Descending sort |
The sort type can be combined with one or more sort options: | | tccIgnoreAccent | Array sorted while ignoring the accented characters. This option is useful for arrays of strings.
| tccIgnoreCase | Array sorted while ignoring the case. This option is useful for the arrays of character strings. | Versions 20 and latertccIgnoreInsideSpace New in version 20tccIgnoreInsideSpace tccIgnoreInsideSpace | Array sorted while ignoring the space characters found inside the strings. This option is useful for the arrays of character strings. | tccIgnorePonctuationAndSpace | Array sorted while ignoring the space characters and the punctuation characters. This option is useful for arrays of strings.
| tccIgnoreSpace | Array sorted while ignoring the space characters found at the beginning and at the end of strings. This option is useful for the arrays of character strings. | tccLexicographicOrder | Array sorted according to the linguistic order. This option is useful for arrays of strings.
| tccRespectNumeric | Array sorted according to the order of numeric values. This option is useful for arrays of strings.
|
<Column>: Integer Subscript of column where the sort will be performed.
Sort a two-dimensional array of simple elements according to several columns Hide the details
<WLanguage array>.Sort(<asColumn> , <Columns>)
<WLanguage array>: Array Name of the Array variable to use. This array must be a two-dimensional array.This array can also correspond to a two-dimensional array of an advanced type (sort performed on a variable of type xlsDocument according to the values of one or more columns for example). <asColumn>: Constant asColumn: Constant used to sort a two-dimensional array of simple elements according to several columns. <Columns>: Character string List of columns in which the sort must be performed. The different columns must be separated by a semicolon. To specify the sort direction, the subscript of the column must be preceded by: - "+" (or nothing) for an ascending sort.
- "-" for a descending sort.
For example: "2,-3" to perform an ascending sort on the second column and a descending sort on the third column.
Sort a one-dimensional array of classes, structures or records Hide the details
<WLanguage array>.Sort(<asMember> , <Members>)
<WLanguage array>: Array - Name of the Array variable to use. This array must be a one-dimensional array. This array can be:
- an array of classes,
- an array of structures,
- an array of advanced types,
Versions 22 and later an array of records. New in version 22 an array of records.  an array of records.
- Name of Associative Array variable to use. This array can be:
- an associative array of classes,
- an associative array of structures,
- an associative array of advanced types,
  The associative arrays cannot be sorted in this version. Versions 22 and later an associative array of records. New in version 22 an associative array of records.  an associative array of records.
<asMember>: Constant asMember: Constant used to sort a one-dimensional array of classes, structures or records. Versions 19 and laterFor an associative array: The elements of the associative array are sorted according to the order of values for the specified members. In case of equality between two values, the values are sorted according to the ascending or descending key (according to the sort direction of the first member). New in version 19For an associative array: The elements of the associative array are sorted according to the order of values for the specified members. In case of equality between two values, the values are sorted according to the ascending or descending key (according to the sort direction of the first member). For an associative array: The elements of the associative array are sorted according to the order of values for the specified members. In case of equality between two values, the values are sorted according to the ascending or descending key (according to the sort direction of the first member). <Members>: Character string Name of members used as sort criteria. If the sort is performed on several members, their names must be separated by a semicolon. To specify the sort direction, the member name must be preceded by: - "+" (or nothing) for an ascending sort.
- "-" for a descending sort.
- "." or ":" to perform a sort on chained properties.
For example: - "Member1;-Member3" to perform an ascending sort on the Member1 member and a descending sort on the Member3 member. - "Source.URL" to perform a sort on the URL property of the Source property.
Versions 22 and later New in version 22
Sort a one-dimensional array with a sort procedure Hide the details
<WLanguage array>.Sort(<asFunction> , <WLanguage sorting procedure>)
<WLanguage array>: Array - Name of the Array variable to use. This array must be a one-dimensional array. This array can be an array of advanced types.
- Name of Associative Array variable to use.
  The associative arrays cannot be sorted in this version.
<asFunction>: Constant asFunction: Constant used to sort a one-dimensional array with a sort procedure. <WLanguage sorting procedure>: Procedure name Name of the procedure used to sort the array elements. - For a one-dimensional array: WLanguage procedure in the following format:
PROCEDURE MaProcédure(Elément1, Elément2)
This procedure is automatically called by the sort mechanism to compare the elements between themselves, two by two. If the element 1 must be found before the element 2 in the sort order, the procedure must return -1. If the element 1 must be found after the element 2 in the sort order, the procedure must return 1. If the element 1 and the element 2 are identical, the procedure must return 0. Versions 19 and laterFor an associative array: WLanguage procedure in the following format:
PROCEDURE MaProcédure(Valeur1, Clé1, Valeur2, Clé2)
This procedure is automatically called by the sort mechanism to compare the elements between themselves, two by two. The comparison can be performed in the sort procedure according to the values or according to the keys. If the element 1 must be found before the element 2 in the sort order, the procedure must return -1. If the element 1 must be found after the element 2 in the sort order, the procedure must return 1. If the element 1 and the element 2 are identical, the procedure must return 0. New in version 19For an associative array: WLanguage procedure in the following format:
PROCEDURE MaProcédure(Valeur1, Clé1, Valeur2, Clé2)
This procedure is automatically called by the sort mechanism to compare the elements between themselves, two by two. The comparison can be performed in the sort procedure according to the values or according to the keys. If the element 1 must be found before the element 2 in the sort order, the procedure must return -1. If the element 1 must be found after the element 2 in the sort order, the procedure must return 1. If the element 1 and the element 2 are identical, the procedure must return 0. For an associative array: WLanguage procedure in the following format:
PROCEDURE MaProcédure(Valeur1, Clé1, Valeur2, Clé2)
This procedure is automatically called by the sort mechanism to compare the elements between themselves, two by two. The comparison can be performed in the sort procedure according to the values or according to the keys. If the element 1 must be found before the element 2 in the sort order, the procedure must return -1. If the element 1 must be found after the element 2 in the sort order, the procedure must return 1. If the element 1 and the element 2 are identical, the procedure must return 0.
Remarks Examples of custom sorting procedures Example of procedure used to compare 2 integers:
PROCÉDURE MaProcédure(nEntier1, nEntier2) IF nEntier1 > nEntier2 THEN RETURN 1 IF nEntier1 < nEntier2 THEN RETURN -1 RETURN 0
Example of a procedure used to compare two elements in an array of structures:
PROCÉDURE MaProcédure(stVar1, stVar2) IF stVar1:nEntier > stVar2:nEntier THEN RETURN 1 IF stVar1:nEntier < stVar2:nEntier THEN RETURN -1 RETURN 0
This page is also available for…
|
|
|
| |
| Click [Add] to post a comment |
|
| |
|
| |
| |
| |
| |
| |
| |
| | |
| |