Skip to content

technical

Yeray edited this page Jun 28, 2017 · 3 revisions

Technical notes

Supported IDEs

Due to heavy internal usage of record helper classes and other modern-Delphi language features, the minimum supported IDE is Idera/Embarcadero RAD Studio XE4 and FreePascal FPC v3.0.

It might be possible to port TeeBI code to older IDE levels if there is enough developer demand.

Packages

Note:

An automated tool (TeeBIRecompile.exe) automatically detects, compiles and installs all the packages for all the supported IDEs.

Depending on the IDE version (XE4, XE5, etc), TeeBIRecompile modifies the dpk packages before recompiling them, enabling or disabling other required packages that might exist or not in that particular ide and for a particular platform (Windows, iOS, Mac OSX, Android, etc).

The automatic recompilation copies the prepared dpk package sources into a "Sources\Temp" folder, and then recompiles them.

Original packages are located at this folder:

..\TeeBI\Sources\Packages

The core TeeBI units are included by default in a TeeBI.dpk package.

These units compile in all possible platforms (Windows, Mac OSX, Android and iOS).

TeeBI package is required by all the other packages.

VCLTeeBI and DCLTeeBI packages include all units that use the VCL component library.

They register the TBIDataSet component, and the TBIGrid and TBIChart VCL controls.

Identically, FMXTeeBI and DCLFMXTeeBI packages include all units that use the Firemonkey FMX component library.

They register the TBIGrid and TBIChart Firemonkey controls.

A special package, FireDACTeeBI, contains all FireDAC-related units.

A similar package, SQLExprTeeBI, contains all SQLExpress units.

The TeeBIAlgorithms package includes all units BI.Algorithm.* with the machine-learning and statistical classes.

TeeChart Lite or Pro

The TBIChart control (VCL and Firemonkey) can be compiled in two different modes, depending on which TeeChart version is installed for a particular IDE.

Package names are: VCLChartTeeBI, VCLChartProTeeBI, FMXChartTeeBI and FMXChartProTeeBI.

The "Lite" TeeChart version is much less capable of visualizing data than the "Pro" version.

uses BI.FMX.Chart;
BIChart1.BindTo( MyData );

Memory limits

A TMemory class provides several class functions:

  • TMemory.Allocated: returns the number of bytes used by the application
  • TMemory.Available: returns the number of bytes still free in the operating system.
  • TMemory.TotalPhysical: returns the total number of bytes of installed memory in the system.

A global class variable can be configured to specify the mininum number of bytes that should be available at all times.

For example, we might reserve a 20% of memory:

TMemory.MinLimit := (20 * TMemory.Available) div 100;

Beta note:

TeeBI memory management currently is not automatically releasing "old" or "few used" data until the data item object is freed.

The future goal is to enable this automatic mechanism to minimize the potential problem of using all the available memory in the system, as TeeBI already maintains a list of all data that is loaded into memory, and the "last access time" for each item.

The manual solution is to destroy the TDataItem objects (MyData.Free or DisposeOf), or to call MyData.UnloadData to release the internal array, which will be automatically re-loaded from disk or web into memory as soon its required.

Clone this wiki locally