Version 4.4.1

Build: 4.4.1-496

Release date: 27.10.2008

This is a new bug fix release of Prosys Sentrol.


  • Notes about threading models in the Tutorial


  • ValueColor property in the Display components did not work in Delphi 2005 onwards

  • Usability improvements to edit components:

    • Cancel key did not clear the modified symbol in panels,

    • Applying invalid value at control.exit, must keep focus and keep the edit text

  • TPsState to raise EPsInvalidValue, if an invalid string is applied to it (from an edit control, for example); it raised an "not an integer value" exception.

  • TPsOPCServer.OnError: using it resulted to Access Violations in some communication error situations

  • TPsOPCAddressSpace.BrowseBranch to Clear the list if a re-browse is requested on the root node (the address space sometimes contained the same nodes several times on the root level)

  • TPsOPCProviderClient.RemoveGroup left the empty group in the Provider, because the client releases it’s final interface after that.

Version 4.4.0

Build: 4.4.0-488

Release date: 16.08.2008

This is a new minor release of Prosys Sentrol.

A major enhancement is OPC address space filtering which is now implemented on the OPC client side and completed on the OPC server side.

TPsPersistentListEditDlg (used in connector Links editors) also has some usability improvements.


  • Variable component editor has a popup menu entry (right mouse click): "Reset Caption to Name"

  • In the Connector Links editors, highlight Items that have duplicates (same property values), such as OPC ItemID, ByteArray Address, etc.

  • TPsPersistentList.FindSimilar, HasSimilarItems

  • TPsPersistent.Compare, IsSimilar

  • TPsCustomFloatArray.ElementType (enable arrays of Single or Double)

  • PsBadSingleValue (in PsVars)

  • TPsByteArrayConnector to initialize links with the "next" byte value (in the design time Links editor)

  • TPsOPCAddressSpace.Filter of new type TPsOPCAddressSpaceFilter

  • TPsCustomCompPanel.AutoHideEngUnit

  • TPsOPCProvider registration to add (and remove) AppID registry keys

  • TPsOPCProvider.Fail

  • TPsOPCServer.FailureDisconnectDelay

  • TPsVarForm.LocalTimeBias

  • UTCTimeToStr (in PsUtils)

  • RemoveNameValueFromCSV (in PsClasses)


  • TPsOPCAddressSpaceBrowser with the Filtering controls

  • FileTimeToStr (in PsUtils) changed to return 'N/A' for zero dates

  • DateTimeToFileTime and FileTimeToDateTime (in PsUtils) to return zero dates for zero dates


  • GetSpecialFolderPath to use SHGetFolderPath, which will work in OS:s that do not support SHGetSpecialFolderPath (e.g. Win 2003 Server)

  • TPsStorageStmt to correctly enter milliseconds to MS SQL Server DateTime fields (or overcome a "feature" in the driver)

  • TPsVariant.SetPropAsArray to accept array values (coming from, e.g. an OPCConnector)

  • And again a small number on minor issues

Version 4.3.0

Build: 4.3.0-482

Release date: 15.05.2008

This is a new minor release of Prosys Sentrol. There are various small changes and additions. And an important fix to the OPC Provider. There is also a new lesson in the Tutorial, describing how to create Sentrol component in code at run time.


  • TPsVarList.Duplicates

  • TPsStringTree.ChildCount

  • TPsCustomStorage.TableNameWithSchema, TableNameWithoutSchema, TableNameIncludesSchema

  • TPsCustomStorage.DatabaseName, ServerName, LocalServerName, IsLocal

  • EPsStorageExecuteError.ParamValues, SQL (replacing Stmt)

  • TPsComponentTable.OnCreateObjectError, TPsStorageRepository.OnCreateObjectError

  • Changed: TPsStorageCreateObjectEvent, TPsStorageFindObjectEvent, TPsStorageLoadObjectEvent

  • Changed: TPsStorageTable.CreateTable to use ForeignKey (did not), including Cascades as defined below

    • New: TPsCustomStorage.DefaultCascades, TPsStorageTable.Cascades

    • Changed: TPsPersistentTable to use Reference fields

    • Changed: TPsStorageTableReference.Name format

  • PsUtils.StringsToObject

  • PsUtils.IsAltKeyPressed, IsCtrKeyPressed, IsShiftKeyPressed

  • TPsClassProperties/TPsInstanceProperties.AssignFromStrings

  • TPsCharRTTIProp

  • TPsStringTable.Rows

  • TPsVarForm.IncludeReferencedVariables

  • Tutorial Lesson 9 - Create Sentrol Objects at Run Time


  • TPsOPCServer.OnError will always use Self as Sender!

  • TPsOPCConnector.AddItem to raise an exception if an invalid item id is requested and AcceptInvalidItems is not set


  • TPsStorageStmt.Eof (and Bof) from EOF to not overlap with C++ macro in stdio.h


  • TPsFloatArray.AsVariant and PropValue to use Length when returning the variant array

  • TPsOPCProviderClient.RemoveGroup was forcing object destroys (proposed in the spec.), but this caused possible AVs and memory dead lock (in D2006&2007) later on (occurring occasionally during client disconnects). So, no longer forced object destroyals…​

  • Help uninstall in D2007 did not work - you may need to uninstall once with this one to get the new help linked properly

  • Plus a number of smaller issues

