Key and value names

DataTree     Key names     Value names    

    Different methods of DataTree require key and value names to be specified.
    All keys and values must be unique within the same parent key. Trying to create or write data to the value with existing name will cause the previous key or value usage and a new one won't be created.
    Writing some data to the key that doesn't exist will cause the creation of this key. data is always written in the format specified. Previously written data are lost when the new data is written.
    Reading some data from the key that doesn't exist won't cause the creation of this key. The reading method will return False as a result and a default value (if it has this parameter).
    Data stored in one format can be read in other format in some cases. For example, any data can be read as string (in case of binary data the string will contain encoded data). Integer data can be read as boolean.

Key names

    Passing an empty key causes current key to be used (see CurrentKey property).
    If the first symbol of non-empty key is a character defined by Delimiter property the key name is assumed to be a full key name starting from root.
    When the first symbol is not the character defined by Delimiter property, the key is assumed to be a subkey of the current key (see CurrentKey property).
    Key name can't contain characters defined by Delimiter or Comment property.
    Keys with empty names are not allowed: passing a key name like "\\key\subkey" is illegal, because parsing such key name will turn into appearence of an unnamed key, which is not allowed.

Value names

    Empty value name means that the key itself is referred to. Keys can hold data as well as values.
    Non-empty value name means that the regular value is referenced.
    In the text file you can find a name like ValueName[0] or something like this. DataTree stores MultiString data in one value, named ValueName in the example. But it writes several entries with the same name on disk. So square brackets is only a signal that ValueName is the value with MultiString data.