News in versions: FastGrid 1.0, TreeGrid 17.0
FastGrid FastSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Development
services
References References Contacts
TreeGrid Gantt chart SpreadSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Contacts
FastGrid documentation
Search in documentation
FastGrid versions compatibility

Changes log (txt file) Compare FastGrid 1.0 & TreeGrid 17.1

Using in JavaScript frameworks

Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC

Data and creating FastGrid

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

Layout - grid parts

Parts - ColParts and RowParts Part size Part scroll position Sets Column sets Row sets

Toolbars

Toolbar Cells Icon Height Width Toolbar position Dragging and manipulating cells Special toolbars

Rows and columns
Default rows, columns, cells, toolbars
Row and column identity

Row / column id Row / column index Row / column name

Row and column manipulation

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 and column tree Row tree Column tree Expand & collapse

Cells
Cell values and attributes

Read and write any values by API Cell value Cell attributes Cell value & attributes in UTF8 Store

Editing cells

Editing During editing Validation and errors

Cell images

Row cell side icons Icons definition Mark icons and charts Mark icons list Row cell floating images

Cell size

Row height Column width Resizing rows and columns Padding Margin Cell span

Cell style

Grid style and look Cell style permissions Cell style Cell outer border Cell inner border Alternate row & column background

Other cell features

Cell hyperlink Cell tooltip Static cells Other cell attributes Row & column attributes to speed up

Cell types and formats
Cell type and format Range - more values / ranges in cell String type Html type Auto type
Bool type

Bool type Check side icon Bool type & Check side icon

Number type

Format Localization

Date type

Format Localization Calendar

Calculations - formulas
JavaScript formulas

JavaScript formulas Aggregate functions String aggregate functions Other functions

Editable formulas

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

Dialogs and menus

Dialog Dialog Place Dialog API Menu definition in Script Cell menu List Suggest

Features
Sorting rows / columns

Sorting Sorting settings Comparing strings

Grouping rows / columns

Grouping Grouping settings Comparing strings Pivot grid

Filtering rows and columns

Filtering Filter settings Comparing strings

Search in cells Import files to grid
Export files

Export files Export and copy to clipboard CSV data

Copy & paste via system clipboard

Copy & paste Copy to clipboard Paste from clipboard

Printing

Print Print to PDF

Global grid settings
Grid size & scroll

Grid size Grid scrollbars Paging and view Media rules - responsive design

Saving settings in storage or cookies
Focus and hover cells

Focus cell and cell ranges Mouse hover cells Highlight cells, rows and columns

Events

Mouse events Key events API events

Language

Translation Languages

Messages

Message Message style

Other API

API for iterating rows and columns Paint and repaint Various API methods

Debug & files

Debugging FastGrid files

UTF8 Store - fast & short data
Introduction - License & download

Basic description Main advantages Basic usage License Download Documentation

Script language implementations

JavaScript C# JAVA PHP

Suggested ucodes

Bits - small integers or enums Integers or enums with strings Date and time Floating point numbers Special strings

Basic ucodes

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

Complex ucodes

chars signed decimals multiple limits varstrings escape base chars2 signed2 decimals2 multiple2 limits2

Internal coding Profiling times for ucode options Function reference

Basic ucodes in UTF8 Store

UTF8 Store documentation; version 1.0

The basic ucode has never set any bit of 0x1C00 => (ucode & 0x1C00) == 0.