Version 4.2.0

Build: 4.2.0-478

Release date: 18.01.2008

This is a new minor release of Prosys Sentrol.

It will break backward compatibility of existing projects, if you have used the OnGetCaption or similar events in Sentrol Controls. See below in the Changed section.


  • Moved: TPsVarLink.OnGetAsString from TPsControlVarLink

  • TPsVarLink.OnGetAsString is also called for bad values!

  • TPsGetAsStringEvent has a new parameter: Quality

  • Renamed: TPsDisplayBox.OnGetValueCaption to OnGetAsString

  • Renamed: TPsPanel.OnGetCaption to OnGetAsString

  • Renamed: TPsLabel.OnGetCaption to OnGetAsString

  • Renamed: TPsEdit.OnGetText to OnGetAsString

  • Renamed: TPsComboBox.OnGetText to OnGetAsString

(Also note that these event handlers now require the new Quality parameter, so the forms will complain about missing properties and you need to modify the event handlers respectively!)


  • TPsVar.IsBad, TPsVar.IsGood, TPsVar.IsUncertain

  • TPsVarLink.IsBad, TPsVarLink.IsGood, TPsVarLink.IsUncertain

  • TPsBool.Invert (alias of Toggle)

  • TPsDisplayBox.OnGetCaption

  • TPsCustomCompPanel.OnGetAsString (available in all composite display control)

  • TPsCustomCompPanel/TPsDisplayBox.CaptionLabel & EngUnitLabel made public

  • TPsCustomCompPanel/TPsDisplayBox.ValueParentFont

  • TPsStringTree.IsChildOf, SiblingIndexOf, TreeNodeOfIndex

  • New argument: TPsStringTree.Next/PrevSibling(…​, WrapOver)

  • Support blob data in storage connectors: map DataType vdtVariant to blob fields

  • TPsStorageStmt.SetParamAsBlob, TPsStorageStmt.LoadParamFromStream, TPsStorageStmt.SaveFieldToStream

  • TPsByteArray.Offset


  • TPsState.Next & Prev when States not defined

  • Events in control components to use the control itself as Sender (was VarLink)

  • TPsVarLink.OnBadValue (and all controls that expose the event) to be called after Change, so that it can be used to overwrite other changes

  • Some AVs still occurring at OPCProvider shutdown or client disconnects resolved with FastMM

  • Plus a number of smaller issues

Version 4.1.1

Build: 4.1.1-470

Release date: 19.12.2007

This is a new bug fix release of Prosys Sentrol.


  • Sentrol dbExpress components compiled against Delphi/C++Builder 2007 December 2007 update (you will need at least Update 3 or Release 2)

  • Automatically assign the Storage to any Storage Connector or Storage Dataset, if there is one (and only one) on the same module (design-time only)

  • Automatically assign the OPC Server to TPsOPCConnector, if there is one (and only one) on the same module (design-time only)

  • TPsOPCServer.ServerName property editor sorts the servers alphabetically

  • TPsOPCGroup.InvalidateItems to update the timestamps (with UTCNow)

  • TPsByteArrayLink.Byte to come before Bit (in the editor, too)

  • Some mem leaks & AVs still occurring at OPCProvider shutdown or client disconnects resolved with FastMM

  • Enabled calls to TPsOPCProcider.RemoveClient - use with care! See the new Simulation Server as well

  • Plus a number of smaller issues

Version 4.1.0

Build: 4.1.0-464

Release date: 16.11.2007

This is a new minor release of Prosys Sentrol.

