<P><B>Structured data and configurations</B>. The ConfigFile component from the ActiveX pack1 gives the
ALP applications interesting opportunities. They can be compared with the XML technology for example, but
the ideas behind the component is a bit different. While XML begins with the format, structured data begins
with the abstract structure and the layout of the saved/sent data may differ. In other words there are 
driver components that will save the uniformly structured data to different storages in different formats.
Furthermore structured data (also called in our docs UDS - Universal data structure) is programming
oriented from the beginning (first implementation dates from 1996). So it cupports strict data type information,
requires additional care when saving values and forming the structure, but at other hand simplifies the
data usage much more than XML which is partially document born.
</P>
<P>The structured data is often called configuration/structured configuration. This is quite good name because
it is often used to hold the entire application data. Being programming oriented the UDS structures can be used
as variables without need to copy the data to temporary variables/storages. ConfigFile is not fully featured
and provides only part of the features UDS provides to the C++ applications. However advanced components will be
developed and some of the most interesting features will be available for the scripting applications too - ability
to persist the entire application state in one step, uild the application around the data - as objects that bind 
automatically to the appropriate data branches and so on.
</P>
<P>The samples in this section show how to read/write configuration/UDS from/to different storages. For example a 
structure can be read from text file and saved to binary stream or registry. The registry driver in the ConfigFile
is implemented in a bit strange manner. Execuse us if it is a bit confusing but benefits are obvious. It saves the
data tree as it is in memory. Which means only data types supported by the Windows registry will be saved - if the
data tree contains data not supported by the registry an error will occur. This allows branches from the
registry to be represented by UDS directly which is very convenient when the application needs many and complex
operations with the registry. However you will need to pay attention especially if you are using also other formats
for saving/restoring and avoid placing unsavable data in the structures.
</P>
<P>Read more about UDS in the ConfigFile documentation. In two words it implements UDS for the script using 
VarDictionary collections. So each section is represented by a VarDictionary collection, each record in these
sections or subsections in them are represented by VarDictionaries too. Records can contain 1 or more values which can
be named or unnamed. Compared with the XML attributes it is different - if we treat any record as attribute in UDS
we may have repeated attributes - more than one attribute with the same name (which is not true for the XML). Also
we have ability to set subnames - e.g. name for each occurence of the same attribute (rarely used in fact) which
has no corresponding feature in XML. Also XML defines such things like content which are not available in UDS - e.g.
the content can be represented by attribute but this is application dependent behaviour - UDS by itself does not define
differences between attributes and content. Sub-sections and records share the same namespace in UDS which means section 
and record with the same name cannot coexist as descendants of one section.
</P>
<P>The binary format supported by the ConfigFile is our internal standard and like all the other details about UDS
is kept compatible with future versions and older ones. So it can be used for various data transfers - such as 
sending/receiving data through the network (with NetProbe for example) or saving data in files for future use. This allows
data exchange between application that use the component of the C++ UDS classes. It is very convenient to use UDS if your 
application wants to communicate with online WEB site of yours. Using the ConfigFile will make your application dependent on
the ALP core components only and at the same time you will be able to exchange data in XML like manner. The only requirement
is that you will need to install on the WEB server ActiveX Pack1 and build the pages that will supply/receive the data 
requested/sent by the ALP application running on certain remote machine. 
</P>