<
ucode
hexadecimal
ucode
decimal
Size in charsAvailable numbersDescription
Integer 1 char
0x0111 char0 ... 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 texts. The fasted read and write.
0x811291+ char0 ... 63400 or var stringLike 0x01 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
0x0221 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 texts. The fasted read and write.
0x821301+ char-31700 ... 31700 or var stringLike 0x02 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
String 1 char
0x0331 char63401 textsDirectly 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.
0x831311+ charvar stringStores all values directly to output as string. Cannot be used in FastGrid U / B!
Date 1 charAccepts also base date, added by AddToUCode
0x0441 charFull 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.
0x841321+ charFull date or var stringLike 0x04, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x0551 charShort 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.
0x851331+ charShort date or var stringLike 0x05, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x0661 charTime 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.
0x861341+ charTime am/pm or var stringLike 0x06, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x0771 charShort time
HH:mm:sx or 5780 texts
Stores time with seconds rounded to 2 or 5 (m:00,m:02,m:04,m:05,m:06,...). The date can be set by base date. Default base date is 1/1/1970 as JavaScript zero date. Times without seconds are coded smaller.
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.
0x871351+ charShort time or var stringLike 0x07, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
Bits in 1 charAccepts also base number, added by AddToUCode, e.g. for base = 100, AddToUCode(0xC,100), accepted values will be 100,101,102,103
0x0881 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 texts.
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,3456],[0xD,0xB,0x8]) codes all the values to one char, the first value in the first three bits, the second value in the fourth bit and the third value in the rest.
0x0991 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 texts.
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).
0x0A101 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).
0x0B111 bit0, 1Stores 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.
0x8B1391 bit2 textsStores 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.
0x0C122 bits0, 1, 2, 3Stores 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.
0x8C1402 bits4 textsStores 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.
0x0D133 bits0, 1, 2, 3, 4, 5, 6, 7Stores 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.
0x8D1413 bits8 textsStores 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.
0x0E144 bits0 ... 15Stores 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.
0x8E1424 bits16 textsStores 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.
0x0F155 bits0 ... 31Stores 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.
0x8F1435 bits32 textsStores 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
0x11172 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.
0x911452+ chars-1e7 ... 4e9 or var stringLike 0x11 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
0x12182 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.
0x921462+ chars-2e9 ... 2e9 or var stringLike 0x12 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
String 2 chars
0x13192 charsunlimited textsDirectly 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
0x931472+ charsvar stringStores all values directly to output as string. Cannot be used in FastGrid U / B!
Date 2 charsAccepts also base date, added by AddToUCode.
0x14202 charsDate 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.
0x941482+ charsDate and time or var stringLike 0x14, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x15212 charsDate 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.
0x951492+ charsDate and short time or var stringLike 0x15, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x16222 charsTime 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.
0x961502+ charsTime and date or var stringLike 0x16, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x17232 charsTime
HH:mm:ss.fff or 5M texts
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.
0x971512+ charsTime or var stringLike 0x17, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
Float 2 chars
0x1F312 charsSingle 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.
0x9F1592+ charsSingle 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
0x21333 chars-1e14 ... 1e14 or unlimited texts 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,959,216; 1e14> in 9 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.
Floating point values have always decimals cut off - use GetUCode(3,0,X) instead.
0xA11613+ chars-1e14 ... 1e14 or var stringLike 0x21 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
0x22343 chars-1e14 ... 1e14 or unlimited texts 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,979,608; -897,299,091,929> and <897,299,091,928; 11,756,905,979,607> in 8 bytes, <-1e14; -11,756,905,979,609> and <11,756,905,979,608; 1e14> in 9 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.
Floating point values have always decimals cut off - use GetUCode(3,1,X) instead.
0xA21623+ chars-1e14 ... 1e14 or var stringLike 0x22 and also stores all other values directly to output as variable length string. Cannot be used in FastGrid U / B!
String 3 chars
0x23353 charsunlimited textsDirectly 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, ...
0xA31633+ charsvar stringStores all values directly to output as string. Cannot be used in FastGrid U / B!
Date 3 charsAccepts also base date, added by AddToUCode.
0x24363 charsFull date and time
yyyy-MM-dd HH:mm:ss.fff or texts
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.
0xA41643+ charsFull date and time or var stringLike 0x24, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
0x25373 charsFull 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.
0xA51653+ charsFull date and time or var stringLike 0x25, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
Integer and double float 5 chars
0x31495 charsdouble float, 15 digits or unlimited texts
-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
0xB11775+ charsdouble 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!
0x32505 charsdouble float, 15 digits or unlimited texts
-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,438,528; -298,748,323,329> and <298,748,323,328; 13,153,844,438,527> in 7 bytes, <-1e14; -13,153,844,438,529> and <13,153,844,438,528; 1e14> 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
0xB21785+ charsdouble 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
0x33515 charsunlimited textsDirectly stores only null, NaN and "", all other values are stored in texts. Index always in 5 bytes.
0xB31795+ charsvar stringStores all values directly to output as string. Cannot be used in FastGrid U / B!
Date 5 charsAccepts also base date, added by AddToUCode.
0x34525 charsyyyy-MM-dd HH:mm:ss.fff or texts 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.
0xB41805+ charsFull date and time or var stringLike 0x34, but stores not applicable dates and strings directly to output instead of texts. Cannot be used in FastGrid U / B!
Fixed length string (escape chars like "\n", "\x7f" or "\x380")See also fixed length data 0x2001 - 0x23ff
0x41651 charsingle charOne char stored directly. Can store also null, NaN and "". Cannot store restricted characters like " or \n.
0x42662 charstwo 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 charsfixed length string
or unlimited texts
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
0x8041328331 charsingle charOne char stored directly. Can store also null, NaN and "". The restricted characters like " or \n are stored escaped.
0x8042328342 charstwo 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 charsfixed length string
or unlimited texts
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+ charsmore 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 charsseparated 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 chars2 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 chars3 separated strings Three strings separated by space or by separator character (stored in ucode bits 15 - 30).
0xD21+1+10xD61+1+2*0xD91+2*+2*0xDC2+2+2
0xD31+1+1*0xD71+2*+10xDA2+2+1*0xDD2+2+2*
0xD41+1*+10xD82+1*+1*0xDB2+1*+20xDE2+2*+2
0xD51+1*+1*0xDF2+2*+2*
For example 1+2*+1 means the first string index is saved in 1 character, the second string is saved in 2 characters and the third string is saved in character. The * means that the string is saved to utexts instead of texts.
Adjacent strings
0xE0
0xE3
226
229
1+ charsmore 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 "abcdefghijklmnopqrstuvwxyz" is stored as indexes of strings "abc", "defgh", "ijk", "lmnop", "qrs", "tuvwx", "yz".
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 charsadjacent 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 chars2 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 chars3 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 "abcdefghijklmnopqrstuvwxyz" is stored as indexes of strings "abc", "defgh", "ijklmnopqrstuvwxyz".
0xF21+1+10xF61+1+2*0xF91+2*+2*0xFC2+2+2
0xF31+1+1*0xF71+2*+10xFA2+2+1*0xFD2+2+2*
0xF41+1*+10xF82+1*+1*0xFB2+1*+20xFE2+2*+2
0xF51+1*+1*0xFF2+2*+2*
For example 1+2*+1 means the first string index is saved in 1 character, the second string is saved in 2 characters and the third string is saved in 1 character. The * means that the string is saved to utexts instead of texts.
Prefix for escaping string
0x1xx256-escape 1If added to ucode, prefixes characters \t, \r, \n, \", \\ by \\ in all stored strings. It can be added to the ucode like AddToUCode(ucode,0,0,1).
0x2xx512-escape 2If 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(ucode,0,0,2).
0x3xx1024-escape 3If 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(ucode,0,0,3).
Fixed length dataSee also fixed length strings 0x41 - 0x80.
0x2001
0x23FF
8193
9215
1 - 1023 charsfixed length data of any characterFixed 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 charsreserved for individual customizationThese 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
0x7FFF8xxx32768+-separator characterSeparator 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(ucode,",").
0xxx7F8xxx32768+-0 - 255Length 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(ucode,10).
0x7F8xxxxx8388608+-0 - 255Length 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(ucode,5,8).
Prefix for stored base number for bits (ucodes 0x8 - 0xF) and dates (ucodes 0x4 - 0x7, 0x14 - 0x17, 0x24, 0x25)
0xFFFF8xxx32768+-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.
0xFFFF8xxx32768+-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.