New methods & properties

  • TPsOPCProvider.SupportLocalTimeBias to overcome problems in some OPC clients

  • Support for database schemas in storage coponents: TPsCustomStorage.DefaultSchemaName, TPsStorageTable.SchemaName & TableNameWithSchema

  • TPsStorageRepository.RemoveObject

  • TPsObjectTable.FieldEnabled

  • TPsObjectTable.OwnsObjects

  • TPsStorageRepository.OwnsTables

  • TPsHistorian.BadValues (published)

  • TPsHistoryArray.Reset

  • TPsStringTree.RemoveObject

  • TPsObjectIDMap.OwnsObjects


  • PsUtils.UTCToLocalTime & LocalTimeToUTC to use the DST settings of the converted date, instead of the current settings (which is the faulty WinAPI way)

  • TPsLog.OnChange to include the timestamp in the param string

  • Possible AV’s at TPsOPCProvider close, if clients had not disconnected properly

  • Fixed: TPsStringTree.IndexOfChild accepted child of a child as match, resulting in problems, such as faulty TPsOPCProviderAddressSpace contents (if nodes with the same name exist on different levels)!

  • TPsObjectTable.ReadClassPropField

  • TPsOPCServer mem leak (Credentials not freed at TPsOPCServer.Destroy)

  • TPsConnectorVarLink did not Lock itself when modifying the ExternalValue

  • TPsObjectTable.ReadClassPropField with TPsHistoryArray (Variable property in Variables table)

  • TPsComponentTable.InitObjectList to ensure onwer list is initialized

Version 4.0.1

Build: 4.0.1-456

Release date: 23.08.2007

This is a new bug fix release of Prosys Sentrol.

New properties & events

  • TPsOPCServer.FullName

  • TPsOPCGroup.DeactivateOnError

  • TPsCustomFunction.OnCalcError

  • TPsStorageStmt.ParamDataTypes

  • TPsObjectTable.OnSave

  • TPsHistorian.OnGetFieldValue (published)

New procedures & functions

  • TPsStateItemList.AddEnumValues


  • Minor improvements to OPC server connection status checking

  • TPsVarLinkList.GoodLinkCount

  • TPsOPCProvider.OnDisconnect was called before the client connection was removed from the Clients list

  • AV’s at application close from TPsProvider objects, due to problems in reference counting and other issues

  • Plus a number of smaller issues

Version 4.0.0

Build: 4.0.0-452

Release date: 13.07.2007

This is a new major release of Prosys Sentrol.


  • Support for CodeGear Delphi 2007 & C++Builder 2007

  • Improved support of customized address space definitions in TPsOPCProviderAddressSpace (see the tutorial)

  • User credential management for OPC client and server functionality

  • Object persistence framework included in Sentrol Storage components

New objects

  • TPsStorageTableReference

  • TPsStorageRepository

New properties

  • TPsOPCServer.Credentials & UseCredentials - for defining alternate remote user account

  • TPsOPCServerList.Credentials & UseCredentials

  • TPsOPCProviderClient.User (reading the connected user name)

  • TPsOPCProvider.GetClientInfo & GetGroupInfo

  • TPsOPCProviderAddressSpace.IncludeUnnamed (default = True) to include components without a name in the address space

  • TPsOPCProviderAddressSpace.Refresh can be Forced.

  • TPsOPCProviderAddressSpace.AddComponent & AddVariable enable custom names be used in the address space

  • TPsCustomStorage.Repository

  • TPsStorageField.Reference

  • TPsComponentTable.OnFindObject

  • TPsCustomStorageConnector.Table

  • TPsHistorian.HistoryTable published

  • TPsHistorian.OnGetFieldValue

New procedures/functions

  • PsUtils.SaveStringsAsUnicode

  • TPsStorageTable.AddConstraint, DropConstraint

  • TPsStorageTable.Insert & Update

  • Renamed: TPsOPCProviderAddressSpace.AddComoonent to AddModule and AddComponents to AddModules


  • TPsOPCProvider.FindItem suffered of a major performance problem due to the usage of TPsStringTree.IndexOfPath (see below), causing clients connecting to server items consume a lot of time for waiting (especially with > 1000 items)

  • TPsStringTree.IndexOfPath optimized

  • TPsOPCProviderAddressSpace.PathSeparator and QuoteChar were not working properly

  • Editor for TPsXXXConnector.Links and TPsBitset.States, etc. did not mark the unit modified - and caused changes not to be saved if no other changes had been made.

  • TPsOPCGroup.ConnectItems had a mem access problem, which occurred when items were added in several bunches to the group

  • AV at application close from TPsConnectorManager.IndexOf

  • Plus a numerous amount of smaller issues