dOPC Client Toolkit Help file
What's new in Version 4.x

Describes what is new in this version


New main features of version 4.x: 

  • dOPC is now compatible with Delphi/C++ XE5
  • Now you can create OPC XML DA client applications for Windows, Mac OS, iOS and Android (you need Delphi XE5 or higher)
  • Now you can create 64 bit OPC client applications. (Delphi XE2 or higher needed)
  • dOPC now supports FireMonkey and FCL Framework
  • dOPC is now compatible with Free Pascal (
  • Other changes (see below)


General changes:

  • dOPC is now more platform independent. Which means it is possible to create OPC XML DA client applications for Windows, Linux, MAC OS, iOS and Android. Our dOPC Mobile Explorer is a example for such an application. You can download a executable version at:, the source code of the program can be downloaded at:
  • you can now compile your dOPC programs with Free Pascal ( (
  • we stop the support of Delphi/C++ Builder 5 :-(. Sorry, but Delphi 5 is now more than 10 year old.
  • we have altered internally many things, but this should be no influence to your development. Only, that changes are always error-prone :-(
  • we changed the internally message flow from Windows Postmessages to threads. So, may be, your program could act differently, especially if you use threads.
  • the most of the OPC DA stuff is now in unit dOPCDA and not anymore in unit dOPC. So, if you want to upgrade older programs you have to add dOPCDA in your uses clauses.
  • fixed several internal small bugs.


Other changes:

Class dOPCServer, OPCEventServer and TdOPCHDAServer 
We delete function SelectServer from class TdOPCDAServer, TdOPCAEServer and TdOPCHDAServer.
The reason is that behind this methods are VCL bases dialogs.
Use following functions of unit dOPCDlgServerSelect instead:

function dOPCSelectDAServerDlg(Server: TdOPCSvr): boolean;
function dOPCSelectAEServerDlg(Server: TdOPCSvr): boolean;
function dOPCSelectHDAServerDlg(Server: TdOPCSvr): boolean;


Class TdOPCServer 
we added global variable dOPCUnknownItem.
dOPCUnknownItem is a TdOPCItem class object and will be returned in property ItemIds of class dOPCItemList and dOPCItems if the ItemId does not exists. So, you will never get a nil pointer and following method is possible:

procedure TForm1.dOPCServer1Datachange(Sender: TObject; ItemList: TdOPCItemList);


Class TdOPCServer 
We added property "ItemIds" to class dOPCItemList and dOPCItems.
With property ItemIds you can get your dOPCItems objects now
direct with the OPC ItemId.
procedure TForm1.dOPCServer1Datachange(Sender: TObject; ItemList: TdOPCItemList);
OPCItem : TdOPCItem;
OPCItem := ItemList.ItemIds['Random.Int'];
if OPCItem <> dOPCUnknownItem then


Class TdOPGUI 
It is now possible to use TGUI component also with FireMonkey.

Now with dOPCGUI it is possible to bind OPC Items direct to properties e.g. of a Form object.

TdOPCClientForm = class(TForm)
procedure Button1Click(Sender: TObject);
property Random_String : TdOPCItem read fRandom_String write fRandom_String;

procedure TdOPCClientForm.Button1Click(Sender: TObject);
ShowMessage(Random_String.ItemId + ' has value: '+ Random_String.ValueStr):


Class dOPCEventServer 
Fixed a bug in defining Event sorting. Now you can also define "no" sorting 
What do you think about this topic? Send feedback!
Copyright © 2001-2014 Kassl GmbH ( All rights reserved.