Changes log (txt file) Compare FastGrid 1.0 & TreeGrid 17.1
Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC
Simple examples of creating FastGrid Create FastGrid Display grid Access grid by API Sheets, more grids switched in one place Layout and configuration Data rows, columns, toolbars, images Changes in data rows, columns, toolbars Saving changes to server Mark changes Loading children on expand parent Short format
Parts - ColParts and RowParts Part size Part scroll position Sets Column sets Row sets
Toolbar Cells Icon Height Width Toolbar position Dragging and manipulating cells Special toolbars
Row / column id Row / column index Row / column name
API to get grid objects Auto added columns & rows on scroll Blocks of rows / columns Adding / copying / moving Deleting Showing and hiding Layout menu Selecting rows and columns Fill cell values by dragging Locking grid against changes Undo & redo
Row and column tree Row tree Column tree Expand & collapse
Read and write any values by API Cell value Cell attributes Cell value & attributes in UTF8 Store
Editing During editing Validation and errors
Row cell side icons Icons definition Mark icons and charts Mark icons list Row cell floating images
Row height Column width Resizing rows and columns Padding Margin Cell span
Grid style and look Cell style permissions Cell style Cell outer border Cell inner border Alternate row & column background
Cell hyperlink Cell tooltip Static cells Other cell attributes Row & column attributes to speed up
Bool type Check side icon Bool type & Check side icon
JavaScript formulas Aggregate functions String aggregate functions Other functions
Formula rules Formula attributes Defined names for editable formulas Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions
Dialog Dialog Place Dialog API Menu definition in Script Cell menu List Suggest
Sorting Sorting settings Comparing strings
Grouping Grouping settings Comparing strings Pivot grid
Filtering Filter settings Comparing strings
Search in cells Import files to gridExport files Export and copy to clipboard CSV data
Copy & paste Copy to clipboard Paste from clipboard
Grid size Grid scrollbars Paging and view Media rules - responsive design
Saving settings in storage or cookiesFocus cell and cell ranges Mouse hover cells Highlight cells, rows and columns
Mouse events Key events API events
API for iterating rows and columns Paint and repaint Various API methods
Basic description Main advantages Basic usage License Download Documentation
Bits - small integers or enums Integers or enums with strings Date and time Floating point numbers Special strings
Integer 1 char String 1 char Date 1 char Bits 1 char Integer 2 chars String 2 chars Date 2 chars Float 2 chars Integer 3 chars String 3 chars Date 3 chars Integer and double float 5 chars String 5 chars Date 5 chars Fixed length string Separated strings Adjacent strings Prefix for escaping string Fixed length data Unused custom codes Prefix for stored separator or length Prefix for stored base number Unused basic ucodes
chars signed decimals multiple limits varstrings escape base chars2 signed2 decimals2 multiple2 limits2
Internal coding Profiling times for ucode options Function referenceUTF8 Store documentation; version 1.0
The basic ucode has never set any bit of 0x1C00 => (ucode & 0x1C00) == 0.ucode hexa | ucode deci | Size in chars | Available numbers | Description | ||||||||||||||||||||||||||||||||
Integer 1 char | ||||||||||||||||||||||||||||||||||||
0x01 | 1 | 1 char | 0 ... 63400 |
Values 0 ... 90 are in 1 byte, values 91 ... 2008 are in 2 bytes, other values are in 3 bytes. Can store also null, NaN and "". Floating point values have always decimals cut off - use GetUCode(1,0,X) instead. Does not store in | ||||||||||||||||||||||||||||||||
0x81 | 129 | 1+ char | 0 ... 63400 or var string | Like 0x01 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
0x02 | 2 | 1 char | -31700 ... 31700 |
Values -45 ... 45 are in 1 byte, values -1005 ... -46 and 46 ... 1005 are in 2 bytes, other values are in 3 bytes. Can store also null, NaN and "". Floating point values have always decimals cut off - use GetUCode(1,1,X) instead. Does not store in | ||||||||||||||||||||||||||||||||
0x82 | 130 | 1+ char | -31700 ... 31700 or var string | Like 0x02 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
String 1 char | ||||||||||||||||||||||||||||||||||||
0x03 | 3 | 1 char | 63401 texts | Directly stores only null, NaN and "", all other values are stored in texts. The fasted read and write. texts indexes 0 ... 90 are in 1 byte, values 91 ... 2008 are in 2 bytes, other values are in 3 bytes. | ||||||||||||||||||||||||||||||||
0x83 | 131 | 1+ char | var string | Stores all values directly to output as string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
Date 1 char | Accepts also base date, added by AddToUCode | |||||||||||||||||||||||||||||||||||
0x04 | 4 | 1 char | Full date yyyy-MM-dd or 6700 texts |
Stores date without time. Can store up to 65 years around base date. Default base date is 1/1/2025, default range is 1/1/1960 - 1/1/2090. The values closer to base date (from both sides) are coded smaller. Dates outside range or with time can be coded (according to error) to utexts by ucode 0x24, up to 6700 values. Not date values can be coded to texts, up next 6700 values. | ||||||||||||||||||||||||||||||||
0x84 | 132 | 1+ char | Full date or var string | Like 0x04, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x05 | 5 | 1 char | Short date MM-dd HH:mx or 13268 texts |
Stores incomplete date without year, but with hours and quarters (only H:00,H:15,H:30,H:45). The year can be set by base date. Default year is 1970 as JavaScript zero year. Dates without time are coded smaller. Dates in different than base year or with minutes can be coded (according to error) to utexts by ucode 0x24, up to 13268 values. Not date values can be coded to texts, up next 13268 values. | ||||||||||||||||||||||||||||||||
0x85 | 133 | 1+ char | Short date or var string | Like 0x05, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x06 | 6 | 1 char | Time am/pm hh:mm:ss or 7124 texts |
Stores time with seconds, hours only 0 - 11. The date and am/pm can be set by base date. Default base date is 1/1/1970 as JavaScript zero date. Times without hours are coded smaller. Dates in different than base day and am/pm or with milliseconds can be coded (according to error) to utexts by ucode 0x24, up to 7124 values. Not date values can be coded to texts, up next 7124 values. To ignore date and save only time, set error attribute in WriteValue to 4 or to other value with 3rd bit &4 set. | ||||||||||||||||||||||||||||||||
0x86 | 134 | 1+ char | Time am/pm or var string | Like 0x06, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x07 | 7 | 1 char | Short time HH:mm:sx or 5780 texts |
Stores time with seconds rounded to 2 or 5 (m:00,m:02,m:04, Dates in different than base date or with odd seconds can be coded (according to error) to utexts by ucode 0x24, up to 5780 values. Not date values can be coded to texts, up next 5780 values. To ignore date and save only time, set error attribute in WriteValue to 4 or to other value with 3rd bit &4 set. | ||||||||||||||||||||||||||||||||
0x87 | 135 | 1+ char | Short time or var string | Like 0x07, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
Bits in 1 char | Accepts also base number, added by AddToUCode, e.g. for base = 100, AddToUCode( | |||||||||||||||||||||||||||||||||||
0x08 | 8 | 1 char |
0 ... 63400 (without other bits) 0 ... 31688 (with 1 bit) 0 ... 15852 (with 2 bits) 0 ... 7924 (with 3 bits) 0 ... 3960 (with 4 bits) 0 ... 1978 (with 5 bits) |
Stores one positive number in char with some bits already filled by ucode = 0xB - 0xF. It can store also null, NaN and "", always in 2 bytes. Does not store in The maximal number that can be stored differs according to the bits already filled in the char: without other bits - 0 ... 63400 (0 ... 92 in 1 byte, 93 ... 2008 in 2 bytes, 2009 ... 63400 in 3 bytes), with 1 bit - 0 ... 31688 (0 ... 46 in 1 byte, 47 ... 1002 in 2 bytes, 1004 ... 31688 in 3 bytes), with 2 bits - 0 ... 15852 (0 ... 23 in 1 byte, 24 ... 500 in 2 bytes, 501 ... 15852 in 3 bytes), with 3 bits - 0 ... 7924 (0 ... 12 in 1 byte, 13 ... 248 in 2 bytes, 250 ... 7924 in 3 bytes), with 4 bits - 0 ... 3960 (0 ... 6 in 1 byte, 7 ... 123 in 2 bytes, 124 ... 3960 in 3 bytes), with 5 bits - 0 ... 1978 (0 ... 2 in 1 byte, 3 ... 60 in 2 bytes, 61 ... 1978 in 3 bytes). For example WriteValues([2,500],[0xC,0x8]) codes both the values to one char, the first value in the first two bits and the second value in the rest. For example WriteValues([5,1, | ||||||||||||||||||||||||||||||||
0x09 | 9 | 1 char |
-31700 ... 31700 (without other bits) -15844 ... 15844 (with 1 bit) -7926 ... 7926 (with 2 bits) -3962 ... 3962 (with 3 bits) -1980 ... 1980 (with 4 bits) -989 ... 989 (with 5 bits) |
Stores one integer number in char with some bits already filled by ucode = 0xB - 0xF. It can store also null, NaN and "", always in 2 bytes. Does not store in The maximal range that can be stored differs according to the bits already filled in the char: without other bits - -31700 ... 31700 (-46 ... 46 in 1 byte, -1003 ... -47 and 47 ... 1002 in 2 bytes, the rest in 3 bytes), with 1 bit - -15844 ... 15844 (-23 ... 23 in 1 byte, -501 ... 24 and 24 ... 501 in 2 bytes, the rest in 3 bytes), with 2 bits - -7926 ... 7926 (-12 ... 11 in 1 byte, -250 ... -13 and 12 ... 250 in 2 bytes, the rest in 3 bytes), with 3 bits - -3962 ... 3962 (-6 ... 6 in 1 byte, -124 ... -7 and 7 ... 124 in 2 bytes, the rest in 3 bytes), with 4 bits - -1980 ... 1980 (-3 ... 3 in 1 byte, -62 ... -4 and 4 ... 61 in 2 bytes, the rest in 3 bytes), with 5 bits - -989 ... 989 (-1 ... 1 in 1 byte, -30 ... -2 and 2 ... 30 in 2 bytes, the rest in 3 bytes). | ||||||||||||||||||||||||||||||||
0x0A | 10 | 1 char |
63401 texts (without other bits) 31689 texts (with 1 bit) 15853 texts (with 2 bits) 7925 texts (with 3 bits) 3961 texts (with 4 bits) 1979 texts (with 5 bits) |
Directly stores only null, NaN and "" in 2 bytes, all other values are stored in texts.
Stores the index in char with some bits already filled by ucode = 0xB - 0xF. The maximal index that can be stored differs according to the bits already filled in the char: without other bits - 63401 texts (0 ... 92 in 1 byte, 93 ... 2008 in 2 bytes, 2009 ... 63400 in 3 bytes), with 1 bit - 31689 texts (0 ... 46 in 1 byte, 47 ... 1002 in 2 bytes, 1003 ... 31688 in 3 bytes), with 2 bits - 15853 texts (0 ... 23 in 1 byte, 24 ... 500 in 2 bytes, 501 ... 15852 in 3 bytes), with 3 bits - 7925 texts (0 ... 12 in 1 byte, 13 ... 248 in 2 bytes, 249 ... 7924 in 3 bytes), with 4 bits - 3961 texts (0 ... 6 in 1 byte, 7 ... 123 in 2 bytes, 124 ... 3960 in 3 bytes), with 5 bits - 1979 texts (0 ... 2 in 1 byte, 3 ... 60 in 2 bytes, 61 ... 1978 in 3 bytes). | ||||||||||||||||||||||||||||||||
0x0B | 11 | 1 bit | 0, 1 | Stores 6 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as 0. | ||||||||||||||||||||||||||||||||
0x8B | 139 | 1 bit | 2 texts | Stores 6 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as string. | ||||||||||||||||||||||||||||||||
0x0C | 12 | 2 bits | 0, 1, 2, 3 | Stores 3 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as 0. | ||||||||||||||||||||||||||||||||
0x8C | 140 | 2 bits | 4 texts | Stores 3 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as string. | ||||||||||||||||||||||||||||||||
0x0D | 13 | 3 bits | 0, 1, 2, 3, 4, 5, 6, 7 | Stores 2 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as 0. | ||||||||||||||||||||||||||||||||
0x8D | 141 | 3 bits | 8 texts | Stores 2 values per one char. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as string. | ||||||||||||||||||||||||||||||||
0x0E | 14 | 4 bits | 0 ... 15 | Stores 3 values per two chars. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as 0. | ||||||||||||||||||||||||||||||||
0x8E | 142 | 4 bits | 16 texts | Stores 3 values per two chars. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as string. | ||||||||||||||||||||||||||||||||
0x0F | 15 | 5 bits | 0 ... 31 | Stores 6 values per five chars. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as 0. | ||||||||||||||||||||||||||||||||
0x8F | 143 | 5 bits | 32 texts | Stores 6 values per five chars. Use WriteValues to store bits values. Saving single value by WriteValue is not possible. null, NaN, string is saved as string. | ||||||||||||||||||||||||||||||||
Integer 2 chars | ||||||||||||||||||||||||||||||||||||
0x11 | 17 | 2 chars | -1e7 ... 4e9 or 10M texts |
Values <-183; 7,359> in 2 bytes, <-18,743; -184> and <7,360; 302,271> in 3 bytes, <-448,749; -18,744> and <302,272; 13,816,111> in 4 bytes, <-1,000,000; -448,750> and <13,816,112; 131,814,697> in 5 bytes, <131,814,698; 4,000,000,000> in 6 bytes texts index <0; 735> in 2 bytes, <736; 30,815> in 3 bytes, <30,816; 829,239> in 4 bytes, <829,240; 10,653,719> in 5 bytes. Floating point values have always decimals cut off - use GetUCode(2,0,X) instead. | ||||||||||||||||||||||||||||||||
0x91 | 145 | 2+ chars | -1e7 ... 4e9 or var string | Like 0x11 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
0x12 | 18 | 2 chars | -2e9 ... 2e9 or 20M texts |
Values <-3,679; 3,679> in 2 bytes, <-151,135; -3,680> and <3,680; 151,135> in 3 bytes, <-6,908,055; -151,136> and <151,136; 6,908,055> in 4 bytes, <-65,907,348; -6,908,056> and <6,908,056; 65,907,348> in 5 bytes, <-2,000,000,000; -65,907,349> and <65,907,349; 2,000,000,000> in 6 bytes texts index <0; 735> in 2 bytes, <736; 30,815> in 3 bytes, <30,816; 829,239> in 4 bytes, <829,240; 20,926,949> in 5 bytes. Floating point values have always decimals cut off - use GetUCode(2,1,X) instead. | ||||||||||||||||||||||||||||||||
0x92 | 146 | 2+ chars | -2e9 ... 2e9 or var string | Like 0x12 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
String 2 chars | ||||||||||||||||||||||||||||||||||||
0x13 | 19 | 2 chars | unli | Directly stores only null, NaN and "", all other values are stored in texts. texts indexes <0; 7,359> in 2 bytes, <7,360; 302,271> in 3 bytes, <302,272; 13,816,111> in 4 bytes, <13,816,112; 131,814,697> in 5 bytes, <131,814,698; 4,000,000,000> in 6 bytes | ||||||||||||||||||||||||||||||||
0x93 | 147 | 2+ chars | var string | Stores all values directly to output as string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
Date 2 chars | Accepts also base date, added by AddToUCode. | |||||||||||||||||||||||||||||||||||
0x14 | 20 | 2 chars | Date and time yyyy-MM-dd HH:mm:ss or 5M texts |
Stores date with time with seconds. Can store up to 60 years around base date. Default base date is 1/1/2025, default range is 1/1/1965 - 1/1/2085. The dates closer to base date (from both sides) and dates without time are coded smaller. Dates outside range or with milliseconds can be coded (according to error) to utexts by ucode 0x24. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0x94 | 148 | 2+ chars | Date and time or var string | Like 0x14, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x15 | 21 | 2 chars | Date and short time yyyy-MM-dd HH:mm or 5M texts |
Stores date with time without seconds. Can store up to 3600 years around base date. Default base date is 1/1/2025. The dates with time are coded longer than in the 0x14. Dates outside range or with seconds can be coded (according to error) to utexts by ucode 0x25. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0x95 | 149 | 2+ chars | Date and short time or var string | Like 0x15, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x16 | 22 | 2 chars | Time and date yyyy-MM-dd HH:mm:ss or 5M texts |
Stores date with time with seconds. Can store up to 60 years around base date. Default base date is 1/1/2025, default range is 1/1/1965 - 1/1/2085. The difference to 0x14 is only in coding, the times on base date are coded smaller. Dates outside range or with milliseconds can be coded (according to error) to utexts by ucode 0x24. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0x96 | 150 | 2+ chars | Time and date or var string | Like 0x16, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x17 | 23 | 2 chars | Time HH:mm: |
Stores time with milliseconds. The date can be set by base date. Default base date is 1/1/1970 as JavaScript zero date. Times without seconds / milliseconds are coded smaller. Dates in different than base date can be coded (according to error) to utexts by ucode 0x24. Not date values can be coded to texts. To ignore date and save only time, set error attribute in WriteValue to 4 or to other value with 3rd bit &4 set. | ||||||||||||||||||||||||||||||||
0x97 | 151 | 2+ chars | Time or var string | Like 0x17, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
Float 2 chars | ||||||||||||||||||||||||||||||||||||
0x1F | 31 | 2 chars | Single float, 7 digits or 10M texts -1e38 ... 1e38 (1e-33) |
Single precision float, numbers with 7 digits precision -1e38 ... 1e38, minimal not zero number is 1e-33. The number differs from IEEE 754 Single float in maximal negative exponent, it is reduced from 38 to 33. The numbers with more than 7 significant digits are always rounded when storing. Integer values <-92; 91> in 2 bytes, <-9,372; 9,371> in 3 bytes, <-224,375; 224,375> in 4 bytes, <-5,000,000; 5,000,000> in 5 bytes, all the rest in 6 bytes. | ||||||||||||||||||||||||||||||||
0x9F | 159 | 2+ chars | Single float, 7 digits or var string -1e38 ... 1e38 (1e-33) | Like 0x1F and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
Integer 3 chars | ||||||||||||||||||||||||||||||||||||
0x21 | 33 | 3 chars | -1e14 ... 1e14 or unli |
Values <0; 778,687> in 3 bytes, <778,688; 49,531,327> in 4 bytes, <49,531,328; 2,626,198,879> in 5 bytes, <2,626,198,880; 74,784,621,919> in 6 bytes, <74,784,621,920; 1,794,598,183,855> in 7 bytes, <1,794,598,183,856; 23,513,811,959,215> in 8 bytes, <-1e14; -1> and <23,513,811, texts index <0; 7,359> in 3 bytes, <7,360; 302,271> in 4 bytes, <302,272; 13,816,111> in 5 bytes, <13,816,112; 131,814,697> in 6 bytes, <131,814,698; 4,000,000,000> in 7 bytes. Floating point values have always decimals cut off - use GetUCode(3,0,X) instead. | ||||||||||||||||||||||||||||||||
0xA1 | 161 | 3+ chars | -1e14 ... 1e14 or var string | Like 0x21 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
0x22 | 34 | 3 chars | -1e14 ... 1e14 or unli |
Values <-389,344; 389,343> in 3 bytes, <-24,765,664; -389,345> and <389,344; 24,765,663> in 4 bytes, <-1,313,099,440; -24,765,665> and <24,765,664; 1,313,099,439> in 5 bytes, <-37,392,310,960; -1,313,099,441> and <1,313,099,440; 37,392,310,959> in 6 bytes, <-897,299,091,928; -37,392,310,961> and <37,392,310,960; 897,299,091,927> in 7 bytes, <-11,756,905, texts index <0; 7,359> in 3 bytes, <7,360; 302,271> in 4 bytes, <302,272; 13,816,111> in 5 bytes, <13,816,112; 131,814,697> in 6 bytes, <131,814,698; 4,000,000,000> in 7 bytes. Floating point values have always decimals cut off - use GetUCode(3,1,X) instead. | ||||||||||||||||||||||||||||||||
0xA2 | 162 | 3+ chars | -1e14 ... 1e14 or var string | Like 0x22 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
String 3 chars | ||||||||||||||||||||||||||||||||||||
0x23 | 35 | 3 chars | unli | Directly stores only null, NaN and "", all other values are stored in texts. texts indexes <0; 778,687> in 3 bytes, <778,688; 49,531,327> in 4 bytes, <49,531,328; 2,626,198,879> in 5 bytes, ... | ||||||||||||||||||||||||||||||||
0xA3 | 163 | 3+ chars | var string | Stores all values directly to output as string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
Date 3 chars | Accepts also base date, added by AddToUCode. | |||||||||||||||||||||||||||||||||||
0x24 | 36 | 3 chars | Full date and time yyyy-MM-dd HH:mm: |
Stores date and time with milliseconds. Can store up to 3000 years around base date. Default base date is 1/1/2025. The date without time is coded shorter. Dates outside range can be coded (according to error) to utexts by 0x34 ucode. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0xA4 | 164 | 3+ chars | Full date and time or var string | Like 0x24, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
0x25 | 37 | 3 chars | Full date and time yyyy-MM-dd HH:mm:ss or texts |
Stores date and time. Can store any years around base date. Default base date is 1/1/2025. The date without time is coded shorter. The date with time is coded longer than in 0x24. Dates with milliseconds can be coded (according to error) to utexts by 0x34 ucode. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0xA5 | 165 | 3+ chars | Full date and time or var string | Like 0x25, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
Integer and double float 5 chars | ||||||||||||||||||||||||||||||||||||
0x31 | 49 | 5 chars | double float, 15 digits or unli -1e308 ... 1e308 (min positive 1e-323) |
Integer values <0; 5,444,586,495> in 5 bytes, <5,444,586,496; 597,496,646,655> in 6 bytes, <597,496,646,656; 26,307,688,877,055> in 7 bytes, <26,307,688,877,056; 1e14> and <-1e14; -1> in 8 bytes. Double float <-1.7977e308; 1.7977e308>, minimal positive value 1e-323. Always in 13 bytes. texts index <0; 7,359> in 3 bytes, <7,360; 302,271> in 4 bytes, <302,272; 13,816,111> in 5 bytes, <13,816,112; 131,814,697> in 6 bytes, <131,814,698; 4,000,000,000> in 7 bytes | ||||||||||||||||||||||||||||||||
0xB1 | 177 | 5+ chars | double float, 15 digits or var string -1e308 ... 1e308 (min positive 1e-323) | Like 0x31 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
0x32 | 50 | 5 chars | double float, 15 digits or unli -1e308 ... 1e308 (min positive 1e-323) |
Integer values <-2,722,293,248; 2,722,293,247> in 5 bytes, <-298,748,323,328; -2,722,293,249> and <2,722,293,248; 298,748,323,327> in 6 bytes, <-13,153,844, Double float <-1.7977e308; 1.7977e308>, minimal positive value 1e-323. Always in 13 bytes. texts index <0; 7,359> in 3 bytes, <7,360; 302,271> in 4 bytes, <302,272; 13,816,111> in 5 bytes, <13,816,112; 131,814,697> in 6 bytes, <131,814,698; 4,000,000,000> in 7 bytes | ||||||||||||||||||||||||||||||||
0xB2 | 178 | 5+ chars | double float, 15 digits or var string -1e308 ... 1e308 (min positive 1e-323) | Like 0x32 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
String 5 chars | ||||||||||||||||||||||||||||||||||||
0x33 | 51 | 5 chars | unli | Directly stores only null, NaN and "", all other values are stored in texts. Index always in 5 bytes. | ||||||||||||||||||||||||||||||||
0xB3 | 179 | 5+ chars | var string | Stores all values directly to output as string. Cannot be used in FastGrid U / B! | ||||||||||||||||||||||||||||||||
Date 5 chars | Accepts also base date, added by AddToUCode. | |||||||||||||||||||||||||||||||||||
0x34 | 52 | 5 chars | yyyy-MM-dd HH:mm: |
Stores date and time with milliseconds. Can store any years around base date. Default base date is 1/1/2025. The date without time is coded shorter. Not date values can be coded to texts. | ||||||||||||||||||||||||||||||||
0xB4 | 180 | 5+ chars | Full date and time or var string | Like 0x34, but stores not applicable dates and strings directly to output instead of | ||||||||||||||||||||||||||||||||
Fixed length string (escape chars like "\n", "\x7f" or "\x380") | See also fixed length data 0x2001 - 0x23ff | |||||||||||||||||||||||||||||||||||
0x41 | 65 | 1 char | single char | One char stored directly. Can store also null, NaN and "". Cannot store restricted characters like " or \n. | ||||||||||||||||||||||||||||||||
0x42 | 66 | 2 chars | two chars string or 63401 texts | Two chars string stored directly. If the saved string is shorter, it is ended by "\x7f". If the string is longer, it is saved to texts | ||||||||||||||||||||||||||||||||
0x43 0x80 | 67 128 | 3 - 64 chars | fixed length string or unli | Fixed length string stored directly, 0x43 is 3 chars, 0x44 is 4 chars, ... 0x80 is 64 chars. Fixed length chars is ucode - 0x40. If the saved string is shorter, it is ended by "\x7f" and fills the rest by spaces. If the string is longer, it is saved to texts | ||||||||||||||||||||||||||||||||
0x8041 | 32833 | 1 char | single char | One char stored directly. Can store also null, NaN and "". The restricted characters like " or \n are stored escaped. | ||||||||||||||||||||||||||||||||
0x8042 | 32834 | 2 chars | two chars string or 63401 texts | Two chars string stored directly. The restricted characters like " or \n are stored escaped. If the saved string is shorter, it is ended by "\x7f". If the string is longer, it is saved to texts | ||||||||||||||||||||||||||||||||
0x8043 0x8080 | 32835 32896 | 3 - 64 chars | fixed length string or unli | Fixed length string stored directly, 0x8043 is 3 chars, 0x8044 is 4 chars, ... 0x8080 is 64 chars. Fixed length chars is ucode - 0x40. If the saved string is shorter, it is ended by "\x7f" and fills the rest by spaces. If the string is longer, it is saved to texts. The escaped restricted characters like " or \n are taken as one char length. | ||||||||||||||||||||||||||||||||
Separated strings | ||||||||||||||||||||||||||||||||||||
0xC0 0xC3 | 192 195 | 1+ chars | more separated strings - var string |
One or more strings separated by space or by separator character (stored in ucode bits 15 - 30). Variable length output. Cannot be used in FastGrid U / B! All strings are saved in texts and to output are set their indexes. The end is marked as one space. For 0xC1 and 0xC3 the odd strings (2nd, 4th, 6th,...) are saved to utexts instead of texts. 0xC0 and 0xC1 saves the indexes in 1 character if possible, otherwise in 3 characters. 0xC2 and 0xC3 saves the indexes always in 2 characters. | ||||||||||||||||||||||||||||||||
0xC4 0xCB | 196 203 | 2 - 4 chars | separated string and number |
Two strings separated by space or by separator character (stored in ucode bits 15 - 30), one of the strings is integer number 0 - 63400 (or 4e9 for 2 chars).. 0xC4 = 1+1*, 0xC5 = 1*+1, 0xC6 = 1+2*, 0xC7 = 2*+1, 0xC8 = 2+1*, 0xC9 = 1*+2, 0xCA = 2+2*, 0xCB = 2*+2. For example 2+1* means the first string index is saved in 2 characters, the second number is saved in 1 character. The * means integer number like ucode 0x1 / 0x11. | ||||||||||||||||||||||||||||||||
0xCC 0xD1 | 204 209 | 2 - 4 chars | 2 separated strings |
Two strings separated by space or by separator character (stored in ucode bits 15 - 30). 0xCC = 1+1, 0xCD = 1+1*, 0xCE = 1+2*, 0xCF = 2+1*, 0xD0 = 2+2, 0xD1 = 2+2*. For example 2+1* means the first string index is saved in 2 characters, the second string is saved in 1 character. The * means that the string is saved to utexts instead of texts. | ||||||||||||||||||||||||||||||||
0xD2 0xDF | 210 223 | 3 - 6 chars | 3 separated strings |
Three strings separated by space or by separator character (stored in ucode bits 15 - 30).
| ||||||||||||||||||||||||||||||||
Adjacent strings | ||||||||||||||||||||||||||||||||||||
0xE0 0xE3 | 226 229 | 1+ chars | more adjacent strings - var string |
One or more adjacent strings of defined lengths (stored in ucode bits 15 - 30). It is possible to define two lengths (stored in ucode bits 15 - 22 and 23 - 30). For example ucode = 42041570 = 0xE0 + 3*32768 + 5*256*32768 string "abcdefghijklm Variable length output. Cannot be used in FastGrid U / B! All strings are saved in texts and to output are set their indexes. The end is marked as one space. For 0xE1 and 0xE3 the odd strings (2nd, 4th, 6th,...) are saved to utexts instead of texts. 0xE0 and 0xE1 saves the indexes in 1 character if possible, otherwise in 3 characters. 0xE2 and 0xE3 saves the indexes always in 2 characters. | ||||||||||||||||||||||||||||||||
0xE4 0xEB | 228 235 | 2 - 4 chars | adjacent string and number |
Two adjacent strings of defined length, the length of the first string is stored in ucode bits 15 - 22. One of the strings is integer number 0 - 63400 (or 4e9 for 2 chars). If the first length in the ucode is 0 (default), it takes the length as the position of the first digit (or non digit for starting by number). 0xE4 = 1+1*, 0xE5 = 1*+1, 0xE6 = 1+2*, 0xE7 = 2*+1, 0xE8 = 2+1*, 0xE9 = 1*+2, 0xEA = 2+2*, 0xCB = 2*+2. For example 2+1* means the first string index is saved in 2 characters, the second number is saved in 1 character. The * means integer number like ucode 0x1 / 0x11. | ||||||||||||||||||||||||||||||||
0xEC 0xF1 | 236 241 | 2 - 4 chars | 2 adjacent strings |
Two adjacent strings of defined length, the length of the first string is stored in ucode bits 15 - 22. For example ucode = 98536 = 0xE8 + 3*32768 string "abcdefghi" is stored as indexes of strings "abc" and "defghi". 0xEC = 1+1, 0xED = 1+1*, 0xEE = 1+2*, 0xEF = 2+1*, 0xD0 = 2+2, 0xD1 = 2+2*. For example 2+1* means the first string index is saved in 2 characters, the second string is saved in 1 character. The * means that the string is saved to utexts instead of texts. | ||||||||||||||||||||||||||||||||
0xF2 0xFF | 242 255 | 3 - 6 chars | 3 adjacent strings |
Three adjacent strings of defined lengths, the length of the first string is stored in ucode bits 15 - 22, the length of the second string is stored in ucode bits 23 - 30 . For example ucode = 42041586 = 0xF0 + 3*32768 + 5*256*32768 string "abcdefghijklm
| ||||||||||||||||||||||||||||||||
Prefix for escaping string | ||||||||||||||||||||||||||||||||||||
0x1xx | 256 | - | escape 1 | If added to ucode, prefixes characters \t, \r, \n, \", \\ by \\ in all stored strings. It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
0x2xx | 512 | - | escape 2 | If added to ucode, works like escape 1 plus replaces 007F character by "\\x7F" in all stored strings (except variable length strings stored directly). It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
0x3xx | 1024 | - | escape 3 | If added to ucode, works like escape 2 plus replaces all 0000 - 001F, 0085, 00A0 characters by "\\xXX" in all stored strings. It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
Fixed length data | See also fixed length strings 0x41 - 0x80. | |||||||||||||||||||||||||||||||||||
0x2001 0x23FF | 8193 9215 | 1 - 1023 chars | fixed length data of any character | Fixed length data stored directly, 0x2001 is 1 char, 0x2002 is 2 chars, ... 0x23FF is 1023 chars. Fixed length chars is ucode - 0x2000. If the saved string is shorter, the rest is filled by spaces. If the string is longer, it is stored truncated. null, NaN and "" are saved as empty spaces. This data is not escaped and is stored as is, so the resulted string can contain the restricted characters like " or \n. These ucodes can be used to store already coded data by UTF8Store. | ||||||||||||||||||||||||||||||||
Unused custom codes | ||||||||||||||||||||||||||||||||||||
0x6000 0x63FF | 24576 25599 | any chars | reserved for individual customi | These codes are reserved for individual customizations and will be never used in future by the UTF8Store coder. These codes are in 15 bit range 0x7FFF and can be extended by mask 0xFFFF8000 to 32 bit integer, it means valid custom ucodes are: xxxx60xx, xxxx61xx, xxxx62xx, xxxx63xx, xxxxE0xx, xxxxE1xx, xxxxE2xx, xxxxE3xx, e.g. 0x1236123 or 0xABCDE321 or 0xFFFFE0FF are valid custom codes. Functions WriteValue / WriteValues return null and GetUCodeSize returns -1 for the custom ucode. | ||||||||||||||||||||||||||||||||
Prefix for stored separator for separated strings or length(s) for adjacent strings, ucodes 0xC0 - 0xFF | ||||||||||||||||||||||||||||||||||||
0x7FFF | 32768 | - | separator character | Separator character used in separated string (ucode = 0xC0 ~ 0xDF) is stored in ucode as its Unicode value * 32768 (0x8000). For example 0xC8 with "," (\u2C) separator is ucode = 0x2C * 32768 + 0xC8 = 1441992. If not set (as 0), space is used as separator. It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
0xxx7F | 32768 | - | 0 - 255 | Length of the first string in adjacent strings (ucode = 0xE0 ~ 0xFF) is stored in ucode as value * 32768 (0x8000). For example 0xE8 with length 3 is ucode = 3 * 32768 + 0xE8 = 98536. If not set (as 0), 4 is used except for 0xE4 - 0xEB. It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
0x7F8x | 8388 | - | 0 - 255 | Length of the second string in adjacent strings (ucode = 0xE0 ~ 0xFF) is stored in ucode as value * 256 * 32768 (0x800000). For example 0xF0 with lengths 3 and 5 is ucode = 3*32768 + 5*256*32768 + 0xF0 = 42041586. If not set (as 0), the first length is used. It can be added to the ucode like AddToUCode( | ||||||||||||||||||||||||||||||||
Prefix for stored base number for bits (ucodes 0x8 - 0xF) and dates (ucodes 0x4 - 0x7, 0x14 - 0x17, 0x24, 0x25) | ||||||||||||||||||||||||||||||||||||
0xFFFF | 32768 | - | integer <1,32767> 2 digits integer +/- 1e150 2 digits floating +/- 1e-13 |
This base number is added to ucode from 16th bit - 0x8000 (*32768). If set, the base is subtracted from the number before it is stored and added back when returned the number from store. The stored base is integer number in range <1,32767> or rounded to two singnificant digits and forced in integer range (-1e150,1e150) and minimal decimal 1e-13. Using base outside range <1,32767> or with floating point will produce negative ucode as 32bit integer. | ||||||||||||||||||||||||||||||||
0xFFFF | 32768 | - | date 1/1/1900 - 1/1/2241 date 1/1/1950 - 1/1/2120 (ucode 0x6) |
This base date is added to ucode from 16th bit - 0x8000 (*32768). Used as base date for date basic ucodes 0x4 - 0x7, 0x14 - 0x17, 0x24. Using base after year 2070 or pm time in ucode 0x6 will produce negative ucode as 32bit integer. | ||||||||||||||||||||||||||||||||
Unused basic ucodes | ||||||||||||||||||||||||||||||||||||
0x0, 0x10, 0x18 - 0x1E, 0x20, 0x26 - 0x30, 0x35 - 0x40, 0x88 - 0x8A, 0x90, 0x98 - 0x9E, 0xA0, 0xA6 - 0xB0, 0xB5 - 0xBF, 0x2000, 0x4000 - 0x43FF |
Reserved for future use These codes must not be used now, they can be assigned in future by UTF8Store coder. Functions WriteValue / WriteValues return null and GetUCodeSize returns -1 for the unused ucode. |