Unit xyData

copyright © Kestral Computing refer to xyGraph.pas, index.htm for more information } {$I xyDefine.pas} {--------------- implementation section heading labels --------------- #1. Stream utilities TDataSeries #2. Administration #3. Data engine #4. Data property servers #5. Other property servers #6. Statistical analysis #7. Saving to stream #8. Data Extraction ----------------------------------------------------------------------

Classes

TDataSeries -
TDataSupplier - abstract ancestor for objects that supply data to the graph.
TxyReader -
TxyWriter -

Functions

cellFromStr - useful for reading lines of text files - used in xyHolder.
initDataSupplier -
SourceSplit - if there is any characters left after the string is terminated then skip them

Types

et_regressions
pDataChangeHook
pgPoint
TDataChangeEvent
TDataChangeHook
TDataSrc
tDoublePoint
TDSChangeType
tgPoint
TRowChoice
TTxtFieldType

Constants

ktBoolean
ktFloat
ktFont
ktInteger
ktString
row_scan_depth
tabchar

Variables

wantcompactfile


Functions


function cellFromStr(const s:string; seps,mrkrs:string; i:word; var pastend:boolean):string;

useful for reading lines of text files - used in xyHolder.pas and xyDatWiz.pas

-------------------------------------------------------------------------- #8. Data Extraction --------------------------------------------------------------------------} {----------------------- Data Extraction Methods ----------------------


function initDataSupplier(dsrc:TDataSrc; dname:string; ByWidth:boolean; ColWidth:word; TextSeparators, TextMarkers:string):TDataSupplier;


procedure SourceSplit(const name:string; var alias, details:string);

if there is any characters left after the string is terminated then skip them

Types


et_regressions = ( rg_None,
                     {1. forms of regression: }
                     rg_Linear, rg_passingBablok, rg_quadratic,
                     {2. Curve Fitting: }
                     rg_Spline, rg_dwls,
                     {3. Other: }
                     rg_RunningAverage,rg_runningAverageProper);

pDataChangeHook=^TDataChangeHook

pgPoint = ^tgPoint
note that a function exports these names for use at run time} {STATISTICS} { each point is stored in a linked list as an x,y coordinate with a longint index value. This puts a theoretical limit on the number of points in a series to 2147483647 points, but since this is >40000 Mb of data, it's probably not a problem
TDataChangeEvent=procedure (Sender:TObject; TheMessage:TDSChangeType) of object
allowance for other objects to register an interest in the data of the series. xyGraph actually defines a descendent and uses requestpaint, but only one descendent can do this. This allows other analytical tools to use the same TDataSeries
TDataChangeHook = record
FEvent : TDataChangeEvent;
FObject : TObject;
next : pDataChangeHook;
end;

TDataSrc = (ds_Manual,   {no automatic acquisition of data
                            - DataName = ignored}
              ds_TextFile, {data read from text file
                            - dataname = filename}
              ds_DataSet,  {from a dataset inside the table
                            - dataname = dataset.name}
              ds_BDETable, {data comes from BDE alias - read as TTable
                             which is autocreated
                            - dataname = alias:tablename}
              ds_BDEQuery, {data comes from BDE alias - read as TQuery which
                            is autocreated limit of around 250 chars for the
                            SQL in 16bit mode
                            - dataname = alias:SQL}
              ds_xyHolder,  {the data comes from an xySheet component
                            - dataname = xySheet name}
              ds_ODBC);
some of the data sources may not available depending on complation options
tDoublePoint = record
x : double;
y : double;
end;

TDSChangeType = (dsUnLoad, dsDataChange, dsZeroChange, dsClearUpdates,
                                                                  
                  dsChangeLook);
messages sent to requestpaint & objects to identify the reason
tgPoint = record
i : Longint;
xv : Double;
yv : Double;
rv : Double;
next : pgPoint;
end;

TRowChoice = (rc_all,        {use all available rows}
                rc_starttoall, {start when x = a value, do all to the end}
                rc_alltoend,   {start at beginning and stop when x = value}
                rc_starttoend, {start as x = value and stop at x = value}
                rc_firstXNum,  {use the first #value columns}
                rc_lastXNum);
data comes direct from an ODBC source. requires ODBCExpress - dataname = ODBC DSN:SQL
TTxtFieldType = (ft_Number, ft_DateTime);
use the last #value records - can be quite inefficient} { note that some of these options are not supported on Non-live SQL result sets

Constants

ktBoolean = 'B'

ktFloat = 'D'

ktFont = 'F'

ktInteger = 'I'

wantcompactfile = true - write non-strings in native format wantcompactfile = false - write as strings so file is easier to edit directly * the default is true and you should leave this for design-time { note! this only applies to writing - TxyGraph will read either } {property formats in the stream

ktString = 'S'

row_scan_depth = 40

tabchar = chr(9)


Variables

wantcompactfile : boolean