diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAADODrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAADODrv.dad new file mode 100644 index 0000000..4065076 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAADODrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAbsoluteDBDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAbsoluteDBDrv.dad new file mode 100644 index 0000000..368afd7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAbsoluteDBDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad new file mode 100644 index 0000000..c4473d6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAAnyDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DABDEDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DABDEDrv.dad new file mode 100644 index 0000000..97fbdbb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DABDEDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAConverter.exe b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAConverter.exe new file mode 100644 index 0000000..1432eac Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAConverter.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad new file mode 100644 index 0000000..7673912 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM3Drv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad new file mode 100644 index 0000000..3cad429 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBISAM4Drv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBXDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBXDrv.dad new file mode 100644 index 0000000..65509ee Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADBXDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADOADrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADOADrv.dad new file mode 100644 index 0000000..2956e08 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DADOADrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad new file mode 100644 index 0000000..5fd3c00 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAElevateDBDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAFIBDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAFIBDrv.dad new file mode 100644 index 0000000..faa2068 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAFIBDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad new file mode 100644 index 0000000..ae4822e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBODrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBODrv.dad new file mode 100644 index 0000000..20e2d38 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBODrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBXDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBXDrv.dad new file mode 100644 index 0000000..6fc0ce2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAIBXDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad new file mode 100644 index 0000000..703e884 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMyDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad new file mode 100644 index 0000000..319a13d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAMySQLDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad new file mode 100644 index 0000000..5eee435 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DANexusDBDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAODACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAODACDrv.dad new file mode 100644 index 0000000..f368c87 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAODACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPGDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPGDACDrv.dad new file mode 100644 index 0000000..1e1f05a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPGDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad new file mode 100644 index 0000000..1e160dd Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAPostgresDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASDACDrv.dad new file mode 100644 index 0000000..215fd83 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad new file mode 100644 index 0000000..b757591 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLiteDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLitePassDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLitePassDrv.dad new file mode 100644 index 0000000..60b729f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASQLitePassDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASchemaModeler.exe b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASchemaModeler.exe new file mode 100644 index 0000000..999ab5c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DASchemaModeler.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAServer.exe b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAServer.exe new file mode 100644 index 0000000..c8babcf Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAServer.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAUniDACDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAUniDACDrv.dad new file mode 100644 index 0000000..2361291 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAUniDACDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAZeosDrv.dad b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAZeosDrv.dad new file mode 100644 index 0000000..450eaf6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DAZeosDrv.dad differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Data Abstract.lic b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Data Abstract.lic new file mode 100644 index 0000000..16d5f6d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Data Abstract.lic @@ -0,0 +1,18 @@ +133f802af8ca4a2594c36bb3e17689c37d60e6cd7493fa8b9467caa6ea0bc642e1f9cd6e4109f658bf4b085c1eaf724c9bbdac877b5378f415dcc5a472d392a73bd8a7893f58f83b8a87c9c26a2180bb3afd4b3b01ad50fcb32c09ccd2500defac0b5814e319588fe17d1d19224fbca6bc4619356fc3b111c75c40246e76938420c590423cdc0a49806fe2f4ad09174cc544badcb482b16c3de9c86ccc2b8ed664db678ef3cd0457737ad028a801a0bafac7d9bcc891335de4667737864e5f503c6dc8605413fb65f8b970a01bf9ee3f72d184171dea14e2fecae42ba228f090f5f13ce902a8998c25b1856c54eff8db14dd1fa00fe4b491ce5143f4ac3229c4 +4ebb5baf185307679a7600fa67fa2508d041e3148a7bde8297c88f11d7d0779735ea6846bc66d975dcf8018b36237652ffb43d506287ae0a594d30526bf780ee +Name=Trial +Email=Trial +UserId=Trial +Company=Trial +LicenseType=Default +ProductName=Data Abstract +Version=6 +AllowBeta=0 +Trial=1 +SubscriptionEndDate=2009-12-04 +LicenseFileEndDate=2009-12-3 +StartDate=2009-11-30 +EndDate=2010-9-2 +P1=13765056502437446495 +P2=4541684468039050332 +P3=1757767162 diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DataAbstract.daConfig b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DataAbstract.daConfig new file mode 100644 index 0000000..3baa736 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DataAbstract.daConfig @@ -0,0 +1,629 @@ + + + + + System.Data.SqlClient + + + + + + + +

MSSQL .NET Driver

+

This Driver allows you to connect to MSSQL via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database name to wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MSSQL driver options as a semicolon separated list of name/value pairs.

+
+
+ + + System.Data.SqlClient + + + + + + + +

MSSQL2005 .NET Driver

+

This Driver allows you to connect to MSSQL2005 via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database name to wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MSSQL driver options as a semicolon separated list of name/value pairs.

+
+
+ + + + + + + + + + + + + + +

SQL Server Compact v3.5 Driver

+

This Driver allows you to connect to MSSQL Compact databases via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database file name you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional driver options as a semicolon separated list of name/value pairs.

+
+ + To use the MSSQLCE.NET driver for SQL Server Compact v3.5, you must install the SQL Server Compact 3.5 SP1 from http://www.microsoft.com/sqlserver/2005/en/us/compact-downloads.aspx. + +
+ + + System.Data.Odbc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Data.OleDb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FB.NET Driver

+

This Driver allows you to connect to Interbase via the Firebird .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the full path of the database to which you wish to connect (e.g. "c:\..\employee.gdb").

+

Step 5: Custom parameters

+

You can specify additional FB .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the FB.NET driver for Firebird, you must install the open-source firebird driver from http://www.dotnetfirebird.org. + +
+ + + + + + + + + + + + + + + + + + +

SQLite.NET Driver

+

This Driver allows you to connect to an SQLite database via the SQLite .NET driver.

+

Step 2: Login

+

Use these two fields to provide a username and password to access the database server. Username is ignored, Password can be used for protected databases.

+

Step 3: Database

+

Specify the full path of the database to which you wish to connect (e.g. "c:\..\database.db3").

+

Step 4: Custom parameters

+

You can specify additional FB .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the SQLite.NET driver, you must install the free SQLite driver from http://sourceforge.net/projects/sqlite-dotnet2/. + +
+ + + + + + + + + + + + + +

npgsql Driver

+

This Driver allows you to connect to PostgreSQL Database Server via the PostgreSQL .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional npgsql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the NPGSQL.NET driver for PostgreSQL, you must install the open-source PostgreSQL driver from http://pgfoundry.org/projects/npgsql. + +
+ + + MySql.Data.MySqlClient + + + + + + + +

MySql Driver

+

This Driver allows you to connect to MySQL Database Server via the MySql .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MySql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the MySql.NET driver for MySql, you must have the commercial MySql driver from http://dev.mysql.com/. + Please note that you may NOT use the GPL version of the MySQL driver with Data Abstract, as the GPL explicitely + prohibits linking against non-GPLed code. Using the GPL version of the MySQL driver will violate your Data Abstract license and the GPL. + +
+ + + MySql.Data.MySqlClient + + + + + + + +

MySql Driver

+

This Driver allows you to connect to MySQL v4 Database Server via the MySql .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MySql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the MySql.NET driver for MySql, you must have the commercial MySql driver from http://dev.mysql.com/. + Please note that you may NOT use the GPL version of the MySQL driver with Data Abstract, as the GPL explicitely + prohibits linking against non-GPLed code. Using the GPL version of the MySQL driver will violate your Data Abstract license and the GPL. + +
+ + + + System.Data.OracleClient + + + + + + + +

Oracle.NET Driver

+

No specific help for the ODAC driver is available, yet. Please consult the Oracle documentation for details.

+
+
+ + + Oracle.DataAccess.Client + + + + + + + +

Oracle Data Provider Driver for .NET (Oracle10g)

+

Use this selection to connect to Oracle 10g using the Oracle Data Provider for .NET.

+

As a Database parameter you should specify TNS name of the database you want to connect.

+

+ For more details about Oracle Data Provider please refer ODP.NET Home +

+
+
+ + + + + + + + + + + + + + +

Oracle Data Provider Driver for .NET (Oracle 9i)

+

Use this selection to connect to Oracle 9i using the Oracle Data Provider for .NET.

+

As a Database parameter you should specify TNS name of the database you want to connect.

+

+ For more details about Oracle Data Provider please refer ODP.NET Home +

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Borland Data Provider Driver

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DefaultConnections.ini b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DefaultConnections.ini new file mode 100644 index 0000000..2c865eb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/DefaultConnections.ini @@ -0,0 +1,21 @@ +[Delphi] +AdventureWorks=ADO?AuxDriver=SQLNCLI.1;Server=localhost;Database=AdventureWorks;Schemas=1;Integrated Security=SSPI +Northwind=ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;Integrated Security=SSPI +Employee=IBX?Server=localhost;Database=C:\Program Files\Firebird\Firebird_1_5\examples\EMPLOYEE.FDB;UserID=sysdba;Password=masterkey; +PCTrade-MSSQL=ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=PCTrade;Integrated Security=SSPI; +PCTrade-SQLite=SQLite?Database=C:\Documents and Settings\All Users\Documentos\RemObjects Samples\Data Abstract for Delphi\Server\Bin\Data\PCTrade.sqlite.db +PCTrade-FB=IBX?Server=localhost;Database=C:\Documents and Settings\All Users\Documentos\RemObjects Samples\Data Abstract for Delphi\Server\Bin\Data\PCTrade.fdb;UserID=SYSDBA;Password=masterkey; + +[.NET] +AdventureWorks=MSSQL2005.NET?Database=AdventureWorks;Server=localhost;Integrated Security=SSPI +Northwind=MSSQL.NET?Database=Northwind;Server=localhost;Integrated Security=SSPI +Employee=FB.NET?Server=localhost;Database=C:\Program Files\Firebird\Firebird_1_5\examples\EMPLOYEE.FDB;UserID=sysdba;Password=masterkey; +PCTrade-MSSQL=MSSQL.NET?Server=localhost;Database=PCTrade;Integrated Security=SSPI + +[Descriptions] +AdventureWorks_Description=Microsoft SQL Server 2005, localhost +Northwind_Description=Microsoft SQL Server 2000, localhost +Employee_Description=Firebird/Interbase, localhost +PCTrade-SQLite_Description=SQLite, PCTrade.sqlite.db database +PCTrade-MSSQL_Description=Microsoft SQL Server, localhost, PCTrade database +PCTrade-FB_Description=Firebird 2.1, localhost, PCTrade.fdb database diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6.exe b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6.exe new file mode 100644 index 0000000..2ef2a77 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6Admin.exe b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6Admin.exe new file mode 100644 index 0000000..440f145 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DAServer6Admin.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DataAbstract.daConfig b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DataAbstract.daConfig new file mode 100644 index 0000000..3baa736 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/DataAbstract.daConfig @@ -0,0 +1,629 @@ + + + + + System.Data.SqlClient + + + + + + + +

MSSQL .NET Driver

+

This Driver allows you to connect to MSSQL via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database name to wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MSSQL driver options as a semicolon separated list of name/value pairs.

+
+
+ + + System.Data.SqlClient + + + + + + + +

MSSQL2005 .NET Driver

+

This Driver allows you to connect to MSSQL2005 via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database name to wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MSSQL driver options as a semicolon separated list of name/value pairs.

+
+
+ + + + + + + + + + + + + + +

SQL Server Compact v3.5 Driver

+

This Driver allows you to connect to MSSQL Compact databases via the Microsoft .NET MSSQL driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the database file name you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional driver options as a semicolon separated list of name/value pairs.

+
+ + To use the MSSQLCE.NET driver for SQL Server Compact v3.5, you must install the SQL Server Compact 3.5 SP1 from http://www.microsoft.com/sqlserver/2005/en/us/compact-downloads.aspx. + +
+ + + System.Data.Odbc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Data.OleDb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FB.NET Driver

+

This Driver allows you to connect to Interbase via the Firebird .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the full path of the database to which you wish to connect (e.g. "c:\..\employee.gdb").

+

Step 5: Custom parameters

+

You can specify additional FB .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the FB.NET driver for Firebird, you must install the open-source firebird driver from http://www.dotnetfirebird.org. + +
+ + + + + + + + + + + + + + + + + + +

SQLite.NET Driver

+

This Driver allows you to connect to an SQLite database via the SQLite .NET driver.

+

Step 2: Login

+

Use these two fields to provide a username and password to access the database server. Username is ignored, Password can be used for protected databases.

+

Step 3: Database

+

Specify the full path of the database to which you wish to connect (e.g. "c:\..\database.db3").

+

Step 4: Custom parameters

+

You can specify additional FB .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the SQLite.NET driver, you must install the free SQLite driver from http://sourceforge.net/projects/sqlite-dotnet2/. + +
+ + + + + + + + + + + + + +

npgsql Driver

+

This Driver allows you to connect to PostgreSQL Database Server via the PostgreSQL .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional npgsql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the NPGSQL.NET driver for PostgreSQL, you must install the open-source PostgreSQL driver from http://pgfoundry.org/projects/npgsql. + +
+ + + MySql.Data.MySqlClient + + + + + + + +

MySql Driver

+

This Driver allows you to connect to MySQL Database Server via the MySql .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MySql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the MySql.NET driver for MySql, you must have the commercial MySql driver from http://dev.mysql.com/. + Please note that you may NOT use the GPL version of the MySQL driver with Data Abstract, as the GPL explicitely + prohibits linking against non-GPLed code. Using the GPL version of the MySQL driver will violate your Data Abstract license and the GPL. + +
+ + + MySql.Data.MySqlClient + + + + + + + +

MySql Driver

+

This Driver allows you to connect to MySQL v4 Database Server via the MySql .NET driver.

+

Step 2: Server Name

+

In this field, provide the host name or the IP address of the server to which you are connecting.

+

Step 3: Login

+

Use these two fields to provide a username and password to access the database server.

+

Step 4: Database

+

Specify the name of the database to which you wish to connect.

+

Step 5: Custom parameters

+

You can specify additional MySql .Net driver specific options as a semicolon separated list of name/value pairs.

+
+ + To use the MySql.NET driver for MySql, you must have the commercial MySql driver from http://dev.mysql.com/. + Please note that you may NOT use the GPL version of the MySQL driver with Data Abstract, as the GPL explicitely + prohibits linking against non-GPLed code. Using the GPL version of the MySQL driver will violate your Data Abstract license and the GPL. + +
+ + + + System.Data.OracleClient + + + + + + + +

Oracle.NET Driver

+

No specific help for the ODAC driver is available, yet. Please consult the Oracle documentation for details.

+
+
+ + + Oracle.DataAccess.Client + + + + + + + +

Oracle Data Provider Driver for .NET (Oracle10g)

+

Use this selection to connect to Oracle 10g using the Oracle Data Provider for .NET.

+

As a Database parameter you should specify TNS name of the database you want to connect.

+

+ For more details about Oracle Data Provider please refer ODP.NET Home +

+
+
+ + + + + + + + + + + + + + +

Oracle Data Provider Driver for .NET (Oracle 9i)

+

Use this selection to connect to Oracle 9i using the Oracle Data Provider for .NET.

+

As a Database parameter you should specify TNS name of the database you want to connect.

+

+ For more details about Oracle Data Provider please refer ODP.NET Home +

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Borland Data Provider Driver

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/FirebirdSql.Data.FirebirdClient.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/FirebirdSql.Data.FirebirdClient.dll new file mode 100644 index 0000000..40c7c7c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/FirebirdSql.Data.FirebirdClient.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Mono.Security.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Mono.Security.dll new file mode 100644 index 0000000..6accde7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Mono.Security.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Novell.Directory.Ldap.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Novell.Directory.Ldap.dll new file mode 100644 index 0000000..97499c5 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Novell.Directory.Ldap.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Npgsql.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Npgsql.dll new file mode 100644 index 0000000..0cf2152 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/Npgsql.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.Engine.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.Engine.dll new file mode 100644 index 0000000..36d82f8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.Engine.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.UI.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.UI.dll new file mode 100644 index 0000000..79392f8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DAServer6.UI.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.Server.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.Server.dll new file mode 100644 index 0000000..625b0f9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.Server.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.dll new file mode 100644 index 0000000..dfc3cc0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.DataAbstract.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.InternetPack.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.InternetPack.dll new file mode 100644 index 0000000..b7cb5cc Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.InternetPack.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.Server.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.Server.dll new file mode 100644 index 0000000..f1d7503 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.Server.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZLib.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZLib.dll new file mode 100644 index 0000000..bcef67a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZLib.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZeroConf.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZeroConf.dll new file mode 100644 index 0000000..bd8d682 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.ZeroConf.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.dll new file mode 100644 index 0000000..0c4ec08 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/RemObjects.SDK.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/System.Data.SQLite.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/System.Data.SQLite.dll new file mode 100644 index 0000000..66f38e7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/Relativity/System.Data.SQLite.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/RemObjects.DataAbstract.SchemaModeler.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/RemObjects.DataAbstract.SchemaModeler.dll new file mode 100644 index 0000000..197410a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/RemObjects.DataAbstract.SchemaModeler.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/borlndmm.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/borlndmm.dll new file mode 100644 index 0000000..2e3ede2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/borlndmm.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxasa30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxasa30.dll new file mode 100644 index 0000000..3410b2f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxasa30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxase30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxase30.dll new file mode 100644 index 0000000..1977334 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxase30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxconnections.ini b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxconnections.ini new file mode 100644 index 0000000..cd417db --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxconnections.ini @@ -0,0 +1,192 @@ +[DBXPoolConnection] +DriverName=DBXPool +MaxConnections=16 +MinConnections=0 +ConnectTimeout=0 + +[DBXTraceConnection] +DriverName=DBXTrace +;TraceFile=c:\temp\dbxtrace.txt +;TraceFlags=PARAMETER;ERROR;EXECUTE;COMMAND;CONNECT;TRANSACT;BLOB;MISC;VENDOR;READER;DRIVER_LOAD;METADATA +;TraceDriver=true +TraceFlags=NONE + +[DB2Connection] +;DelegateConnection=DBXTraceConnection +DriverName=DB2 +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +DB2 TransIsolation=ReadCommited +Decimal Separator=. + +[MySQLConnection] +;DelegateConnection=DBXTraceConnection +DriverName=MySQL +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Compressed=False +Encrypted=False + + +[OracleConnection] +;DelegateConnection=DBXTraceConnection +DriverName=Oracle +DataBase=Database Name +User_Name=user +Password=password +RowsetSize=20 +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Oracle TransIsolation=ReadCommited +OS Authentication=False +Multiple Transaction=False +Trim Char=False +Decimal Separator=. + +[InformixConnection] +;DelegateConnection=DBXTraceConnection +DriverName=Informix +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Informix TransIsolation=ReadCommited +Trim Char=False + + +[ASAConnection] +;DelegateConnection=DBXTraceConnection +DriverName=ASA +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +ConnectionString= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASA TransIsolation=ReadCommited + +[ASEConnection] +;DelegateConnection=DBXTraceConnection +DriverName=ASE +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASE TransIsolation=ReadCommited + +[BlackfishSQLCONNECTION] +DriverName=BlackfishSQL +HostName=localhost +port=2508 +Database=databasename +create=true +User_Name=sysdba +Password=masterkey +BlobSize=-1 +TransIsolation=ReadCommited +[Employee] +DriverName=Interbase +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +Database=localhost:D:\EMPLOYEE.FDB +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +ErrorResourceFile= +LocaleCode=0000 +Interbase TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInterbaseMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +[MSSQLConnection] +SchemaOverride=sa.dbo +DriverName=MSSQL +HostName=localhost\sqlexpress +DataBase=adventureWorks +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +[AdventureWorks] +DriverName=MSSQL +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +HostName=wks1 +DataBase=master +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +[ADO] +DriverName=MSSQL +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f +HostName=localhost +DataBase=Northwind +User_Name=sa +Password= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=True +Prepare SQL=False +[IBConnection] +DriverName=Interbase +Database=database.gdb +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +ErrorResourceFile= +LocaleCode=0000 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +Interbase TransIsolation=ReadCommited +Trim Char=False diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdb230.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdb230.dll new file mode 100644 index 0000000..b44bb92 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdb230.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdrivers.ini b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdrivers.ini new file mode 100644 index 0000000..63a869f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxdrivers.ini @@ -0,0 +1,301 @@ +[Installed Drivers] +DB2=1 +Interbase=1 +MySQL=1 +Oracle=1 +Informix=1 +MSSQL=1 +ASA=1 +ASE=1 +DBXTrace=1 +DBXPool=1 +BlackfishSQL=1 + +[DBXPool] +DelegateDriver=True +DriverName=DBXPool +DriverUnit=DBXPool +DriverPackageLoader=TDBXPoolDriverLoader,DBXCommonDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXPoolDriverLoader,Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +[DBXTrace] +DelegateDriver=True +DriverName=DBXTrace +DriverUnit=DBXTrace +DriverPackageLoader=TDBXTraceDriverLoader,DBXCommonDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXTraceDriverLoader,Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +[DB2] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverDB2 +LibraryName=dbxdb230.dll +VendorLib=db2cli.dll +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +DB2 TransIsolation=ReadCommited +Decimal Separator=. +MetaDataPackageLoader=TDBXDb2MetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXDb2MetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Interbase] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverINTERBASE +LibraryName=dbxint30.dll +VendorLib=GDS32.DLL +Database=database.gdb +RoleName=RoleName +User_Name=sysdba +Password=masterkey +ServerCharSet= +SQLDialect=3 +BlobSize=-1 +CommitRetain=False +WaitOnLocks=True +ErrorResourceFile= +LocaleCode=0000 +Interbase TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInterbaseMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[MySQL] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverMYSQL +LibraryName=dbxmys30.dll +VendorLib=LIBMYSQL.dll +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Compressed=False +Encrypted=False +MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Oracle] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverORACLE +LibraryName=dbxora30.dll +VendorLib=oci.dll +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Oracle TransIsolation=ReadCommited +RowsetSize=20 +OS Authentication=False +Multiple Transaction=False +Trim Char=False +Decimal Separator=. +MetaDataPackageLoader=TDBXOracleMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXOracleMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[Informix] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverINFORMIX +LibraryName=dbxinf30.dll +VendorLib=isqlt09a.dll +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +Informix TransIsolation=ReadCommited +Trim Char=False +MetaDataPackageLoader=TDBXInformixMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXInformixMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[MSSQL] +SchemaOverride=%.dbo +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverMSSQL +LibraryName=dbxmss30.dll +VendorLib=oledb +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +MSSQL TransIsolation=ReadCommited +OS Authentication=False +Prepare SQL=False +MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[ASA] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DbxDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverASA +LibraryName=dbxasa30.dll +VendorLib=dbodbc9.dll +HostName=ServerName +Database=DBNAME +User_Name=user +Password=password +ConnectionString= +BlobSize=-1 +ErrorResourceFile= +LocaleCode=0000 +ASA TransIsolation=ReadCommited +MetaDataPackageLoader=TDBXSybaseASAMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXSybaseASAMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[ASE] +DriverUnit=DBXDynalink +DriverPackageLoader=TDBXDynalinkDriverLoader,DBXDynalinkDriver100.bpl +DriverPackage=DBXCommonDriver110.bpl +DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxDynalinkDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +DriverAssembly=Borland.Data.DbxCommonDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=a91a7c5705831a4f + +GetDriverFunc=getSQLDriverASE +LibraryName=dbxase30.dll +VendorLib=libct.dll;libcs.dll +HostName=ServerName +DataBase=Database Name +User_Name=user +Password=password +BlobSize=-1 +TDS Packet Size=512 +Client HostName= +Client AppName= +ErrorResourceFile= +LocaleCode=0000 +ASE TransIsolation=ReadCommited +MetaDataPackageLoader=TDBXSybaseASEMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXSybaseASEMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b + +[AutoCommit] +False=0 +True=1 + +[BlockingMode] +False=0 +True=1 + +[WaitOnLocks] +False=1 +True=0 + +[CommitRetain] +False=0 +True=1 + +[OS Authentication] +False=0 +True=1 + +[Multiple Transaction] +False=0 +True=1 + +[Trim Char] +False=0 +True=1 + +[DB2 TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[Interbase TransIsolation] +ReadCommited=1 +RepeatableRead=2 + +[Oracle TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[Informix TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[MSSQL TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[ASA TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[ASE TransIsolation] +DirtyRead=0 +ReadCommited=1 +RepeatableRead=2 + +[SQLDialect] +1=0 +2=1 +3=2 + +[Bdp Providers] +Oracle=Oracle +Sybase=Sybase +Interbase=Interbase +DB2=DB2 +MySql=MySql +[BlackfishSQL] +DriverUnit=DBXClient +DriverPackageLoader=TDBXClientDriverLoader,DBXClientDriver100.bpl +DriverAssemblyLoader=Borland.Data.TDBXClientDriverLoader,Borland.Data.DbxClientDriver,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +MetaDataPackageLoader=TDBXDataStoreMetaDataCommandFactory,DbxReadOnlyMetaData100.bpl +MetaDataAssemblyLoader=Borland.Data.TDBXDataStoreMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b +Password=masterkey +User_Name=sysdba +Port=2508 +Create=False +ReadOnlyDb=False diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxinf30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxinf30.dll new file mode 100644 index 0000000..75f6178 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxinf30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxint30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxint30.dll new file mode 100644 index 0000000..6be9532 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxint30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmss30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmss30.dll new file mode 100644 index 0000000..770053b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmss30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmys30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmys30.dll new file mode 100644 index 0000000..9795083 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmys30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmysA30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmysA30.dll new file mode 100644 index 0000000..e7a34cf Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxmysA30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxora30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxora30.dll new file mode 100644 index 0000000..f39c32d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxora30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxoraw30.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxoraw30.dll new file mode 100644 index 0000000..72fdf4d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/dbxoraw30.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlite3.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlite3.dll new file mode 100644 index 0000000..47d1080 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlite3.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlitepass3.dll b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlitepass3.dll new file mode 100644 index 0000000..bdd83c8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract (Common)/Bin/sqlitepass3.dll differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dcu new file mode 100644 index 0000000..8b55659 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/BaseLoginService_Impl.dfm @@ -0,0 +1,5 @@ +object BaseLoginService: TBaseLoginService + OldCreateOrder = True + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODriverHtml.res new file mode 100644 index 0000000..98b7c6e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAADODrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDriverHtml.res new file mode 100644 index 0000000..30a5da7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAbsoluteDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDriverHtml.res new file mode 100644 index 0000000..93f013e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDrv.res new file mode 100644 index 0000000..84f461e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAAnyDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDriverHtml.res new file mode 100644 index 0000000..57e2373 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DABDEDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM3Drv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM3Drv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM3Drv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM4Drv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM4Drv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAM4Drv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAMDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAMDriverHtml.res new file mode 100644 index 0000000..449e052 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBISAMDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDriverHtml.res new file mode 100644 index 0000000..a6590c9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADBXDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADriverHtml.res new file mode 100644 index 0000000..077daa2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DADOADrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDriverHtml.res new file mode 100644 index 0000000..e0b8925 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDrv.res new file mode 100644 index 0000000..08ba56e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAElevateDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDriverHtml.res new file mode 100644 index 0000000..d12ca9d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAFIBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDriverHtml.res new file mode 100644 index 0000000..4732a47 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODriverHtml.res new file mode 100644 index 0000000..32c06f3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBODrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDriverHtml.res new file mode 100644 index 0000000..790cda2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAIBXDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DALoginService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DALoginService_Impl.dcu new file mode 100644 index 0000000..3f25f5d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DALoginService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDriverHtml.res new file mode 100644 index 0000000..e1fa180 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMyDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAMySQLDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDriverHtml.res new file mode 100644 index 0000000..46b9c33 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DANexusDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDriverHtml.res new file mode 100644 index 0000000..a096da3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAODACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPGDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPGDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPGDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPgDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPgDACDriverHtml.res new file mode 100644 index 0000000..1b66d75 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPgDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAPostgresDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DARemoteService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DARemoteService_Impl.dcu new file mode 100644 index 0000000..2481f32 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DARemoteService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDriverHtml.res new file mode 100644 index 0000000..2ca3ed1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDriverHtml.res new file mode 100644 index 0000000..316f711 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLiteDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLitePassDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLitePassDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DASQLitePassDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDriverHtml.res new file mode 100644 index 0000000..ab9fe22 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAUniDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDriverHtml.res new file mode 100644 index 0000000..f3000f5 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DAZeosDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract.inc b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract.inc new file mode 100644 index 0000000..b54e9da --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract.inc @@ -0,0 +1,33 @@ +{$INCLUDE eDefines.inc} +{.$DEFINE STORERECID} +{$DEFINE DataAbstract5} + +{$IFDEF FPC} + {$IFNDEF RO_FPC_MODE_SET} + {$MODE DELPHI} + {$DEFINE RO_FPC_MODE_SET} + {$ENDIF} + {$DEFINE FPC_SAFECALL_BUG} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo + {$DEFINE DA_FixedWideCharSupport} // support for ftWideFixedChar + {.$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + +{$IFDEF DELPHI6UP} + {$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + + +{$IFDEF DELPHI10UP} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo + {$DEFINE DA_FixedWideCharSupport} // support for ftWideFixedChar +{$ENDIF} + +// always use std methods for TDataset-compatible drivers +{$DEFINE Drivers_CompatibilityMode} + +// bug in Delphi2009 with AsAnsiString +{.$DEFINE DELPHI2009_USE_AsAnsiString_for_TStringField} + +// +{$DEFINE USE_LOCALDATAADAPTER} \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Async.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Async.dcu new file mode 100644 index 0000000..699f4ab Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Async.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Intf.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Intf.dcu new file mode 100644 index 0000000..4cee3cb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Intf.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Invk.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Invk.dcu new file mode 100644 index 0000000..b055ebb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract3_Invk.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Async.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Async.dcu new file mode 100644 index 0000000..d47bf2c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Async.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Intf.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Intf.dcu new file mode 100644 index 0000000..d63632c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Intf.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Invk.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Invk.dcu new file mode 100644 index 0000000..5635f7b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract4_Invk.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dcu new file mode 100644 index 0000000..f58d18a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dfm new file mode 100644 index 0000000..65deb18 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstractService_Impl.dfm @@ -0,0 +1,5 @@ +object DataAbstractService: TDataAbstractService + OldCreateOrder = True + Height = 437 + Width = 546 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl new file mode 100644 index 0000000..0f235c0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp new file mode 100644 index 0000000..2819cd4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcu new file mode 100644 index 0000000..cbdd9e6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ADODriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AbsoluteDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AbsoluteDBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AbsoluteDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AnyDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AnyDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_AnyDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl new file mode 100644 index 0000000..1c0e8e4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp new file mode 100644 index 0000000..0681874 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcu new file mode 100644 index 0000000..85c1fcc Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_BDEDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl new file mode 100644 index 0000000..e7ad031 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp new file mode 100644 index 0000000..932e0bd Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcu new file mode 100644 index 0000000..09039c8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_Reg.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_Reg.dcu new file mode 100644 index 0000000..cc6df58 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Core_Reg.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBISAMDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBISAMDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBISAMDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl new file mode 100644 index 0000000..d7d618a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp new file mode 100644 index 0000000..493d03c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcu new file mode 100644 index 0000000..8023a48 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DBXDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DOADriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DOADriver_D11.res new file mode 100644 index 0000000..c467631 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_DOADriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ElevateDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ElevateDBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ElevateDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_FIBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_FIBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_FIBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBODriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBODriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBODriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl new file mode 100644 index 0000000..6af686b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp new file mode 100644 index 0000000..3c6d05d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcu new file mode 100644 index 0000000..74071fa Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IBXDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_AdditionalResources.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_AdditionalResources.res new file mode 100644 index 0000000..6735fcb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_AdditionalResources.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl new file mode 100644 index 0000000..82fd0bc Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp new file mode 100644 index 0000000..628461c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcu new file mode 100644 index 0000000..bbdcf7b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_Reg.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_Reg.dcu new file mode 100644 index 0000000..cee529b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_IDE_Reg.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MyDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MyDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MyDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MySQLDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MySQLDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_MySQLDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_NexusDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_NexusDBDriver_D11.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_NexusDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ODACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ODACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ODACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PgDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PgDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PgDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PostgresDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PostgresDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_PostgresDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl new file mode 100644 index 0000000..adb4731 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp new file mode 100644 index 0000000..7ac19ed Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLiteDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLitePassDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLitePassDriver_D11.res new file mode 100644 index 0000000..653aa54 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SQLitePassDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl new file mode 100644 index 0000000..7fda872 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp new file mode 100644 index 0000000..9409192 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcu new file mode 100644 index 0000000..e59e52e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_Reg.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_Reg.dcu new file mode 100644 index 0000000..3bfbdbe Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_Scripting_Reg.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SimpleQuery_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SimpleQuery_D11.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_SimpleQuery_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_UniDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_UniDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_UniDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ZeosDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ZeosDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/DataAbstract_ZeosDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dcu new file mode 100644 index 0000000..6fae572 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dfm new file mode 100644 index 0000000..27ec41e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginServiceV5_Impl.dfm @@ -0,0 +1,2 @@ +inherited MultiDbLoginServicev5: TMultiDbLoginServicev5 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dcu new file mode 100644 index 0000000..876bd69 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dfm new file mode 100644 index 0000000..5892128 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/MultiDbLoginService_Impl.dfm @@ -0,0 +1,2 @@ +inherited MultiDbLoginService: TMultiDbLoginService +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/Resources.BDS.RES b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/Resources.BDS.RES new file mode 100644 index 0000000..d8238b6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/Resources.BDS.RES differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dcu new file mode 100644 index 0000000..bbb86c1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dfm new file mode 100644 index 0000000..775b9ce --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/SimpleLoginService_Impl.dfm @@ -0,0 +1,2 @@ +inherited SimpleLoginService: TSimpleLoginService +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/eDefines.inc b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/eDefines.inc new file mode 100644 index 0000000..ef01d58 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/eDefines.inc @@ -0,0 +1,495 @@ +{----------------------------------------------------------------------------} +{file: eDefines.inc } +{type: Delphi include file } +{ } +{compiler: Borland Pascal 7, } +{ Delphi 1-7, 2005-2007 for Win32 } +{ Kylix 1-3, } +{ C++Builder 1-6, 2006-2007 } +{ Free Pascal Compiler 2.x } +{ } +{platforms: DOS, DPMI, Win16, Win32, Win64, Linux, Mac OS X } +{ } +{author: mh@elitedev.com } +{ } +{contents: Defines that can be flexibily used to determine the exact } +{ compiler version used. } +{ } +{(c)opyright elitedevelopments software. all rights reserved. } +{ http://www.elitedev.com } +{ } +{ Third Party component developers are encouraged to use the set of defines } +{ established in this file, rather then their own system, for checking their } +{ component libraries agains different versions of Delphi and C++Builder. } +{ } +{ This file may be distributed freely with both free and commercial source } +{ libraries, but you are asked to please leave this comment in place, and } +{ to return any improvements you make to this file to the maintainer that } +{ is noted above. } +{----------------------------------------------------------------------------} + +{----------------------------------------------------------------------------} +{ Compiler and OS version defines: } +{ } +{ exact compiler versions: } +{ } +{ BP7 Borland Pascal 7.0 } +{ DELPHI1 Delphi 1.0 (any Delphi) } +{ DELPHI2 Delphi 2.0 } +{ DELPHI3 Delphi 3.0 } +{ DELPHI4 Delphi 4.0 } +{ DELPHI5 Delphi 5.0 } +{ DELPHI6 Delphi 6.0 } +{ DELPHI7 Delphi 7.0 } +{ DELPHI9 Delphi 2005 } +{ DELPHI2005 Delphi 2005 } +{ DELPHI2006 Delphi 2006 } +{ DELPHI2007 Delphi 2007 } +{ KYLIX1 Kylix 1.0 } +{ KYLIX2 Kylix 2.0 } +{ KYLIX3 Kylix 3.0 } +{ CBUILDER1 C++Builder 1.0 } +{ CBUILDER3 C++Builder 3.0 } +{ CBUILDER4 C++Builder 4.0 } +{ CBUILDER5 C++Builder 5.0 } +{ } +{ } +{ minimum compiler versions: } +{ } +{ DELPHI1UP Delphi 1.0 and above (any Delphi) } +{ DELPHI2UP Delphi 2.0 and above } +{ DELPHI3UP Delphi 3.0 and above } +{ DELPHI4UP Delphi 4.0 and above } +{ DELPHI5UP Delphi 5.0 and above } +{ DELPHI6UP Delphi 6.0 and above } +{ DELPHI7UP Delphi 7.0 and above } +{ DELPHI9UP Delphi 9.0 (2005) and above } +{ DELPHI10UP Delphi 10.0 (2006) and above } +{ DELPHI11UP Delphi 11.0 (2007) and above } +{ DELPHI2005UP Delphi 2005 and above } +{ DELPHI2006UP Delphi 2006 and above } +{ DELPHI2007UP Delphi 2007 and above } +{ KYLIX1UP Kylix 1.0 and above (any Kylix) } +{ KYLIX2UP Kylix 2.0 and above (any Kylix) } +{ KYLIX3UP Kylix 3.0 and above (any Kylix) } +{ CBUILDER1UP C++Builder 1.0 and above or Delphi 2 and above } +{ CBUILDER3UP C++Builder 3.0 and above or Delphi 3.0 and above } +{ CBUILDER4UP C++Builder 4.0 and above or Delphi 4.0 and above } +{ CBUILDER5UP C++Builder 5.0 and above or Delphi 5.0 and above } +{ CBUILDER6UP C++Builder 5.0 and above or Delphi 5.0 and above } +{ } +{ } +{ compiler types: } +{ } +{ BP Borland Pascal (not Delphi or C++Builder) } +{ DELPHI any Delphi version (but not C++Builder or Kylix) } +{ KYLIX any Kylix version (not Delphi or C++Builder for Windows) } +{ CBUILDER any C++Builder for Windows (Pascal) } +{ } +{ } +{ target platforms compiler types: } +{ } +{ DELPHI_16BIT 16bit Delphi (but not C++Builder!) } +{ DELPHI_32BIT 32bit Delphi (but not C++Builder) } +{ KYLIX_32BIT 32bit Kylix (but not C++Builder) } +{ CBUILDER_32BIT 32bit C++Builer's Pascal (but not Delphi) } +{ } +{ } +{ target cpu types } +{ } +{ CPU16 16bit Delphi or Borland Pascal } +{ CPU32 32bit Delphi or Free Pascal } +{ CPU64 64bit Free Pascal } +{ } +{ target platforms } +{ } +{ DOS any DOS (plain and DPMI) } +{ REALMODE 16bit realmode DOS } +{ PROTECTEDMODE 16bit DPMI DOS } +{ } +{ MSWINDOWS any Windows platform } +{ WIN16 16bit Windows } +{ WIN32 32bit Windows } +{ WIN64 64bit Windows } +{ DOTNET .NET } +{ } +{ LINUX any Linux platform } +{ LINUX32 32bit Linux } +{ LINUX64 64bit Linux } +{ } +{ DARWIN Any Mac OS X } +{ DARWIN32 32bit Mac OS X } +{ DARWIN64 64bit Mac OS X } +{----------------------------------------------------------------------------} + +{ defines for Borland Pascal 7.0 } +{$IFDEF VER70} + {$DEFINE BP} + {$DEFINE BP7} + {$DEFINE 16BIT} + {$DEFINE CPU16} + + { defines for BP7 DOS real mode } + {$IFDEF MSDOS} + {$DEFINE DOS} + {$DEFINE REALMODE} + {$ENDIF} + + { defines for BP7 DOS protected mode } + {$IFDEF DPMI} + {$DEFINE DOS} + {$DEFINE PROTECTEDMODE} + {$ENDIF} + + { defines for BP7 Windows } + {$IFDEF WINDOWS} + {$DEFINE MSWINDOWS} + {$DEFINE WIN16} + {$ENDIF} +{$ENDIF} + +{ defines for Delphi 1.0 thru 7.0 } +{$IFDEF MSWINDOWS} + + { defines for Delphi 1.0 } + {$IFDEF VER80} + {$DEFINE DELPHI} + {$DEFINE DELPHI1} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI_16BIT} + {$DEFINE WIN16} + {$DEFINE 16BIT} + {$DEFINE CPU16} + {$ENDIF} + + { defines for Delphi 2.0 } + {$IFDEF VER90} + {$DEFINE DELPHI} + {$DEFINE DELPHI2} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$ENDIF} + + { defines for C++Builder 1.0 } + {$IFDEF VER93} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE CBUILDER} + {$DEFINE CBUILDER1} + {$DEFINE CBUILDER1UP} + {$ENDIF} + + { defines for Delphi 3.0 } + {$IFDEF VER100} + {$DEFINE DELPHI} + {$DEFINE DELPHI3} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$ENDIF} + + { defines for C++Builder 3.0 } + {$IFDEF VER110} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE CBUILDER} + {$DEFINE CBUILDER3} + {$DEFINE CBUILDER1UP} + {$DEFINE CBUILDER3UP} + {$ENDIF} + + { defines for Delphi 4.0 } + {$IFDEF VER120} + {$DEFINE DELPHI} + {$DEFINE DELPHI4} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$ENDIF} + + { defines for C++Builder 4.0 } + {$IFDEF VER125} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE CBUILDER} + {$DEFINE CBUILDER4} + {$DEFINE CBUILDER1UP} + {$DEFINE CBUILDER3UP} + {$DEFINE CBUILDER4UP} + {$ENDIF} + { defines for Delphi 5.0 } + {$IFDEF VER130} + {$DEFINE DELPHI} + {$DEFINE DELPHI5} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$ENDIF} + + { defines for C++Builder 5.0 } + {$IFDEF VER135} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE CBUILDER} + {$DEFINE CBUILDER5} + {$DEFINE CBUILDER1UP} + {$DEFINE CBUILDER3UP} + {$DEFINE CBUILDER4UP} + {$DEFINE CBUILDER5UP} + {$ENDIF} + + { defines for Delphi 6.0 } + {$IFDEF VER140} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + {$DEFINE DELPHI6} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$ENDIF} + + { defines for Delphi 7.0 } + {$IFDEF VER150} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + {$DEFINE DELPHI7} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$DEFINE DELPHI7UP} + {$ENDIF} + + { defines for Delphi 2005 } + {$IFDEF VER170} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + {$DEFINE DELPHI9} + {$DEFINE DELPHI2005} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$DEFINE DELPHI7UP} + {$DEFINE DELPHI9UP} + {$DEFINE DELPHI2005UP} + {$DEFINE BDS} + {$DEFINE BDS3} + {$DEFINE BDS3UP} + {$ENDIF} + + { defines for Delphi 2006 } + {$IFDEF VER180} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + {$DEFINE DELPHI10} + {$DEFINE DELPHI10A} + {$DEFINE DELPHI2006} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$DEFINE DELPHI7UP} + {$DEFINE DELPHI9UP} + {$DEFINE DELPHI10UP} + {$DEFINE DELPHI2005UP} + {$DEFINE DELPHI2006UP} + {$DEFINE BDS} + {$DEFINE BDS4} + {$DEFINE BDS3UP} + {$DEFINE BDS4UP} + {$ENDIF} + + { defines for Delphi 2007 } + {$IFDEF VER185} + {$UNDEF DELPHI10A} // declared in VER180 + {$UNDEF DELPHI2006} // declared in VER180 + {$UNDEF BDS4} // declared in VER180 + + {$DEFINE DELPHI10B} + {$DEFINE DELPHI10BUP} + {$DEFINE DELPHI11} + {$DEFINE DELPHI11UP} + {$DEFINE DELPHI2007} + {$DEFINE DELPHI2007UP} + {$DEFINE BDS5} + {$DEFINE BDS5UP} + {$ENDIF} + + { defines for Delphi 2009 } + {$IFDEF VER200} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + + {$DEFINE DELPHI12} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$DEFINE DELPHI7UP} + {$DEFINE DELPHI9UP} + {$DEFINE DELPHI10UP} + {$DEFINE DELPHI11UP} + {$DEFINE DELPHI12UP} + + {$DEFINE DELPHI2009} + {$DEFINE DELPHI2005UP} + {$DEFINE DELPHI2006UP} + {$DEFINE DELPHI2007UP} + {$DEFINE DELPHI2009UP} + + {$DEFINE BDS} + {$DEFINE BDS6} + {$DEFINE BDS3UP} + {$DEFINE BDS4UP} + {$DEFINE BDS5UP} + {$DEFINE BDS6UP} + {$ENDIF} + + { defines for Delphi 2010 } + {$IFDEF VER210} + {$DEFINE VER140UP} + {$DEFINE DELPHI} + + {$DEFINE DELPHI14} + {$DEFINE DELPHI1UP} + {$DEFINE DELPHI2UP} + {$DEFINE DELPHI3UP} + {$DEFINE DELPHI4UP} + {$DEFINE DELPHI5UP} + {$DEFINE DELPHI6UP} + {$DEFINE DELPHI7UP} + {$DEFINE DELPHI9UP} + {$DEFINE DELPHI10UP} + {$DEFINE DELPHI11UP} + {$DEFINE DELPHI12UP} + {$DEFINE DELPHI14UP} + + {$DEFINE DELPHI2010} + {$DEFINE DELPHI2005UP} + {$DEFINE DELPHI2006UP} + {$DEFINE DELPHI2007UP} + {$DEFINE DELPHI2009UP} + {$DEFINE DELPHI2010UP} + + {$DEFINE BDS} + {$DEFINE BDS7} + {$DEFINE BDS3UP} + {$DEFINE BDS4UP} + {$DEFINE BDS5UP} + {$DEFINE BDS6UP} + {$DEFINE BDS7UP} + {$ENDIF} + + + {$IFDEF WIN32} + {$DEFINE MSWINDOWS} //not automatically defined for Delphi 2 thru 5 + {$DEFINE 32BIT} + {$DEFINE CPU32} + {$ENDIF} + +{$ENDIF MSWINDOWS} + +{ defines for "Delphi for .NET" } +{$IFDEF CLR} + {$DEFINE DOTNET} +{$ENDIF} + +{$IFDEF DELPHI} + {$IFDEF DELPHI2UP} + {$DEFINE DELPHI_32BIT} + {$ENDIF} +{$ENDIF} + +{$IFDEF CBUILDER} + {$DEFINE CBUILDER_32BIT} +{$ENDIF} + +{$IFNDEF FPC} + + { Kylix 1.0 thru 3.0 } + {$IFDEF LINUX} + + {$DEFINE VER140UP} + + { Any Kylix } + {$DEFINE 32BIT} + {$DEFINE LINUX32} + {$DEFINE KYLIX_32BIT} + {$DEFINE KYLIX} + {$DEFINE KYLIX1UP} + + {$IFDEF CONDITIONALEXPRESSIONS} + {$IF Declared(CompilerVersion)} + + { Kylix 2.0 } + {$IF Declared(RTLVersion) and (RTLVersion = 14.1)} + {$DEFINE KYLIX2} + {$DEFINE KYLIX1UP} + {$DEFINE KYLIX2UP} + {$IFEND} + + { Kylix 3.0 - Delphi portion } + {$IF Declared(RTLVersion) and (RTLVersion = 14.5)} + {$DEFINE KYLIX3} + {$DEFINE KYLIX1UP} + {$DEFINE KYLIX2UP} + {$DEFINE KYLIX3UP} + {$IFEND} + + { Kylix 1.0 } + {$ELSE} + {$DEFINE KYLIX1} + {$IFEND} + {$ENDIF CONDITIONALEXPRESSIONS} + + {$ENDIF LINUX} +{$ENDIF} + +{ CPU } + +{$IFDEF FPC} + {$IFDEF MSWINDOWS} + {$IFDEF CPU64} + {$DEFINE WIN64} + {$ENDIF} + {$ENDIF} + {$IFDEF LINUX} + {$IFDEF CPU32} + {$DEFINE LINUX32} + {$ENDIF} + {$IFDEF CPU64} + {$DEFINE LINUX64} + {$ENDIF} + {$ENDIF} + {$IFDEF DARWIN} + {$IFDEF CPU32} + {$DEFINE DARWIN32} + {$ENDIF} + {$IFDEF CPU64} + {$DEFINE DARWIN64} + {$ENDIF} + {$ENDIF} +{$ELSE} + {$DEFINE ENDIAN_LITTLE} // To have endianness symbol defined in Delphi too +{$ENDIF} \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODataTable.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODataTable.dcu new file mode 100644 index 0000000..06f548b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODataTable.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODriver.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODriver.dcu new file mode 100644 index 0000000..8b2cd6c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADODriver.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADOInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADOInterfaces.dcu new file mode 100644 index 0000000..f46f027 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAADOInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABDEDriver.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABDEDriver.dcu new file mode 100644 index 0000000..a7cbe7d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABDEDriver.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABin2DataStreamer.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABin2DataStreamer.dcu new file mode 100644 index 0000000..a777f2f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABin2DataStreamer.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABinAdapter.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABinAdapter.dcu new file mode 100644 index 0000000..ecd8242 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABinAdapter.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABusinessProcessor.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABusinessProcessor.dcu new file mode 100644 index 0000000..da6e6b3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDABusinessProcessor.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACDSDataTable.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACDSDataTable.dcu new file mode 100644 index 0000000..fe65fc8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACDSDataTable.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACache.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACache.dcu new file mode 100644 index 0000000..be17af4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDACache.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClasses.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClasses.dcu new file mode 100644 index 0000000..d4b19e9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClasses.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientDataModule.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientDataModule.dcu new file mode 100644 index 0000000..b9d5165 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientDataModule.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientModuleWizard.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientModuleWizard.res new file mode 100644 index 0000000..dd81d99 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAClientModuleWizard.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADB2Interfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADB2Interfaces.dcu new file mode 100644 index 0000000..a21f525 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADB2Interfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManager.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManager.dcu new file mode 100644 index 0000000..1ddd170 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManager.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManagerEditor.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManagerEditor.dcu new file mode 100644 index 0000000..21c186d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBSessionManagerEditor.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBXDriver.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBXDriver.dcu new file mode 100644 index 0000000..2965fa6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADBXDriver.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAbstractEditors.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAbstractEditors.dcu new file mode 100644 index 0000000..1012f55 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAbstractEditors.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAdapter.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAdapter.dcu new file mode 100644 index 0000000..f508fa3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataAdapter.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataStreamer.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataStreamer.dcu new file mode 100644 index 0000000..441356b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataStreamer.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTable.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTable.dcu new file mode 100644 index 0000000..4e6ec1e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTable.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableMasterLinkWizardForm.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableMasterLinkWizardForm.dcu new file mode 100644 index 0000000..e36cfe7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableMasterLinkWizardForm.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableReferenceCollection.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableReferenceCollection.dcu new file mode 100644 index 0000000..5f21192 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableReferenceCollection.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableWizards.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableWizards.dcu new file mode 100644 index 0000000..3d98c26 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADataTableWizards.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetProvider.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetProvider.dcu new file mode 100644 index 0000000..415dd09 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetProvider.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetWrapper.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetWrapper.dcu new file mode 100644 index 0000000..ea1a465 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADatasetWrapper.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADelta.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADelta.dcu new file mode 100644 index 0000000..d8819aa Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADelta.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADesigntimeCall.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADesigntimeCall.dcu new file mode 100644 index 0000000..a224f47 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADesigntimeCall.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverInfo.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverInfo.dcu new file mode 100644 index 0000000..49c6c0b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverInfo.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverManager.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverManager.dcu new file mode 100644 index 0000000..8a04c62 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDADriverManager.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAElevateDBInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAElevateDBInterfaces.dcu new file mode 100644 index 0000000..d01ffe4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAElevateDBInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAEngine.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAEngine.dcu new file mode 100644 index 0000000..69b43a4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAEngine.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExceptions.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExceptions.dcu new file mode 100644 index 0000000..47d6a2c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExceptions.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExpressionEvaluator.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExpressionEvaluator.dcu new file mode 100644 index 0000000..425cce1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAExpressionEvaluator.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAGuideWizardForm.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAGuideWizardForm.dcu new file mode 100644 index 0000000..c56efe5 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAGuideWizardForm.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETConnections.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETConnections.dcu new file mode 100644 index 0000000..f73a1c4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETConnections.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETDriver.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETDriver.dcu new file mode 100644 index 0000000..173e1ed Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHETDriver.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHelpers.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHelpers.dcu new file mode 100644 index 0000000..874098a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAHelpers.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBInterfaces.dcu new file mode 100644 index 0000000..a5723da Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBXDriver.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBXDriver.dcu new file mode 100644 index 0000000..2799c58 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIBXDriver.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEData.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEData.dcu new file mode 100644 index 0000000..e556920 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEData.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEMenu.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEMenu.dcu new file mode 100644 index 0000000..df7242a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDEMenu.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDERes.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDERes.dcu new file mode 100644 index 0000000..baf0de7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAIDERes.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfaces.dcu new file mode 100644 index 0000000..7c1898f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfacesEx.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfacesEx.dcu new file mode 100644 index 0000000..ba3b1e3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAInterfacesEx.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAJSONDataStreamer.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAJSONDataStreamer.dcu new file mode 100644 index 0000000..7089571 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAJSONDataStreamer.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalCommand.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalCommand.dcu new file mode 100644 index 0000000..a9a43d9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalCommand.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalDataAdapter.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalDataAdapter.dcu new file mode 100644 index 0000000..e7c2329 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalDataAdapter.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalHelpers.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalHelpers.dcu new file mode 100644 index 0000000..c0373e9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDALocalHelpers.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacroProcessors.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacroProcessors.dcu new file mode 100644 index 0000000..5eca90d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacroProcessors.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacros.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacros.dcu new file mode 100644 index 0000000..290cbd8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMacros.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataTable.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataTable.dcu new file mode 100644 index 0000000..d34477a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataTable.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataset.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataset.dcu new file mode 100644 index 0000000..26d9db7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMemDataset.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMySQLInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMySQLInterfaces.dcu new file mode 100644 index 0000000..95aeca1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAMySQLInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAOracleInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAOracleInterfaces.dcu new file mode 100644 index 0000000..032e469 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAOracleInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPSScriptingProvider.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPSScriptingProvider.dcu new file mode 100644 index 0000000..4e265e6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPSScriptingProvider.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPascalScript.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPascalScript.dcu new file mode 100644 index 0000000..0c65ea8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPascalScript.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPleaseWaitForm.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPleaseWaitForm.dcu new file mode 100644 index 0000000..670e344 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPleaseWaitForm.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPostgresInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPostgresInterfaces.dcu new file mode 100644 index 0000000..b3b90d0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPostgresInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.dcu new file mode 100644 index 0000000..b9a44e7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.res new file mode 100644 index 0000000..0dd5c2d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAPoweredByDataAbstractButton.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dcu new file mode 100644 index 0000000..fccae1d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dfm new file mode 100644 index 0000000..ae8fe93 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialog.dfm @@ -0,0 +1,551 @@ +object ReconcileDialogForm: TReconcileDialogForm + Left = 354 + Top = 231 + Width = 541 + Height = 403 + BorderStyle = bsSizeToolWin + BorderWidth = 5 + Caption = 'One or more updates failed to apply on the server...' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poOwnerFormCenter + OnCreate = FormCreate + OnDestroy = FormDestroy + DesignSize = ( + 515 + 357) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 264 + Top = 154 + Width = 238 + Height = 39 + Anchors = [akLeft, akRight, akBottom] + Caption = + 'Skip over this change and ignore the error. You can try and corr' + + 'ect the problem by modifying data, or reapply the change again a' + + 't a later time.' + WordWrap = True + end + object Label2: TLabel + Left = 264 + Top = 210 + Width = 225 + Height = 26 + Anchors = [akLeft, akRight, akBottom] + Caption = + 'Cancel the changes you made and restore the record to its origin' + + 'al values.' + WordWrap = True + end + object Label3: TLabel + Left = 264 + Top = 266 + Width = 230 + Height = 39 + Anchors = [akLeft, akRight, akBottom] + Caption = + 'Show a dialog with details of the changes made to the record sin' + + 'ce it was last retrieved from or applied to the server.' + WordWrap = True + end + object SkipButton: TButton + Left = 161 + Top = 154 + Width = 96 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&Skip Change' + TabOrder = 3 + OnClick = SkipButtonClick + end + object CancelButton: TButton + Left = 161 + Top = 210 + Width = 96 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&Cancel Change' + TabOrder = 4 + OnClick = CancelButtonClick + end + object SkipAllButton: TButton + Left = 0 + Top = 332 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = 'Skip &All' + TabOrder = 1 + OnClick = SkipAllButtonClick + end + object CancelAllButton: TButton + Left = 80 + Top = 332 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = 'Cancel A&ll' + TabOrder = 2 + OnClick = CancelAllButtonClick + end + object ShowDetailButton: TButton + Left = 161 + Top = 266 + Width = 96 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = 'Show &Details' + TabOrder = 5 + OnClick = ShowDetailButtonClick + end + object TreeView: TTreeView + Left = 0 + Top = 0 + Width = 155 + Height = 327 + Anchors = [akLeft, akTop, akBottom] + HideSelection = False + Indent = 20 + MultiSelectStyle = [] + ReadOnly = True + RowSelect = True + ShowButtons = False + ShowLines = False + ShowRoot = False + StateImages = ImageList + TabOrder = 0 + OnClick = ListBoxClick + end + object btn_Cancel: TButton + Left = 440 + Top = 332 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Cancel = True + Caption = 'Close' + ModalResult = 2 + TabOrder = 6 + end + object memMessageError: TMemo + Left = 160 + Top = 0 + Width = 353 + Height = 145 + Anchors = [akLeft, akTop, akRight, akBottom] + Color = clBtnFace + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 7 + end + object ImageList: TImageList + Left = 59 + Top = 124 + Bitmap = { + 494C010105000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000D6C00000D + 6C00000C5D00000A5100000A4F00000A4F00000A4F00000A4F00000A4F00000A + 4F00000A4F000008400000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000001397000017B9000016 + B5000015AA000013A0000013A00000139700001397000013A000001397000013 + 97000013A000000F7A0000084000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000017B900001CE200001A + D5000018CA000018C6000016B5000016B5000015AA000015AA000016B5000015 + AA000016B5000013A000000A4F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018C600001EF000001C + E200001AD5000018C6000018C6000016B5000016B5000015AA000013A0000015 + AA000015AA000013A000000A4F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA000224FF00001E + F000001CE200001AD5000018CA000018C6000016B5000016B5000015AA000013 + A0000017B90000139700000A4F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA00163BFF000528 + FF00001EF000001CE200001AD5000018CA000018CA000017B9000016B5000015 + AA000015AA000013A000000A4F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA003559FF000F35 + FF000224FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000017 + B9000016B5000013A000000A4F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA004E6EFF00193F + FF000224FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000018 + C6000018C60000139D00000C5D00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA005A79FF002146 + FF00092DFF000224FF00001EF000001DEE00001DEE00001CE200001AD5000018 + CA000018CA000016B500000D6C00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA006682FF002D51 + FF00163BFF000F35FF000224FF00001FFF00001EF000001EF000001DEE00001C + DE00001CDE000017B900000F7A00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA007690FF004163 + FF00193FFF00163BFF00092DFF000528FF000224FF000224FF00001DEE00001D + EE00001CE2000018C60000118700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA007F98FF00728C + FF005676FF004163FF003559FF00284CFF00163BFF000224FF00001FFF00001D + EE00001DEE00001CDE0000139700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000018CA005877FF007F98 + FF00839CFF007690FF006682FF004E6EFF00284CFF000F35FF000224FF00001F + FF00001DEE00001CE2000013A000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000001DEE00092D + FF000F35FF00092DFF000528FF000224FF00001DEE00001CDE00001AD5000018 + CA00001AD5000016B50000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000015F05000269090002640700005E0400004D0300000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000002C2C6C0005056300000065000000600000004F00000000000000 + 0000000000000000000000000000000000000000000000000000000D6C00000D + 6C00000C5D00000A5100000A4F00000A4F00000A4F00000A4F00000A4F00000A + 4F00000A4F000008400000000000000000000000000000000000000D6C00000D + 6C00000C5D00000A5100000A4F00000A4F00000A4F00000A4F00000A4F00000A + 4F00000A4F000008400000000000000000000000000000000000000000000271 + 08000C98220011B62F000DB4250009B21C0006B0160001AE0B0000910700005B + 0400000000000000000000000000000000000000000000000000000000002929 + AC000000840000008E0000008E0000008F0000008C0000008800000081000101 + 54000000000000000000000000000000000000000000001397000017B9000016 + B5000015AA000013A0000013A00000139700001397000013A000001397000013 + 97000013A000000F7A00000840000000000000000000001397000017B9000016 + B5000015AA000013A0000013A00000139700001397000013A000001397000013 + 97000013A000000F7A0000084000000000000000000000000000078414001CB6 + 45001BBA440017B83A0012B630000EB426001AB72D0008B21B0004AF110000AD + 09000067050000000000000000000000000000000000000000002929AC000000 + 96000000970000009B0000009F000000A00000009D000000970000008F000000 + 880000006200000000000000000000000000000000000017B900001CE200001A + D5000018CA000018C6000016B5000016B5000015AA000015AA000016B5000015 + AA000016B5000013A000000A4F0000000000000000000017B900001CE200001A + D1000019CC000018C6000016B5000016B5000015AA000015AA000016B5000015 + AA000016B5000013A000000A4F00000000000000000004860B0023B7530024BE + 580021BD51001CBA45001ABA430012B630000EB426000EB426000AB21D0007B1 + 180002AE0D00005F04000000000000000000000000002929AC000101A3000808 + 9E009999D4006868D0000000AC000000AE000000A9004848B800B7B7E3002727 + A50000008C00010152000000000000000000000000000018C600001EF000001C + E200001AD5000018C6000018C6000016B5000016B5000015AA000013A0000015 + AA000015AA000013A000000A4F0000000000000000000018C600001EF000001C + E200001AD1000018C6003653D300EAEEFA008899E000061FAF000013A0000015 + AA000015AA000013A000000A4F00000000000000000017A437002EC26B002CC1 + 660025BF5A0021BD5100FFFFFF001ABA430012B6300013B6310011B62E000BB3 + 210009B21C00059712000000000000000000000000002929AC000000AB002828 + A300DEDED200FEFEFF006464D4000000B3004646C000E7E7EC00FFFFF7005E5E + B70000009A00020287000000000000000000000000000018CA000224FF00001E + F000001CE200001AD5000018C600FFFFFF00F4F7FF000016B5000015AA000013 + A0000017B90000139700000A4F0000000000000000000019CC000224FF00001E + F0009AACF6000624D7000019CC009AAAEB00FFFFFF008899E0000015AA000015 + AA000015AA000013A000000A4F00000000000091020028BB5E002EC26B002EC2 + 6B002EC26B00FFFFFF00FFFFFF00FFFFFF001ABA43001ABA430015B8380012B6 + 30000FB52A000AB21D0002670800000000004B4BD3000707B1000303B9000000 + C2004C4CA700E6E6D900FCFCFF009E9EE600E8E9F400FFFFF1007575B9000606 + B1000101AB000202A00013145D0000000000000000000018CA00163BFF000528 + FF00001EF000001CE200001BD900FFFFFF00FFFFFF000017B9000016B5000015 + AA000015AA000013A000000A4F0000000000000000000019CC00163BFF000528 + FF00FFFFFF00768FF300001AD1003654DE00FFFFFF00ADBBEE000016B5000015 + AA000016B50000139700000A4F0000000000009701002EC26B002EC26B002EC2 + 6B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001ABA43001ABA43000EB4 + 260014B7340011B62F0005771000000000004B4BD3000808BB000707C8000505 + D1000000C8005353B600F2F2ED00FFFFFF00FFFFFC007575C9000000BE000101 + C3000303B8000303AC0010106F0000000000000000000018CA003559FF000F35 + FF000224FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000017 + B9000016B5000013A000000A4F0000000000000000000019CC003559FF000F35 + FF00FFFFFF00FFFFFF00768FF300EAEEFA00FFFFFF00889CEB000018C6000016 + B5000016B5000013A000000A4F000000000000A001002EC26B002EC26B002EC2 + 6B00FFFFFF00FFFFFF002EC26B00FFFFFF00FFFFFF00FFFFFF001ABA43001ABA + 43001BBA440017B83A000A8D1B00000000004B4BD3000C0CC9000D0DD8000B0B + DC000000D6003C3DCE00EEEFED00FFFFFF00FFFFFD005858DB000000CA000303 + CB000606C5000606B8001212790000000000000000000018CA004E6EFF00193F + FF000224FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000018 + C6000018C6000013A000000A510000000000000000000019CC004D6DFF00193F + FF004D6DFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EAEEFA001C3BD5000018 + C6000017B9000015AA00000A51000000000000A4010033C36E002EC26B002EC2 + 6B00FFFFFF002EC26B002EC26B002EC26B00FFFFFF00FFFFFF00FFFFFF002BBF + 640021BD51001CBA4500077F1300000000004B4BD3001414D8001717EA000B0B + F1004343DB00E4E4EA00FDFDF500BABAD400EAEAE800FEFEFF006363E5000303 + D7000A0ACF000A0AC30021217F0000000000000000000018CA005A79FF002146 + FF00092DFF000224FF00001EF000FFFFFF00FFFFFF00001CE200001BD9000018 + CA000018CA000016B500000D6C0000000000000000000019CC005A79FF002146 + FF00092DFF00294DFF006681F8004565F400C1CCFB00FFFFFF00EAEEFA001C3B + D5000019CC000016B500000D6C000000000000AD000044C665003FC776002EC2 + 6B003AC573002EC26B002EC26B002EC26B002EC26B00FFFFFF00FFFFFF002BBF + 640025BF5A0023BE5700047E0D00000000004B4BD3002626E5002222FB003F3F + E900DCDCE500FDFDEE007373C5000303D7005151B000E3E3D600FFFFFE006161 + E5000808DB000F0FCA001212790000000000000000000018CA006682FF002D51 + FF00163BFF000F35FF000224FF00FFFFFF00FFFFFF00001DEE00001CE200001C + E200001BD9000017B900000F7A0000000000000000000019CC006681F8002D51 + FF00163BFF000F35FF000224FF00001FFF000528FF00EAEEFA00FFFFFF00EAEE + FA00001BD9000017B900000F7A00000000000000000031BE3C0072D5950052CC + 820035C470003AC573002EC26B002EC26B002EC26B002EC26B00FFFFFF002BBF + 64002DC26A001AA73E000000000000000000000000003131FB003232FF005252 + ED00B3B3C2007777CA000000EA000000EC000000E8005252B400ADADB0004D4D + E1001818ED001818B1000000000000000000000000000018CA007690FF004163 + FF00193FFF00163BFF00092DFF000528FF000224FF000224FF00001EF000001D + EE00001CE2000018CA000011870000000000000000000019CC007690FF004163 + FF00193FFF00163BFF00092DFF000528FF000224FF001C41FF00EAEEFA00C1CC + FB00001CE2000019CC0000118700000000000000000000B7000075D6830082DA + A00066D28E0044C879003AC573002EC26B002EC26B002EC26B0028BD5E002BBF + 64002BBF640003870A000000000000000000000000003131FB003E3EFB005353 + FF006868EF005757F9003838FF002525FD002929FF003838FC004242EB003232 + FF001F1FE9003131FB000000000000000000000000000018CA007F98FF00728C + FF005676FF004163FF003559FF00284CFF00163BFF000224FF00001FF900001D + EE00001EF000001BD9000013A00000000000000000000019CC007F98FF00728C + FF005676FF004163FF003559FF002449FF00193FFF000224FF000224FF00001E + F000001EF000001BD9000013A0000000000000000000000000000FBC100077D7 + 800098E0AD0076D798005ACE86003AC573002EC26B002EC26B002EC26B0028BD + 5E000998170000000000000000000000000000000000000000003131FB004949 + FD006E6EFF009191FF009393FF008484FF007676FF006767FF005151FF003131 + FB003131FB00000000000000000000000000000000000018CA005877FF007F98 + FF00839CFF007690FF006682FF004E6EFF00284CFF000F35FF000224FF00001F + F900001FF900001CE2000013A00000000000000000000019CC005877FF007F98 + FF00839CFF007690FF006681F8004D6DFF00294DFF000F35FF00001FFF00001F + FF00001FFF00001BD9000013A0000000000000000000000000000000000000B8 + 000047CB490084DA91008CDCA6006AD391004ECB7F002DBF610017B13600049C + 0A00000000000000000000000000000000000000000000000000000000003131 + FB003131FB006969FE008787FF009292FF007676FF005353FF005151F3003131 + FB00000000000000000000000000000000000000000000000000001DEE00092D + FF000F35FF00092DFF000528FF000224FF00001DEE00001BD900001AD5000018 + CA00001AD5000016B50000000000000000000000000000000000001DEE00092D + FF000F35FF00092DFF000528FF000224FF00001DEE00001BD900001AD1000019 + CC000019CC000017B90000000000000000000000000000000000000000000000 + 00000000000000B8000000B6000000AE000000AD000000A60100000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000003131FB003131FB003131FB003131FB003131FB00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000FFFF000000000000C003000000000000 + 8001000000000000800100000000000080010000000000008001000000000000 + 8001000000000000800100000000000080010000000000008001000000000000 + 8001000000000000800100000000000080010000000000008001000000000000 + C003000000000000FFFF000000000000FFFFFFFFFFFFFFFFF83FF83FC003C003 + E00FE00F80018001C007C0078001800180038003800180018003800380018001 + 0001000180018001000100018001800100010001800180010001000180018001 + 000100018001800180038003800180018003800380018001C007C00780018001 + E00FE00FC003C003F83FF83FFFFFFFFF00000000000000000000000000000000 + 000000000000} + end +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dcu new file mode 100644 index 0000000..4124c5d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dfm new file mode 100644 index 0000000..4508539 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAReconcileDialogDetails.dfm @@ -0,0 +1,95 @@ +object ReconcileDialogDetailsForm: TReconcileDialogDetailsForm + Left = 358 + Top = 218 + Width = 500 + Height = 299 + BorderIcons = [biSystemMenu] + Caption = 'Details for Change to '#39'%s'#39 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poOwnerFormCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object ScrollBox: TScrollBox + Left = 0 + Top = 49 + Width = 484 + Height = 179 + Align = alClient + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + TabOrder = 0 + end + object BottomPanel: TPanel + Left = 0 + Top = 228 + Width = 484 + Height = 35 + Align = alBottom + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 484 + 35) + object OkButton: TButton + Left = 185 + Top = 5 + Width = 95 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&Skip Change' + Default = True + ModalResult = 1 + TabOrder = 0 + end + object CloseButton: TButton + Left = 385 + Top = 5 + Width = 95 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = 'Close' + ModalResult = 7 + TabOrder = 1 + end + object CancelButton: TButton + Left = 285 + Top = 5 + Width = 95 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&Cancel Change' + ModalResult = 2 + TabOrder = 2 + end + end + object TopPanel: TPanel + Left = 0 + Top = 0 + Width = 484 + Height = 49 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + DesignSize = ( + 484 + 49) + object memMessageError: TMemo + Left = 0 + Top = 0 + Width = 484 + Height = 49 + Anchors = [akLeft, akTop, akRight, akBottom] + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + Color = clBtnFace + ScrollBars = ssVertical + TabOrder = 0 + end + end +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARegExpr.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARegExpr.dcu new file mode 100644 index 0000000..5802d9c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARegExpr.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteCommand.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteCommand.dcu new file mode 100644 index 0000000..4309f16 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteCommand.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapter.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapter.dcu new file mode 100644 index 0000000..814913b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapter.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapterRequests.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapterRequests.dcu new file mode 100644 index 0000000..3e54706 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARemoteDataAdapterRequests.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARes.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARes.dcu new file mode 100644 index 0000000..529635e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDARes.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92Interfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92Interfaces.dcu new file mode 100644 index 0000000..caee8f0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92Interfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92QueryBuilder.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92QueryBuilder.dcu new file mode 100644 index 0000000..ee8c9b5 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQL92QueryBuilder.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQLiteInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQLiteInterfaces.dcu new file mode 100644 index 0000000..3c5f185 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASQLiteInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASchemaUnitsGenerator.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASchemaUnitsGenerator.dcu new file mode 100644 index 0000000..ca719b7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASchemaUnitsGenerator.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAScriptingProvider.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAScriptingProvider.dcu new file mode 100644 index 0000000..66bd984 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAScriptingProvider.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASelectDataTablesForm.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASelectDataTablesForm.dcu new file mode 100644 index 0000000..818a288 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASelectDataTablesForm.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAServerLog.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAServerLog.dcu new file mode 100644 index 0000000..0aa5f1c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAServerLog.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASupportClasses.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASupportClasses.dcu new file mode 100644 index 0000000..0d0e296 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASupportClasses.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASybaseInterfaces.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASybaseInterfaces.dcu new file mode 100644 index 0000000..58c00cd Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDASybaseInterfaces.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAUtils.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAUtils.dcu new file mode 100644 index 0000000..cea2a74 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAUtils.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAWhere.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAWhere.dcu new file mode 100644 index 0000000..e42babf Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAWhere.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLAdapter.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLAdapter.dcu new file mode 100644 index 0000000..46020cd Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLAdapter.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLUtils.dcu b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLUtils.dcu new file mode 100644 index 0000000..8f5774f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D11/uDAXMLUtils.dcu differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl new file mode 100644 index 0000000..de455c1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp new file mode 100644 index 0000000..093762e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_ADODriver_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl new file mode 100644 index 0000000..b4116c1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp new file mode 100644 index 0000000..ee5300a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_BDEDriver_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl new file mode 100644 index 0000000..48f7573 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp new file mode 100644 index 0000000..e1f64b4 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Core_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl new file mode 100644 index 0000000..3cf2267 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp new file mode 100644 index 0000000..9e83916 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_DBXDriver_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl new file mode 100644 index 0000000..6a1919f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp new file mode 100644 index 0000000..9e3216e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IBXDriver_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl new file mode 100644 index 0000000..feb3cc1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp new file mode 100644 index 0000000..523c692 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_IDE_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl new file mode 100644 index 0000000..5ad13c0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp new file mode 100644 index 0000000..c4b9033 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D12/DataAbstract_Scripting_D12.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.bpl new file mode 100644 index 0000000..a8af436 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.dcp new file mode 100644 index 0000000..4ea0085 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_ADODriver_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.bpl new file mode 100644 index 0000000..9cf745d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.dcp new file mode 100644 index 0000000..f8e0911 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_BDEDriver_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.bpl new file mode 100644 index 0000000..c92082d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.dcp new file mode 100644 index 0000000..d0686ed Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Core_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.bpl new file mode 100644 index 0000000..70a5d93 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.dcp new file mode 100644 index 0000000..71e46f7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_DBXDriver_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.bpl new file mode 100644 index 0000000..be302f9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.dcp new file mode 100644 index 0000000..b573611 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IBXDriver_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.bpl new file mode 100644 index 0000000..cc6da04 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.dcp new file mode 100644 index 0000000..b0b27e1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_IDE_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.bpl new file mode 100644 index 0000000..fd27cae Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.dcp new file mode 100644 index 0000000..7a8ae28 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D14/DataAbstract_Scripting_D14.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl new file mode 100644 index 0000000..bce4417 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp new file mode 100644 index 0000000..981e47c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_ADODriver_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl new file mode 100644 index 0000000..afe30a9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp new file mode 100644 index 0000000..12875c8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_BDEDriver_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl new file mode 100644 index 0000000..df33378 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp new file mode 100644 index 0000000..a12b4bb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Core_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl new file mode 100644 index 0000000..6cf8e6e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp new file mode 100644 index 0000000..bd4ed77 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_DBXDriver_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl new file mode 100644 index 0000000..e02dd8f Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp new file mode 100644 index 0000000..5fa69c2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IBXDriver_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl new file mode 100644 index 0000000..adbafd7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp new file mode 100644 index 0000000..858215a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_IDE_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl new file mode 100644 index 0000000..fe51a01 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp new file mode 100644 index 0000000..1cb611d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_SQLiteDriver_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl new file mode 100644 index 0000000..78589c1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.bpl differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp new file mode 100644 index 0000000..825fb02 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Dcu/D7/DataAbstract_Scripting_D7.dcp differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Help/changelog.png b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/changelog.png new file mode 100644 index 0000000..0e19bbc Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/changelog.png differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Help/da-sampleserver-delphi.png b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/da-sampleserver-delphi.png new file mode 100644 index 0000000..e0aa7b9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/da-sampleserver-delphi.png differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Help/dadelphi.png b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/dadelphi.png new file mode 100644 index 0000000..578980c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/dadelphi.png differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Help/iphone-xcode.png b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/iphone-xcode.png new file mode 100644 index 0000000..9b8f26c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/iphone-xcode.png differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Help/wiki.png b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/wiki.png new file mode 100644 index 0000000..a626fe1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Help/wiki.png differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Launch.exe b/internal/6.0.43.801/1/Data Abstract for Delphi/Launch.exe new file mode 100644 index 0000000..4b346d2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Launch.exe differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/License.txt b/internal/6.0.43.801/1/Data Abstract for Delphi/License.txt new file mode 100644 index 0000000..9b07198 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/License.txt @@ -0,0 +1,85 @@ +*** REMOBJECTS SOFTWARE END USER LICENSE AGREEMENT *** + +Updated January 8, 2009 + +IMPORTANT: PLEASE READ THIS DOCUMENT CAREFULLY AND IN ITS ENTIRETY BEFORE USING ANY SOFTWARE PRODUCT ACQUIRED FROM REMOBJECTS SOFTWARE. + +This document constitutes a LEGAL AGREEMENT between you, the End User (either an individual or an entity), and RemObjects Software, LLC. + + +1. SCOPE + +This End User License Agreement ("EULA") covers all SOFTWARE PRODUCTS produced and sold by RemObjects Software, LLC. The sections of this EULA that contain information that pertain specifically to a certain product are properly marked as such. + +SOFTWARE PRODUCTS covered this EULA: + +* RemObjects AnyDAC +* RemObjects Data Abstract +* RemObjects DebugServer +* RemObjects Developer Studio +* RemObjects Everwood +* RemObjects Internet Pack +* RemObjects Hydra +* RemObjects Oxygene +* RemObjects Pascal Script +* RemObjects SDK + + +2. DEFINITIONS + +SOFTWARE PRODUCTS: refers to one or more product as made available as a unified installation package. + +(LIBRARY) SOURCE CODE: refers to the source code shipped with any of the SOFTWARE PRODUCTS licensed to you, the End User, in the “Source” folder of the product installation. + +TOOLS: refers to ANY of the applications deployed with the SOFTWARE PRODUCTS in executable form, whether as auxiliary helper programs of a Library product or as main product. This includes but is not limited to any .EXE files and IDE integration. + +SAMPLE CODE: sample code is provided to you as part of the SOFTWARE PRODUCT license inside the “Samples” folder + +EXECUTABLE FORMAT refers to executable files such as .EXE and .DLL files build from your own source code, linking in code provided as part of the LIBRARY SOURCE CODE. It does not encompass Delphi .DCU or .BPL/.DCP files or any other format that would allow a third party to the provided file as a replacement for the LIBRARY SOURCE CODE + + +3. COPYRIGHT + +This SOFTWARE PRODUCT is owned by RemObjects Software, LLC and is protected by copyright laws and international copyright treaties. + +All copyrights of this SOFTWARE PRODUCT, including but not limited to any source code, tools, documentation, images, text, and samples incorporated into the SOFTWARE PRODUCT, as well as those provided via Support Services or any of the RemObjects websites, are proprietary products of RemObjects Software, LLC and are protected by copyright law. You acquire only the right to use the SOFTWARE PRODUCT and do not acquire any rights of ownership. You acknowledge that the SOFTWARE PRODUCT and its source code remains a confidential trade secret of RemObjects Software, LLC. RemObjects Software, LLC may have trademarks, copyrights, patents or other intellectual property rights covering the SOFTWARE PRODUCT. You are not granted any license to these patents, trademarks, copyrights, or other intellectual property rights except as expressly provided herein. RemObjects Software, LLC reserves all rights not expressly granted. + +All names and logos of the SOFTWARE PRODUCTS defined in the SCOPE section of this EULA are trademarks or registered trademarks of RemObjects Software, LLC. These names and logos may only be used by the End User when referring to RemObjects Software, LLC or any of its products. These names and logos may not be used by the End User for branding or marketing purposes, without written consent from RemObjects Software, LLC. + + +2. GRANT OF LICENSE + +BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE PRODUCT, YOU AGREE TO BE BOUND BY ALL OF THE TERMS AND CONDITIONS OF THIS END USER LICENSE AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, YOU ARE NOT PERMITTED TO INSTALL, COPY, OR USE THE SOFTWARE PRODUCT. IF YOU REJECT THE TERMS OF THIS AGREEMENT WITHIN THIRTY (30) DAYS AFTER PURCHASING THE SOFTWARE PRODUCT, YOU MAY SEND AN EMAIL TO sales@remobjects.com AND REQUEST A FULL REFUND OF THE PURCHASE PRICE. IN ORDER TO RECEIVE THE REFUND, YOU MUST IRREVOCABLY UNINSTALL AND/OR DELETE ANY AND ALL COPIES OF THE SOFTWARE PRODUCT(S) YOU HAVE PURCHASED, AND PROVIDE CERTIFICATION OF SUCH TO REMOBJECTS. +You may make one copy of the SOFTWARE PRODUCT solely for backup or archival purposes or transfer the SOFTWARE PRODUCT to a single hard disk provided you keep the original solely for backup or archival purposes. + +You may install the software on up to five computers, providing you are the only person using the software on these computers. + +You may not alter any of the programs or accompanying files without written permission from RemObjects Software, LLC. Any resale or commercial distribution of the SOFTWARE PRODUCT is strictly prohibited, unless RemObjects Software, LLC has given explicit written permission. + +You are not obtaining title to the SOFTWARE PRODUCT or any copyrights. You may not sublicense, rent, lease, convey, modify, translate, convert to another programming language, decompile, or disassemble the SOFTWARE PRODUCT for any purpose. RemObjects Software, LLC grants you as an individual, a personal, non exclusive license to install and use the SOFTWARE PRODUCT for the sole purpose of developing systems that are not in competition with the SOFTWARE PRODUCT, or any other products developed and sold by RemObjects Software, LLC. + +If you are an entity, RemObjects Software, LLC grants you the right to designate one individual within your organization to have the right to use the SOFTWARE PRODUCT in the manner described above. +The named License you acquired is not transferrable to another individual or entity, unless you are given written permission by RemObjects Software, LLC. + +You may link against the LIBRARY SOURCE CODE and deploy it in EXECUTABLE FORMAT as part of your application; you may make changes to the LIBRARY SOURCE CODE and write extensions for your own use, and link against and deploy your changes in EXECUTABLE FORMAT. You may NOT deploy RemObjects Software’s source code to anyone. +SAMPLE CODE for provided for your convenience and you may use it at your discretion. You may create your own products starting from the samples provided and consider this derived work as your own. You may also deploy such derived work in any way you see fit, including in source code form. + +Unless specifically stated on a per-tool basis, you may not deploy the TOOLS included with the SOFTWARE PRODUCT to anyone, neither standalone or as part of your own application; the tools are intended solely for use by yourself. +In general, you may not distribute any part of the installed product, nor any license codes, license files or your website login to third parties. + + +3. SUPPORT SERVICES + +RemObjects Software, LLC may provide the End User with Support Services related to the SOFTWARE PRODUCT. Support Services include free downloading of upgrades as covered by the original purchase, as well as technical support offered via NNTP-based newsgroups, e-mail or telephone. Use of Support Services is governed by RemObjects Software policies and programs described on the RemObjects website (www.remobjects.com/support) and may be subject to additional support charges depending on the type and level of support provided. Any supplemental software code provided to you as part of the Support Services shall be considered part of the SOFTWARE PRODUCT and is subject to the terms and conditions of this EULA. + + +4. TERMINATION + +This License shall remain in effect only for so long as you are in compliance with the terms and conditions of this EULA. This License will terminate if you fail to comply with any of its terms or conditions. You may terminate it at any time by destroying your copies of the SOFTWARE PRODUCT. You agree, upon termination, to destroy all copies of the Product. Without prejudice to any other rights, RemObjects Software, LLC may terminate this EULA if you fail to comply with the terms. The provisions of this EULA that protect the proprietary rights of RemObjects Software, LLC and the LIMITATIONS OF WARRANTIES will continue to be in force even after any termination. Upon termination, RemObjects Software, LLC may also enforce any rights provided by law. + + +5. LIMITATIONS OF WARRANTIES AND LIABILITY + +THIS SOFTWARE PRODUCT IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE APPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE PRODUCT AND ALL OTHER RISK ARISING FROMTHE USE OR PERFORMANCE OF THIS SOFTWARE PRODUCT AND DOCUMENTATION. + +RemObjects Software, LLC SHALL NOT BE LIABLE FOR ANY DAMAGES WHATSOEVER ARISING FROM USE OF OR INABILITY TO USE THIS SOFTWARE PRODUCT, EVEN IF RemObjects Software, LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL RemObjects Software, LLC BE LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, DIRECT, INDIRECT, SPECIAL, PUNITIVE, OR OTHER DAMAGES WHATSOEVER, INCLUDING BUT NOT LIMITED TO DAMAGES OR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS, EVEN IF RemObjects Software, LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/README.html b/internal/6.0.43.801/1/Data Abstract for Delphi/README.html new file mode 100644 index 0000000..12f8ecf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/README.html @@ -0,0 +1,369 @@ + + + +Data Abstract - README - RemObjects Software + + + + + + + + + + + +

+Thank You for Your Interest in our Products and for Choosing Data Abstract for Delphi. +

+

+Our goal with Data Abstract (or “DA” as we call it for short) is to provide you with a powerful and +flexible framework to build your application solutions upon. +

+

+Data Abstract is not standing still. We will continue to improve the product over time and these improvements +will be available to you as part of your subscription. To ensure continued access to the latest release and to +stay up to date with the most recent fixes and new features, please make sure that your subscription stays active. +

+

+Please check our website regularly, to keep your product up to date with the latest additions. +

+ + + + + +
+ +

+Find Out What's New +

+

+The Winter 2009 releases of +both Data Abstract and the underlying RemObjects SDK +continue to focus mainly on quality and bugfixing, but also contain a few new features, such as the new Local Data Adapter, and a tech preview of our +standalone Relativity Server application. (formerly knows as DAServer6). +Check out our What's New page for a detailed overview look of all what's new. +Or visit the Change Logs to get a more detailed list +of all changes, including features, minor enhanceents and bug-fixes. +

+

+New: Build Native Mac and iPhone apps with Data Abstract for OS X +

+

+The Data Abstract product family is growing, as we're adding a third fully native edition to the product suite, designed specifically +for building native client applications for Macintosh computers and iPhone and iPod touch devices using Cocoa and Xcode. +

+ +

+Leverage your existing investment into Data Abstract by exposing your existing servers to new clients written for these two exciting +platforms, for example to deliver a first-class mobile front-end for your DA based enterprise application. +

+

+Data Abstract for OS X is now shipping, and includes RemObjects SDK for OS X. +Please check our Shop for purchasing options, or contact our +sales team if you have any further questions. +

+
+

+Getting Started +

+

+Data Abstract provides several great sources to help you get started using the product. +

+ +

+For one, we have introduced a brand-new suite of sample applications built around a new PCTrade sample database. +A range of client applications are available to demonstrate various concepts such as DA SQL or Business Processors, +all of which work against a pre-compiled server application available from the start menu. +

+

+The PCTrade samples are fully compatible between Delphi and .NET, so you can test Delphi clients against the .NET server versions, or vice versa, if you own both editions of Data Abstract. +

+

+You can read more about the PCTrade sample suite here. +

+ +

+Delve into the Documentation +

+

+Our documentation wiki at wiki.remobjects.com also +continues to be a rich and growing source of information, providing introductory texts about different concepts in +Data Abstract, articles and how-tos, as well as thorough class reference help. +

+

+The Wiki is community driven, allowing you and all other Data Abstract customers to participate and contribute content, as well. +

+
+
+

Some More Technical Information

+

+The remainder of the README provides some more general information and a few guidelines that you should +follow in order to install and get started with Data Abstract. +

+
+

Software Requirements

+

+Data Abstract for Delphi supports versions 7, 2007, 2009 and 2010 of Delphi, for 32-bit Windows Development. +Support is also provided for current releases of Free Pascal 2.2 and later, for both 32-bit and 64-bit Windows and Linux development. +

+

+The Fall 2009 release drops precompiled support for Delphi 6 and Delphi 2006, although package source files are still provided, if +you need to manually install Data Abstract in these versions of Delphi. These two versions are no longer officially supported. +

+

+While Delphi 7 is still officially supported, we strognly recommend our customers to move to Delphi 2007 or later. +

+

TRIAL Version Requirements

+

+The following requirements must be met for the trial version: +

+ +

+Using Indy-based components with the TRIAL edition requires the original version of Indy that was installed with your edition of Delphi. +If you have upgraded to a different Indy version, there should still be enough alternative channels for you to evaluate Data Abstract +without relying on Indy. +

+

+Please note that these requirements are for the TRIAL version only. Since the retail version comes with full source code, +you can easily rebuild it to match the version of Delphi that you are using. Simply open the +BuildPackages_Dx.bpg project group and do a 'Build All Projects'.

+
+

Component Installation

+

+Data Abstract comes as several individual packages, provided in precompiled versions for Delphi 7, 2007, 2009 and 2010. +Setup will install automatically install these packages with the supported IDEs

+

+The Indy packages are built to work with the default versions of Indy that come with +Delphi 7 (Indy 9), 2007 (Indy 10) or 2009 and 2010 (Indy 10.2.3). If you have a custom version, +then the RemObjects SDK Indy package will most likely fail to load when yoiu first start the Delphi IDE. +

+

+If this is the case you will need to adjust the RemObjects.inc file as described below, and then rebuild the RemObjects_Indy +package manually to match your specific version. You can accomplish this by opening the RemObjects_Indy_D7.dpk (or D10-D14) in +the IDE and then building and installing it. +

+

+Alternatively, you can of course choose to not load the RemObjects SDK Indy components, and instead rely on the other channels we provide. +

+

Free Pascal (FPC)

+

+The current release of Data Abstract for Delphi provides library support for Free Pascal 2.2.2 and above, allowing you to rebuild your +projects for the Win32 (x86), Win64 (x64), Linux (x86 and x64) platforms. Compilation against other platforms provided by FPC might be possible, +but is not currently supported; however, we are interested in your feedback if you do try to build against other platforms. +

+

+Official support for other platforms, as well as support for the Lazarus IDE, is under review for future releases. +

+

+The minimum version of FPC required is Free Pascal 2.2.2 or newer (which can be downloaded here). +Please note that we explicitly do not support the 2.0.x release, as it is missing crucial functionality. +

+

+More information about Free Pascal can be found on the FPC homepage at http://www.freepascal.org. +

+

Limitations of Free Pascal Support

+

+Not all client and server channels provided with RemObjects SDK are supported for Free Pascal or for all four platforms available through +Free Pascal. +

+ +
+

License File

+

+To avoid piracy and abuse, the Data Abstract install contains a time-limited license for tools auch as Schema Modeler and Service Builder, as +well as the pre-compiled component libraries. This license file will expire after 30 days of use. +

+

+You will be prompted about this trial period and offered an option to download your personal license file when you start the tools +for the first time, or when you build your application using Data Abstract +or RemObjects SDK +components. You can +choose to either download your own license file right away, or keep working with the trial license until such a time +when the download is more convenient for you. Alternatively, it's possible to download it directly +from my.remobjects.com. +

+

+Please note that applications built with the trial license will be marked as such and display the trial notification +dialog on startup. Download your personal license when prompted, in order to build your applications without this limitation. +

+
+

Sample Projects

+

+A number of sample projects are included in the RemObjects Samples folder of your Shared Documents folder. +These sample projects will show you how to get started and how to use the various functions of Data Abstract, and are built around a +shared “PCTrade” sample server that has been newly added. Please read more about this suite of samples in our wiki, +here. +

+

+After the first start of your development IDE, the Welcome Page +for Data Abstract will be presented, giving you the option to directly open any of the sample client applications. +The matching server application comes pre-compiled with Data Abstract for Delphi and can be launched from the Start Menu. +

+

+Please Note: Samples have been moved from underneath the product install to the Shared Documents folder, to make them more +easily usable on Windows Vista and Windows 7, where the Program Files folder is read-only during normal operation. +

+

Support

+

+Support for Data Abstract is available via our newsgroups at +remobjects.public.dataabstract.delphi. +

+

+You can use these newsgroups to report any problems or suggestions you might have in regards to Data Abstract, you can communicate +with fellow Data Abstract users and exchange ideas and solutions. More information about our support offerings, including the +Premium Support subscription, can be found at remobjects.com/support. +

+
+

+Known Issues in this Release of Data Abstract +

+

+While we try our best to get all known issues fixed and addressed for each build, sometimes less important issues need to be +deferred for later releases in favor of getting a version released at all (perfect is the enemy of shipping, after all). +Please check our list of known issues for any crucial known problems with +the current release. +

+
+
+

Thank You

+

+Let us thank you again for choosing Data Abstract. We are confident that you +will find it to be a worthwhile addition to your development toolset. +

+

+Should you, at any time, encounter a problem or need assistance using Data Abstract, please feel free to ask on the newsgroups +or contact us directly via email at support@remobjects.com. +

+
+

Best Regards, +
+The RemObjects Team +
+http://www.remobjects.com

+
+ + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Samples.lnk b/internal/6.0.43.801/1/Data Abstract for Delphi/Samples.lnk new file mode 100644 index 0000000..a10c71c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Samples.lnk differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.dfm @@ -0,0 +1,5 @@ +object BaseLoginService: TBaseLoginService + OldCreateOrder = True + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.lfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.lfm new file mode 100644 index 0000000..75ebc6a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.lfm @@ -0,0 +1,5 @@ +object BaseLoginService: TBaseLoginService + OldCreateOrder = True + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas new file mode 100644 index 0000000..bbb9fa4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BaseLoginService_Impl.pas @@ -0,0 +1,207 @@ +unit BaseLoginService_Impl; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} DataAbstract4_Intf; + +type + { TBaseLoginService } + TBaseLoginService = class (TRORemoteDataModule, IBaseLoginService) + private + fOnLogout: TNotifyEvent; + protected + { IBaseLoginService methods } + function LoginEx(const aLoginString: Utf8String): Boolean; virtual; + procedure Logout; + published + property OnLogout: TNotifyEvent read fOnLogout write fOnLogout; + end; + + TLoginString = class + private + fValues: TStringList; + function get_UserName(): UTF8String; + function get_Password(): UTF8String; + function get_Connection(): UTF8String; + function get_Item(aName: UTF8String): UTF8String; + protected + procedure set_Item(const aName: UTF8String; const aValue: UTF8String); + public + constructor Create(const aLoginString: UTF8String); + destructor Destroy; override; + property Item[aName: UTF8String]: UTF8String read get_Item; + property Username: UTF8String read get_UserName; + property Password: UTF8String read get_Password; + property Connection: UTF8String read get_Connection; + end; + + +implementation + +uses + uDAInterfaces,uROClasses, + {Generated:} DataAbstract4_Invk, Math, StrUtils; + +{ BaseLoginService } + +function TBaseLoginService.LoginEx( + const aLoginString: Utf8String): Boolean; +begin + raise EROException.Create('Not implemented'); +end; + +procedure TBaseLoginService.Logout; +begin + if assigned(OnLogout) then + OnLogout(self); +end; + +{ TLoginString } + +constructor TLoginString.Create(const aLoginString: UTF8String); + + function ExtractName(const S: string; const NameValueSeparator: Char): string; + var + P: Integer; + begin + Result := S; + P := AnsiPos(NameValueSeparator, Result); + if P <> 0 then + SetLength(Result, P-1) + else + SetLength(Result, 0); + end; + + function ExtractValue(const S, Name: string): string; + begin + if Length(Name) = 0 then + Result := '' + else + Result := Copy(s, Length(Name) + 2, MaxInt); + end; + + + function ParseString2(var p: PChar): string; + var + p1: PChar; + begin + if P^ = '"' then begin + Result := AnsiExtractQuotedStr(P, '"'); + end + else begin + P1 := P; + while (P^ >= ' ') do begin + if p^ = ';' then break + else if p^ = '"' then AnsiExtractQuotedStr(P, '"') + else Inc(P); + end; + SetString(Result, P1, P - P1); + end; + end; + + procedure ParseString(AValue: string); + var + P: PChar; + sName, sValue : string; + begin + fValues.Clear; + P := PChar(AValue); + while P^ <> #0 do begin + sName:= ParseString2(p); + if CharInSet(p^, [#0, ';']) then begin + if sName <> '' then fValues.Add(sName) + end + else if CharInSet(p^,[':','=']) then begin + Inc(p); + sValue := ParseString2(p); + fValues.Add(sName+'='+sValue); + end; + if P^ = ';' then inc(p); + end; + end; + +var + i: integer; + s, s11, s12, s21,s22: string; + l1,l2: integer; +begin + inherited Create; + fValues := TStringList.Create; + s:= {$IFDEF UNICODE}UTF8ToString{$ENDIF}(aLoginString); + + ParseString(s); + + for i:= fValues.Count -1 downto 0 do + if fValues[i]='' then fValues.Delete(i); + + for i := 0 to fValues.Count -1 do begin + s := fValues[i]; + s11:= ExtractName(s,'='); + s12:= ExtractValue(s, s11); + + s21:= ExtractName(s,':'); + s22:= ExtractValue(s, s21); + l1 := Length(s11); if l1 = 0 then l1:=MaxInt; + l2 := Length(s21); if l2 = 0 then l2:=MaxInt; + if l2 < l1 then fValues[i] := s21+'='+s22; + end; +end; + +destructor TLoginString.Destroy; +begin + fValues.Free; + inherited; +end; + +function TLoginString.get_Connection: UTF8String; +begin + Result := Item['Connection']; + if Result = '' then Result:= Item['ConnectionName']; + if Result = '' then Result:= Item['Connection Name']; +end; + +function TLoginString.get_Item(aName: UTF8String): UTF8String; +begin + Result := {$IFDEF UNICODE}UTF8Encode{$ENDIF}(AnsiDequotedStr(fValues.Values[{$IFDEF UNICODE}UTF8ToString{$ENDIF}(aName)],'"')); + if Result = '""' then Result := ''; +end; + +function TLoginString.get_Password: UTF8String; +begin + Result := Item['Password']; +end; + +function TLoginString.get_UserName: UTF8String; +begin + Result := Item['User']; + if Result = '' then Result:= Item['UserID']; + if Result = '' then Result:= Item['User ID']; + if Result = '' then Result:= Item['UserName']; + if Result = '' then Result:= Item['User Name']; +end; + + +procedure TLoginString.set_Item(const aName, aValue: UTF8String); +begin + fValues.Values[{$IFDEF UNICODE}UTF8ToString{$ENDIF}(aName)] :={$IFDEF UNICODE}UTF8ToString{$ENDIF}(aValue); +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildDrivers.bpg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildDrivers.bpg new file mode 100644 index 0000000..d3e61de --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildDrivers.bpg @@ -0,0 +1,94 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DAAbsoluteDBDrv.dad DAADODrv.dad DAAnyDACDrv.dad DABDEDrv.dad \ + DADBISAM3Drv.dad DADBISAM4Drv.dad DADBXDrv.dad DADOADrv.dad DAElevateDBDrv.dad \ + DAFIBDrv.dad DAIBDACDrv.dad DAIBODrv.dad DAIBXDrv.dad DAMyDACDrv.dad \ + DAMySQLDACDrv.dad DANexusDBDrv.dad DAODACDrv.dad DAPGDACDrv.dad \ + DAPostgresDACDrv.dad DASDACDrv.dad DASQLiteDrv.dad DASQLitePassDrv.dad \ + DAUniDACDrv.dad DAZeosDrv.dad +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DAADODrv.dad: Drivers\DAADODrv.dpr + $(DCC) + +DAIBXDrv.dad: Drivers\DAIBXDrv.dpr + $(DCC) + +DADBXDrv.dad: Drivers\DADBXDrv.dpr + $(DCC) + +DAIBODrv.dad: Drivers\DAIBODrv.dpr + $(DCC) + +DAODACDrv.dad: Drivers\DAODACDrv.dpr + $(DCC) + +DASDACDrv.dad: Drivers\DASDACDrv.dpr + $(DCC) + +DADBISAM3Drv.dad: Drivers\DADBISAM3Drv.dpr + $(DCC) + +DADBISAM4Drv.dad: Drivers\DADBISAM4Drv.dpr + $(DCC) + +DAMyDACDrv.dad: Drivers\DAMyDACDrv.dpr + $(DCC) + +DAIBDACDrv.dad: Drivers\DAIBDACDrv.dpr + $(DCC) + +DAFIBDrv.dad: Drivers\DAFIBDrv.dpr + $(DCC) + +DAPostgresDACDrv.dad: Drivers\DAPostgresDACDrv.dpr + $(DCC) + +DAMySQLDACDrv.dad: Drivers\DAMySQLDACDrv.dpr + $(DCC) + +DABDEDrv.dad: Drivers\DABDEDrv.dpr + $(DCC) + +DANexusDBDrv.dad: Drivers\DANexusDBDrv.dpr + $(DCC) + +DAZeosDrv.dad: Drivers\DAZeosDrv.dpr + $(DCC) + +DASQLiteDrv.dad: Drivers\DASQLiteDrv.dpr + $(DCC) + +DAAnyDACDrv.dad: Drivers\DAAnyDACDrv.dpr + $(DCC) + +DAElevateDBDrv.dad: Drivers\DAElevateDBDrv.dpr + $(DCC) + +DADOADrv.dad: Drivers\DADOADrv.dpr + $(DCC) + +DAAbsoluteDBDrv.dad: Drivers\DAAbsoluteDBDrv.dpr + $(DCC) + +DAUniDACDrv.dad: Drivers\DAUniDACDrv.dpr + $(DCC) + +DAPGDACDrv.dad: Drivers\DAPGDACDrv.dpr + $(DCC) + +DASQLitePassDrv.dad: Drivers\DASQLitePassDrv.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup new file mode 100644 index 0000000..d175bf9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D10.bdsgroup @@ -0,0 +1,44 @@ + + + + + + + + + + + DataAbstract_Core_D10.bdsproj + DataAbstract_Scripting_D10.bdsproj + IDE\DataAbstract_IDE_D10.bdsproj + Drivers\DataAbstract_AbsoluteDBDriver_D10.bdsproj + Drivers\DataAbstract_ADODriver_D10.bdsproj + Drivers\DataAbstract_AnyDACDriver_D10.bdsproj + Drivers\DataAbstract_BDEDriver_D10.bdsproj + Drivers\DataAbstract_DBISAMDriver_D10.bdsproj + Drivers\DataAbstract_DBXDriver_D10.bdsproj + Drivers\DataAbstract_DOADriver_D10.bdsproj + Drivers\DataAbstract_ElevateDBDriver_D10.bdsproj + Drivers\DataAbstract_FIBDriver_D10.bdsproj + Drivers\DataAbstract_IBDACDriver_D10.bdsproj + Drivers\DataAbstract_IBODriver_D10.bdsproj + Drivers\DataAbstract_IBXDriver_D10.bdsproj + Drivers\DataAbstract_MyDACDriver_D10.bdsproj + Drivers\DataAbstract_MySQLDACDriver_D10.bdsproj + Drivers\DataAbstract_NexusDBDriver_D10.bdsproj + Drivers\DataAbstract_ODACDriver_D10.bdsproj + Drivers\DataAbstract_PgDACDriver_D10.bdsproj + Drivers\DataAbstract_PostgresDACDriver_D10.bdsproj + Drivers\DataAbstract_SDACDriver_D10.bdsproj + Drivers\DataAbstract_SQLiteDriver_D10.bdsproj + Drivers\DataAbstract_SQLitePassDriver_D10.bdsproj + Drivers\DataAbstract_UniDACDriver_D10.bdsproj + Drivers\DataAbstract_ZeosDriver_D10.bdsproj + DataAbstract_Core_D10.bpl DataAbstract_Scripting_D10.bpl DataAbstract_IDE_D10.bpl DataAbstract_AbsoluteDBDriver_D10.bpl DataAbstract_ADODriver_D10.bpl DataAbstract_AnyDACDriver_D10.bpl DataAbstract_BDEDriver_D10.bpl DataAbstract_DBISAMDriver_D10.bpl DataAbstract_DBXDriver_D10.bpl DataAbstract_DOADriver_D10.bpl DataAbstract_ElevateDBDriver_D10.bpl DataAbstract_FIBDriver_D10.bpl DataAbstract_IBDACDriver_D10.bpl DataAbstract_IBODriver_D10.bpl DataAbstract_IBXDriver_D10.bpl DataAbstract_MyDACDriver_D10.bpl DataAbstract_MySQLDACDriver_D10.bpl DataAbstract_NexusDBDriver_D10.bpl DataAbstract_ODACDriver_D10.bpl DataAbstract_PgDACDriver_D10.bpl DataAbstract_PostgresDACDriver_D10.bpl DataAbstract_SDACDriver_D10.bpl DataAbstract_SQLiteDriver_D10.bpl DataAbstract_SQLitePassDriver_D10.bpl DataAbstract_UniDACDriver_D10.bpl DataAbstract_ZeosDriver_D10.bpl + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj new file mode 100644 index 0000000..aac2833 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D11.groupproj @@ -0,0 +1,300 @@ + + + {788d1e93-6494-4009-bad7-5d620a616e08} + + + + + + + + DataAbstract_Core_D11.dproj + + + DataAbstract_Core_D11.dproj + + + DataAbstract_Core_D11.dproj + + + + + + + + + + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj new file mode 100644 index 0000000..d42152f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D12.groupproj @@ -0,0 +1,356 @@ + + + {788d1e93-6494-4009-bad7-5d620a616e08} + + + + + + + + + + DataAbstract_Core_D12.dproj;..\..\Pascal Script for Delphi\Source\PascalScript_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + + + + DataAbstract_Core_D12.dproj + + + DataAbstract_Core_D12.dproj + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D14.groupproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D14.groupproj new file mode 100644 index 0000000..18292ee --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D14.groupproj @@ -0,0 +1,356 @@ + + + {788d1e93-6494-4009-bad7-5d620a616e08} + + + + + + + + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + + + + DataAbstract_Core_D14.dproj + + + DataAbstract_Core_D14.dproj + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D6.bpg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D6.bpg new file mode 100644 index 0000000..08ba77e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D6.bpg @@ -0,0 +1,96 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_D6.bpl DataAbstract_Scripting_D6.bpl \ + DataAbstract_IDE_D6.bpl DataAbstract_ADODriver_D6.bpl \ + DataAbstract_AnyDACDriver_D6.bpl DataAbstract_BDEDriver_D6.bpl \ + DataAbstract_DBISAMDriver_D6.bpl DataAbstract_DBXDriver_D6.bpl \ + DataAbstract_DOADriver_D6.bpl DataAbstract_ElevateDBDriver_D6.bpl \ + DataAbstract_FIBDriver_D6.bpl DataAbstract_IBDACDriver_D6.bpl \ + DataAbstract_IBODriver_D6.bpl DataAbstract_IBXDriver_D6.bpl \ + DataAbstract_MyDACDriver_D6.bpl DataAbstract_MySQLDACDriver_D6.bpl \ + DataAbstract_NexusDBDriver_D6.bpl DataAbstract_ODACDriver_D6.bpl \ + DataAbstract_PostgresDACDriver_D6.bpl DataAbstract_SDACDriver_D6.bpl \ + DataAbstract_SQLiteDriver_D6.bpl DataAbstract_ZeosDriver_D6.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_D6.bpl: DataAbstract_Core_D6.dpk + $(DCC) + +DataAbstract_IDE_D6.bpl: IDE\DataAbstract_IDE_D6.dpk + $(DCC) + +DataAbstract_ADODriver_D6.bpl: Drivers\DataAbstract_ADODriver_D6.dpk + $(DCC) + +DataAbstract_IBXDriver_D6.bpl: Drivers\DataAbstract_IBXDriver_D6.dpk + $(DCC) + +DataAbstract_SDACDriver_D6.bpl: Drivers\DataAbstract_SDACDriver_D6.dpk + $(DCC) + +DataAbstract_DBXDriver_D6.bpl: Drivers\DataAbstract_DBXDriver_D6.dpk + $(DCC) + +DataAbstract_ODACDriver_D6.bpl: Drivers\DataAbstract_ODACDriver_D6.dpk + $(DCC) + +DataAbstract_IBODriver_D6.bpl: Drivers\DataAbstract_IBODriver_D6.dpk + $(DCC) + +DataAbstract_DBISAMDriver_D6.bpl: Drivers\DataAbstract_DBISAMDriver_D6.dpk + $(DCC) + +DataAbstract_MyDACDriver_D6.bpl: Drivers\DataAbstract_MyDACDriver_D6.dpk + $(DCC) + +DataAbstract_Scripting_D6.bpl: DataAbstract_Scripting_D6.dpk + $(DCC) + +PascalScript_Core_D6.bpl: ..\..\Pascal Script for Delphi\Source\PascalScript_Core_D6.dpk + $(DCC) + +DataAbstract_FIBDriver_D6.bpl: Drivers\DataAbstract_FIBDriver_D6.dpk + $(DCC) + +DataAbstract_IBDACDriver_D6.bpl: Drivers\DataAbstract_IBDACDriver_D6.dpk + $(DCC) + +DataAbstract_BDEDriver_D6.bpl: Drivers\DataAbstract_BDEDriver_D6.dpk + $(DCC) + +DataAbstract_ZeosDriver_D6.bpl: Drivers\DataAbstract_ZeosDriver_D6.dpk + $(DCC) + +DataAbstract_MySQLDACDriver_D6.bpl: Drivers\DataAbstract_MySQLDACDriver_D6.dpk + $(DCC) + +DataAbstract_NexusDBDriver_D6.bpl: Drivers\DataAbstract_NexusDBDriver_D6.dpk + $(DCC) + +DataAbstract_SQLiteDriver_D6.bpl: Drivers\DataAbstract_SQLiteDriver_D6.dpk + $(DCC) + +DataAbstract_PostgresDACDriver_D6.bpl: Drivers\DataAbstract_PostgresDACDriver_D6.dpk + $(DCC) + +DataAbstract_ElevateDBDriver_D6.bpl: Drivers\DataAbstract_ElevateDBDriver_D6.dpk + $(DCC) + +DataAbstract_AnyDACDriver_D6.bpl: Drivers\DataAbstract_AnyDACDriver_D6.dpk + $(DCC) + +DataAbstract_DOADriver_D6.bpl: Drivers\DataAbstract_DOADriver_D6.dpk + $(DCC) + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg new file mode 100644 index 0000000..54b7c70 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_D7.bpg @@ -0,0 +1,110 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_D7.bpl DataAbstract_Scripting_D7.bpl \ + DataAbstract_IDE_D7.bpl DataAbstract_AbsoluteDBDriver_D7.bpl \ + DataAbstract_ADODriver_D7.bpl DataAbstract_AnyDACDriver_D7.bpl \ + DataAbstract_BDEDriver_D7.bpl DataAbstract_DBISAMDriver_D7.bpl \ + DataAbstract_DBXDriver_D7.bpl DataAbstract_DOADriver_D7.bpl \ + DataAbstract_ElevateDBDriver_D7.bpl DataAbstract_FIBDriver_D7.bpl \ + DataAbstract_IBDACDriver_D7.bpl DataAbstract_IBODriver_D7.bpl \ + DataAbstract_IBXDriver_D7.bpl DataAbstract_MyDACDriver_D7.bpl \ + DataAbstract_MySQLDACDriver_D7.bpl DataAbstract_NexusDBDriver_D7.bpl \ + DataAbstract_ODACDriver_D7.bpl DataAbstract_PgDACDriver_D7.bpl \ + DataAbstract_PostgresDACDriver_D7.bpl DataAbstract_SDACDriver_D7.bpl \ + DataAbstract_SQLiteDriver_D7.bpl DataAbstract_SQLitePassDriver_D7.bpl \ + DataAbstract_UniDACDriver_D7.bpl DataAbstract_ZeosDriver_D7.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_D7.bpl: DataAbstract_Core_D7.dpk + $(DCC) + +DataAbstract_IDE_D7.bpl: IDE\DataAbstract_IDE_D7.dpk + $(DCC) + +DataAbstract_ADODriver_D7.bpl: Drivers\DataAbstract_ADODriver_D7.dpk + $(DCC) + +DataAbstract_IBXDriver_D7.bpl: Drivers\DataAbstract_IBXDriver_D7.dpk + $(DCC) + +DataAbstract_SDACDriver_D7.bpl: Drivers\DataAbstract_SDACDriver_D7.dpk + $(DCC) + +DataAbstract_DBXDriver_D7.bpl: Drivers\DataAbstract_DBXDriver_D7.dpk + $(DCC) + +DataAbstract_ODACDriver_D7.bpl: Drivers\DataAbstract_ODACDriver_D7.dpk + $(DCC) + +DataAbstract_IBODriver_D7.bpl: Drivers\DataAbstract_IBODriver_D7.dpk + $(DCC) + +DataAbstract_DBISAMDriver_D7.bpl: Drivers\DataAbstract_DBISAMDriver_D7.dpk + $(DCC) + +DataAbstract_MyDACDriver_D7.bpl: Drivers\DataAbstract_MyDACDriver_D7.dpk + $(DCC) + +DataAbstract_Scripting_D7.bpl: DataAbstract_Scripting_D7.dpk + $(DCC) + +PascalScript_Core_D7.bpl: ..\..\Pascal Script for Delphi\Source\PascalScript_Core_D7.dpk + $(DCC) + +DataAbstract_FIBDriver_D7.bpl: Drivers\DataAbstract_FIBDriver_D7.dpk + $(DCC) + +DataAbstract_IBDACDriver_D7.bpl: Drivers\DataAbstract_IBDACDriver_D7.dpk + $(DCC) + +DataAbstract_BDEDriver_D7.bpl: Drivers\DataAbstract_BDEDriver_D7.dpk + $(DCC) + +DataAbstract_ZeosDriver_D7.bpl: Drivers\DataAbstract_ZeosDriver_D7.dpk + $(DCC) + +DataAbstract_MySQLDACDriver_D7.bpl: Drivers\DataAbstract_MySQLDACDriver_D7.dpk + $(DCC) + +DataAbstract_NexusDBDriver_D7.bpl: Drivers\DataAbstract_NexusDBDriver_D7.dpk + $(DCC) + +DataAbstract_SQLiteDriver_D7.bpl: Drivers\DataAbstract_SQLiteDriver_D7.dpk + $(DCC) + +DataAbstract_PostgresDACDriver_D7.bpl: Drivers\DataAbstract_PostgresDACDriver_D7.dpk + $(DCC) + +DataAbstract_ElevateDBDriver_D7.bpl: Drivers\DataAbstract_ElevateDBDriver_D7.dpk + $(DCC) + +DataAbstract_AnyDACDriver_D7.bpl: Drivers\DataAbstract_AnyDACDriver_D7.dpk + $(DCC) + +DataAbstract_DOADriver_D7.bpl: Drivers\DataAbstract_DOADriver_D7.dpk + $(DCC) + +DataAbstract_AbsoluteDBDriver_D7.bpl: Drivers\DataAbstract_AbsoluteDBDriver_D7.dpk + $(DCC) + +DataAbstract_PgDACDriver_D7.bpl: Drivers\DataAbstract_PgDACDriver_D7.dpk + $(DCC) + +DataAbstract_UniDACDriver_D7.bpl: Drivers\DataAbstract_UniDACDriver_D7.dpk + $(DCC) + +DataAbstract_SQLitePassDriver_D7.bpl: Drivers\DataAbstract_SQLitePassDriver_D7.dpk + $(DCC) + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_K3.bpg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_K3.bpg new file mode 100644 index 0000000..6649fe0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/BuildPackages_K3.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_Core_K3.bpl bplDataAbstract_IDE_K3.so +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_Core_K3.bpl: DataAbstract_Core_K3.dpk + $(DCC) + +bplDataAbstract_IDE_K3.so: IDE/DataAbstract_IDE_K3.dpk + $(DCC) + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas new file mode 100644 index 0000000..2d93706 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DALoginService_Impl.pas @@ -0,0 +1,230 @@ +unit DALoginService_Impl {$IFNDEF FPC}deprecated{$ENDIF}; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROSessions, + {Ancestor Implementation:} DARemoteService_Impl, + {Generated:} DataAbstract3_Intf; + +const + def_UserID = 'UserID'; + def_Password = 'UserPassword'; + def_SessionID = 'SessionID'; + +type + TDALoginService = class; + + TDAOnLoginEvent = procedure(Sender : TDALoginService; var aUserID, aPassword : AnsiString) of object; + TDAOnLoginSuccessEvent = procedure(Sender : TDALoginService; aLoginInfo : TDALoginInfo) of object; + TDAOnLoginFailureEvent = procedure(Sender : TDALoginService; const aUserID, aPassword : AnsiString) of object; + TDAOnLogoutEvent = procedure(Sender : TDALoginService; const aSessionID : TGUID) of object; + + { TDALoginService } + TDALoginService = class(TDARemoteService, IDALoginService) + private + fLoginDataset: string; + fLogoutCommand: string; + fOnLogin: TDAOnLoginEvent; + fOnLoginFailure: TDAOnLoginFailureEvent; + fOnLoginSuccess: TDAOnLoginSuccessEvent; + fOnLogout: TDAOnLogoutEvent; + fParamNameUserID: string; + fParamNamePassword: string; + fParamNameSessionID: string; + function GetParamNamePasswordStored: Boolean; + function GetParamNameUserIDStored: Boolean; + function GetParamNameSessionIDStored: Boolean; + procedure SetParamNameSessionID(const Value: string); + + protected + procedure SetLoginDataset(const Value: string); virtual; + procedure SetLogoutCommand(const Value: string); virtual; + + procedure SetParamNamePassword(const Value: string); virtual; + procedure SetParamNameUserID(const Value: string); virtual; + + function DoLogin(const UserID, Password: AnsiString; out LoginInfo: TDALoginInfo): boolean; virtual; + procedure DoLogout(const SessionID : TGUID); virtual; + + { IDALoginService methods } + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + + public + constructor Create(aOwner : TComponent); override; + procedure Assign(Source: TPersistent); override; + published + property LoginDataset : string read fLoginDataset write SetLoginDataset; + property LogoutCommand : string read fLogoutCommand write SetLogoutCommand; + + property ParamNameUserID : string read fParamNameUserID write SetParamNameUserID stored GetParamNameUserIDStored; + property ParamNamePassword : string read fParamNamePassword write SetParamNamePassword stored GetParamNamePasswordStored; + property ParamNameSessionID : string read fParamNameSessionID write SetParamNameSessionID stored GetParamNameSessionIDStored; + + property OnLogin: TDAOnLoginEvent read fOnLogin write fOnLogin; + property OnLoginSuccess: TDAOnLoginSuccessEvent read fOnLoginSuccess write fOnLoginSuccess; + property OnLoginFailure: TDAOnLoginFailureEvent read fOnLoginFailure write fOnLoginFailure; + property OnLogout: TDAOnLogoutEvent read fOnLogout write fOnLogout; + end deprecated; + +implementation + +uses + {Generated:} uDAInterfaces, uROClasses; + +{ DALoginService } +procedure TDALoginService.Assign(Source: TPersistent); +var + lSource: TDALoginService; +begin + inherited; + if Source is TDALoginService then begin + lSource := TDALoginService(Source); + + LoginDataset := lSource.LoginDataset; + LogoutCommand := lSource.LogoutCommand; + OnLogin := lSource.OnLogin; + OnLoginFailure := lSource.OnLoginFailure; + OnLoginSuccess := lSource.OnLoginSuccess; + OnLogout := lSource.OnLogout; + ParamNamePassword := lSource.ParamNamePassword; + ParamNameSessionID := lSource.ParamNameSessionID; + ParamNameUserID := lSource.ParamNameUserID; + end; +end; + +constructor TDALoginService.Create(aOwner: TComponent); +begin + fParamNameUserID := def_UserID; + fParamNamePassword := def_Password; + fParamNameSessionID := def_SessionID; + + inherited; +end; + +procedure TDALoginService.SetLoginDataset(const Value: string); +begin + fLoginDataset := Value; +end; + +procedure TDALoginService.SetLogoutCommand(const Value: string); +begin + fLogoutCommand := Value; +end; + +function TDALoginService.Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; +var tempuserid, temppassword : AnsiString; +begin + tempuserid := UserID; + temppassword := Password; + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if Assigned(fOnLogin) then fOnLogin(Self, tempuserid, temppassword); + + result := DoLogin(tempuserid, temppassword, LoginInfo); + + if not result then begin + DestroySession; + if Assigned(fOnLoginFailure) then fOnLoginFailure(Self, tempuserid, temppassword); + end + else begin + if Assigned(fOnLoginSuccess) then fOnLoginSuccess(Self, LoginInfo); + end; +end; + +procedure TDALoginService.Logout; +begin + if (LogoutCommand<>'') + then CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if Assigned(fOnLogout) + then fOnLogout(Self, Session.SessionID); + + DoLogout(Session.SessionID); + + DestroySession; +end; + +function TDALoginService.DoLogin(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): boolean; +var ds : IDADataset; + i : integer; +begin + result := FALSE; + LoginInfo := NIL; + + ds := ServiceSchema.NewDataset(Connection, LoginDataset, [ParamNameUserID, ParamNamePassword], [UserID, Password]); + if ds.EOF then Exit; + + LoginInfo := TDALoginInfo.Create; + LoginInfo.UserID := UserID; + LoginInfo.SessionID := {$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(GUIDToString(Session.SessionID)); + + for i := 0 to (ds.FieldCount-1) do begin + Session[ds.Fields[i].Name] := ds.Fields[i].Value; + LoginInfo.Attributes.Add({$IFDEF UNICODE}UTF8Encode{$ENDIF}(ds.Fields[i].Name+'='+ds.Fields[i].AsString)); + end; + + result := TRUE; +end; + +procedure TDALoginService.DoLogout(const SessionID: TGUID); +var cmd : IDASQLCommand; +begin + if (LogoutCommand<>'') + then cmd := ServiceSchema.NewCommand(Connection, LogoutCommand, [ParamNameSessionID], [GUIDToString(SessionID)]); + + if Not Connection.InTransaction then + Connection.BeginTransaction; + try + cmd.Execute; + Connection.CommitTransaction; + except + Connection.RollbackTransaction; + raise; + end; + +end; + +procedure TDALoginService.SetParamNamePassword(const Value: string); +begin + fParamNamePassword := Value; +end; + +procedure TDALoginService.SetParamNameUserID(const Value: string); +begin + fParamNameUserID := Value; +end; + +function TDALoginService.GetParamNamePasswordStored: Boolean; +begin + result := fParamNamePassword<>def_Password +end; + +function TDALoginService.GetParamNameUserIDStored: Boolean; +begin + result := fParamNameUserID<>def_UserID +end; + +function TDALoginService.GetParamNameSessionIDStored: Boolean; +begin + result := fParamNameSessionID<>def_SessionID +end; + +procedure TDALoginService.SetParamNameSessionID(const Value: string); +begin + fParamNameSessionID := Value; +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas new file mode 100644 index 0000000..aee9793 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DARemoteService_Impl.pas @@ -0,0 +1,1150 @@ +unit DARemoteService_Impl {$IFNDEF FPC}deprecated{$ENDIF}; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{----------------------------------------------------------------------------} +{ LEGACY NOTE: } +{ As of v4.0, future development of this unit has been discontinued, and } +{ new featureswill be impleentd in DataAbstractService_Impl.pas, instead. } +{ } +{ When applying fixes to this unit, please propagate them to the new unit } +{ as well, where needed. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + Classes, SysUtils, + {$IFDEF DELPHI5}Forms, {$ENDIF} + uRORemoteDataModule, uROClientIntf, uROSessions, uROClasses, uROTypes, + uDAClasses, uDAInterfaces, uDADataTable, uDABusinessProcessor, uDACache, uDADelta, uDADataStreamer, + uDADataTableReferenceCollection, DataAbstract3_Intf; + +type + { Types } + TDARemoteService = class; + + { Events } + TDAAcquireConnectionEvent = procedure(Sender: TDARemoteService; var ConnectionName: string) of object; + TDAConnectionAcquiredEvent = procedure(Sender: TDARemoteService; const ConnectionName: string; const AcquiredConnection: IDAConnection) of object; + TDAAcquireConnectionFailureEvent = procedure(Sender: TDARemoteService; const ConnectionName: string; Error: Exception) of object; + TDAGetDatasetSchemaEvent = procedure(const Dataset: IDADataset) of object; + TDAGetDatasetDataEvent = procedure(const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer) of object; + TDAOnBusinessProcessorAutoCreated = procedure(Sender : TRORemoteDataModule; BusinessProcessor : TDABusinessProcessor) of object; + TDABeforeExecuteCommandEvent = procedure(Sender : TDARemoteService; const aCommand : IDASQLCommand) of object; + TDAAfterExecuteCommandEvent = procedure(Sender : TDARemoteService; const aCommand : IDASQLCommand; RowsAffacted : integer) of object; + TDAConnectionReleasedEvent = procedure(Sender: TDARemoteService; const ConnectionName: string) of object; + TDAGetSchemaAsXMLEvent = procedure(Sender: TDARemoteService; var SchemaXML : AnsiString) of object; + + TDAProcessDeltasEvent = procedure(Sender : TDARemoteService; DeltaStructs : TDADeltaStructList) of object; + TDAProcessDeltasErrorEvent = procedure(Sender : TDARemoteService; DeltaStructs : TDADeltaStructList; Error : Exception; var DoRaise : boolean) of object; + + TDAOnGetCachedDataset = procedure(Sender : TDARemoteService; const aDatasetName : string; aDataStream : TStream) of object; + + TDAGetDatasetDataValidationEvent = procedure(Sender: TDARemoteService; + const aConnection: IDAConnection; + const aDatasetName: string; + const aParamNames: array of string; + const aParamValues : array of variant; + aSchema: TDASchema; + var Allowed : boolean) of object; + + TDAUpdateDataTransactionEvent = procedure(Sender: TDARemoteService; var UseDefaultTransactionLogic: Boolean) of object; + + TDAAfterProcessTransactionAction = (pptaNone, pptaRollback, pptaCommit); + + { TDARemoteService } + TDARemoteServiceOption = (rsoProcessDeltasWithoutUpdateRules); + TDARemoteServiceOptions = set of TDARemoteServiceOption; + + TDARemoteService = class(TRORemoteDataModule, IDARemoteService) + private + fServiceSchema: TDASchema; + + fStreamedAcquireConnection, + fAcquireConnection: boolean; + fConnectionName: string; + fOnBeforeAcquireConnection: TDAAcquireConnectionEvent; + fOnAfterAcquireConnection: TDAConnectionAcquiredEvent; + fOnAfterReleaseConnection: TDAConnectionReleasedEvent; + fOnBeforeReleaseConnection: TDAConnectionAcquiredEvent; + fConnection: IDAConnection; + fServiceAdapter: TDADataStreamer; + fOnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent; + + fOnAfterGetDatasetData: TDAGetDatasetDataEvent; + fOnBeforeGetDatasetData: TDAGetDatasetDataEvent; + fOnAfterGetDatasetSchema: TDAGetDatasetSchemaEvent; + fOnBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent; + fAutoCreateBusinessProcessors: boolean; + fAllowExecuteSQLCommand: boolean; + fAllowWhereSQL: boolean; + fOnBusinessProcessorAutoCreated: TDAOnBusinessProcessorAutoCreated; + fOnBeforeExecuteCommand: TDABeforeExecuteCommandEvent; + fOnAfterExecuteCommand: TDAAfterExecuteCommandEvent; + fOnGetSchemaAsXML: TDAGetSchemaAsXMLEvent; + + fGetDatasetDataValidation: TDAGetDatasetDataValidationEvent; + + fAfterProcessTransactionAction: TDAAfterProcessTransactionAction; + + fOnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent; + fOnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent; + fOnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent; + + fOnBeforeProcessDeltas : TDAProcessDeltasEvent; + fOnAfterProcessDeltas: TDAProcessDeltasEvent; + fOnProcessDeltasError: TDAProcessDeltasErrorEvent; + fExportedDataTables: TDADataTableReferenceCollection; + fCache: TDACache; + fCacheElements: TDACacheElementCollection; + fOnGetCachedDataset: TDAOnGetCachedDataset; + fOptions: TDARemoteServiceOptions; + + function TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): Boolean; + procedure SetServiceSchema(const Value: TDASchema); + procedure SetAcquireConnection(const Value: boolean); + procedure SetConnectionName(const Value: string); + procedure SetServiceAdapter(const Value: TDADataAdapter); + function UnpackDeltas(const DeltaStream: Binary; DeltaStructList : TDADeltaStructList): integer; + procedure SetExportedDataTables(const Value: TDADataTableReferenceCollection); + procedure MergeDatatablesToSchema(aList : TList); + procedure SetCache(const Value: TDACache); + procedure SetCacheElements(const Value: TDACacheElementCollection); + procedure SetConnection(const aValue: IDAConnection); + + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure Loaded; override; + + procedure CheckObjects(const aConnection: IDAConnection; + aSchema: TDASchema; anAdapter: TDADataAdapter; + CheckConnection : boolean = TRUE; + CheckSchema : boolean = TRUE; + CheckAdapter : boolean = TRUE); + + { Internal } + procedure DoOnActivate(aClientID: TGUID; const aMessage: IROMessage); override; + procedure DoOnDeactivate(aClientID: TGUID); override; + + function DoGetDatasetData(const Stream: TStream; + const aConnection: IDAConnection; + const aDatasetName: ansistring; + const aParamNames: array of string; + const aParamValues : array of variant; + const UserFilter : ansistring; + aSchema: TDASchema; + anAdapter: TDADataAdapter; + someOptions: TDAWriteOptions; + MaxRecords: integer): integer; virtual; + + function CreateParamString(const ParamNames: array of string; const ParamValues: array of Variant): string; + + function GetDatasetData(const DatasetName: ansistring; + const ParamNames: array of string; + const ParamValues: array of Variant; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; overload; + function GetDatasetData(const DatasetName: Ansistring; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; overload; + + { IDARemoteService } + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; virtual; + function GetDatasetData(const DatasetName: AnsiString; + const Params: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; overload; virtual; + function UpdateData(const Delta: Binary): Binary; virtual; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; virtual; + function GetSchemaAsXML: AnsiString; virtual; + function GetDatasetDataEx(const DatasetName: AnsiString; + const Params: TDADatasetParamArray; + const UserFilter: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): TROBinaryMemoryStream; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + + public + constructor Create(aOwner : TComponent); override; + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + property Connection: IDAConnection read fConnection write SetConnection; + + published + property AcquireConnection: boolean read fAcquireConnection write SetAcquireConnection default false; + property ConnectionName: string read fConnectionName write SetConnectionName; + + property ServiceSchema: TDASchema read fServiceSchema write SetServiceSchema; + property ServiceAdapter: TDADataAdapter read fServiceAdapter write SetServiceAdapter; + + property AutoCreateBusinessProcessors : boolean read fAutoCreateBusinessProcessors write fAutoCreateBusinessProcessors default true; + property AllowExecuteSQLCommand: boolean read fAllowExecuteSQLCommand write fAllowExecuteSQLCommand default false; + property AllowWhereSQL: boolean read fAllowWhereSQL write fAllowWhereSQL default true; + + property OnAfterProcessTransactionAction: TDAAfterProcessTransactionAction read fAfterProcessTransactionAction write fAfterProcessTransactionAction default pptaCommit; + + property OnBeforeAcquireConnection: TDAAcquireConnectionEvent read fOnBeforeAcquireConnection write fOnBeforeAcquireConnection; + property OnAfterAcquireConnection: TDAConnectionAcquiredEvent read fOnAfterAcquireConnection write fOnAfterAcquireConnection; + property OnBeforeReleaseConnection: TDAConnectionAcquiredEvent read fOnBeforeReleaseConnection write fOnBeforeReleaseConnection; + property OnAfterReleaseConnection: TDAConnectionReleasedEvent read fOnAfterReleaseConnection write fOnAfterReleaseConnection; + property OnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent read fOnAcquireConnectionFailure write fOnAcquireConnectionFailure; + + property OnBeforeProcessDeltas : TDAProcessDeltasEvent read fOnBeforeProcessDeltas write fOnBeforeProcessDeltas; + property OnAfterProcessDeltas: TDAProcessDeltasEvent read fOnAfterProcessDeltas write fOnAfterProcessDeltas; + property OnProcessDeltasError: TDAProcessDeltasErrorEvent read fOnProcessDeltasError write fOnProcessDeltasError; + + property OnBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent read fOnBeforeGetDatasetSchema write fOnBeforeGetDatasetSchema; + property OnBeforeGetDatasetData: TDAGetDatasetDataEvent read fOnBeforeGetDatasetData write fOnBeforeGetDatasetData; + property OnAfterGetDatasetSchema: TDAGetDatasetSchemaEvent read fOnAfterGetDatasetSchema write fOnAfterGetDatasetSchema; + property OnAfterGetDatasetData: TDAGetDatasetDataEvent read fOnAfterGetDatasetData write fOnAfterGetDatasetData; + property OnBusinessProcessorAutoCreated: TDAOnBusinessProcessorAutoCreated read fOnBusinessProcessorAutoCreated write fOnBusinessProcessorAutoCreated; + property OnBeforeExecuteCommand: TDABeforeExecuteCommandEvent read fOnBeforeExecuteCommand write fOnBeforeExecuteCommand; + property OnAfterExecuteCommand: TDAAfterExecuteCommandEvent read fOnAfterExecuteCommand write fOnAfterExecuteCommand; + property OnGetSchemaAsXMLEvent: TDAGetSchemaAsXMLEvent read fOnGetSchemaAsXML write fOnGetSchemaAsXML; + property GetDatasetDataValidation: TDAGetDatasetDataValidationEvent read fGetDatasetDataValidation write fGetDatasetDataValidation; + + property OnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataBeginTransaction write fOnUpdateDataBeginTransaction; + property OnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataCommitTransaction write fOnUpdateDataCommitTransaction; + property OnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataRollBackTransaction write fOnUpdateDataRollBackTransaction; + + property ExportedDataTables : TDADataTableReferenceCollection read fExportedDataTables write SetExportedDataTables; + property Cache : TDACache read fCache write SetCache; + property CacheElements : TDACacheElementCollection read fCacheElements write SetCacheElements; + property OnGetCachedDataset : TDAOnGetCachedDataset read fOnGetCachedDataset write fOnGetCachedDataset; + + property Options : TDARemoteServiceOptions read fOptions write fOptions; + end deprecated; + +implementation + +uses + Contnrs, Variants, TypInfo, + uROClient, + uDARes, uDAExceptions; + +{ TDARemoteService } + +constructor TDARemoteService.Create(aOwner: TComponent); +begin + fExportedDataTables := TDADataTableReferenceCollection.Create(Self); + fCacheElements := TDACacheElementCollection.Create(); + fOptions := [rsoProcessDeltasWithoutUpdateRules]; + fAllowWhereSQL := true; + + inherited; + + fAutoCreateBusinessProcessors := TRUE; +end; + +destructor TDARemoteService.Destroy; +begin + ServiceSchema := nil; + ServiceAdapter := nil; + Cache := nil; + inherited; + + FreeAndNIL(fExportedDataTables); + FreeAndNIL(fCacheElements); +end; + +procedure TDARemoteService.DoOnActivate(aClientID: TGUID; const aMessage: IROMessage); +var + connname: string; +begin + inherited; + + if (csDesigning in ComponentState) then Exit; + + if AcquireConnection then try + // Acquires a DA connection automatically + if (fServiceSchema = nil) or (fServiceSchema.ConnectionManager = nil) then RaiseError(err_DARDMInvalidSchema); + + connname := fConnectionName; + if Assigned(fOnBeforeAcquireConnection) then fOnBeforeAcquireConnection(Self, connname); + + fConnection := ServiceSchema.ConnectionManager.NewConnection(connname); + if Supports(fConnection, IDAHETConnection) then + raise Exception.Create(err_HETConnectionNotSupportedInV3); + + if Assigned(fOnAfterAcquireConnection) then fOnAfterAcquireConnection(Self, connname, fConnection); + except + on E: Exception do begin + if Assigned(fOnAcquireConnectionFailure) then fOnAcquireConnectionFailure(Self, connname, E); + raise; + end; + end; +end; + +procedure TDARemoteService.DoOnDeactivate(aClientID: TGUID); +var connname : string; +begin + inherited; + + if (csDesigning in ComponentState) then Exit; + + if assigned(fConnection) then begin + connname := fConnection.Name; + + if Assigned(fOnBeforeReleaseConnection) + then fOnBeforeReleaseConnection(Self, connname, fConnection); + + fConnection := nil; + + if Assigned(fOnAfterReleaseConnection) + then fOnAfterReleaseConnection(Self, connname); + end; +end; + +procedure TDARemoteService.Loaded; +begin + inherited; + + AcquireConnection := fStreamedAcquireConnection; +end; + +procedure TDARemoteService.Assign(Source: TPersistent); +var + lSource: TDARemoteService; +begin + inherited; + if Source is TDARemoteService then begin + lSource := TDARemoteService(Source); + + AcquireConnection := lSource.AcquireConnection; + AllowExecuteSQLCommand := lSource.AllowExecuteSQLCommand; + AllowWhereSQL := lSource.AllowWhereSQL; + AutoCreateBusinessProcessors := lSource.AutoCreateBusinessProcessors; + Cache := lSource.Cache; + CacheElements := lSource.CacheElements; + ConnectionName := lSource.ConnectionName; + ExportedDataTables := lSource.ExportedDataTables; + GetDatasetDataValidation := lSource.GetDatasetDataValidation; + OnAcquireConnectionFailure := lSource.OnAcquireConnectionFailure; + OnAfterAcquireConnection := lSource.OnAfterAcquireConnection; + OnAfterExecuteCommand := lSource.OnAfterExecuteCommand; + OnAfterGetDatasetData := lSource.OnAfterGetDatasetData; + OnAfterGetDatasetSchema := lSource.OnAfterGetDatasetSchema; + OnAfterProcessDeltas := lSource.OnAfterProcessDeltas; + OnAfterProcessTransactionAction := lSource.OnAfterProcessTransactionAction; + OnAfterReleaseConnection := lSource.OnAfterReleaseConnection; + OnBeforeAcquireConnection := lSource.OnBeforeAcquireConnection; + OnBeforeExecuteCommand := lSource.OnBeforeExecuteCommand; + OnBeforeGetDatasetData := lSource.OnBeforeGetDatasetData; + OnBeforeGetDatasetSchema := lSource.OnBeforeGetDatasetSchema; + OnBeforeProcessDeltas := lSource.OnBeforeProcessDeltas; + OnBeforeReleaseConnection := lSource.OnBeforeReleaseConnection; + OnBusinessProcessorAutoCreated := lSource.OnBusinessProcessorAutoCreated; + OnGetCachedDataset := lSource.OnGetCachedDataset; + OnGetSchemaAsXMLEvent := lSource.OnGetSchemaAsXMLEvent; + OnProcessDeltasError := lSource.OnProcessDeltasError; + OnUpdateDataBeginTransaction := lSource.OnUpdateDataBeginTransaction; + OnUpdateDataCommitTransaction := lSource.OnUpdateDataCommitTransaction; + OnUpdateDataRollBackTransaction := lSource.OnUpdateDataRollBackTransaction; + Options := lSource.Options; + ServiceAdapter := lSource.ServiceAdapter; + ServiceSchema := lSource.ServiceSchema; + end; +end; + +procedure TDARemoteService.CheckObjects(const aConnection: IDAConnection; + aSchema: TDASchema; anAdapter: TDADataAdapter; + CheckConnection : boolean = TRUE; + CheckSchema : boolean = TRUE; + CheckAdapter : boolean = TRUE); +begin + if CheckConnection and not Assigned(aConnection) then RaiseError(err_DARDMConnectionIsNotAssigned); + if CheckSchema and not Assigned(aSchema) then RaiseError(err_DARDMInvalidSchema); + if CheckAdapter and not Assigned(anAdapter) then RaiseError(err_DARDMUnassignedAdapter); +end; + +procedure TDARemoteService.Notification(AComponent: TComponent; + Operation: TOperation); +var ref : TDADataTableReference; +begin + inherited; + + if (Operation = opRemove) then begin + if (aComponent = fServiceSchema) then ServiceSchema := nil + else if (AComponent=fCache) then fCache := NIL + else if (aComponent = fServiceAdapter) then ServiceAdapter := nil + else if (AComponent is TDADataTable) and (fExportedDataTables<>NIL) then begin + ref := fExportedDataTables.FindByDataTable(TDADataTable(aComponent)); + if (ref<>NIL) then ref.DataTable := NIL; + end; + end + + else if (Operation = opInsert) then begin + if not (csLoading in ComponentState) and (AComponent is TDASchema) and (fServiceSchema = nil) and (AComponent.Owner = Self) then ServiceSchema := TDASchema(aComponent); + end; +end; + +procedure TDARemoteService.SetAcquireConnection(const Value: boolean); +begin + if (csLoading in ComponentState) then + fStreamedAcquireConnection := Value + else begin + if Value then begin + if (fServiceSchema = nil) then raise Exception.Create(err_DARDMInvalidSchema); + end; + + fAcquireConnection := Value; + end; +end; + +procedure TDARemoteService.SetConnection(const aValue: IDAConnection); +begin + if assigned(fConnection) and Supports(fConnection, IDAHETConnection) then + raise Exception.Create(err_HETConnectionNotSupportedInV3); + fConnection := aValue; +end; + +procedure TDARemoteService.SetConnectionName(const Value: string); +begin + fConnectionName := Trim(Value); + if (fConnectionName = '') then fAcquireConnection := FALSE; +end; + +procedure TDARemoteService.SetServiceSchema(const Value: TDASchema); +begin + if fServiceSchema <> Value then begin + if (fServiceSchema <> nil) then fServiceSchema.RORemoveFreeNotification(Self); + fServiceSchema := Value; + + if (fServiceSchema <> nil) then + fServiceSchema.ROFreeNotification(Self) + else + fAcquireConnection := FALSE; + end; +end; + +procedure TDARemoteService.SetServiceAdapter(const Value: TDADataAdapter); +begin + if fServiceAdapter <> Value then begin + if (fServiceAdapter <> nil) then fServiceAdapter.RORemoveFreeNotification(Self); + fServiceAdapter := Value; + if (fServiceAdapter <> nil) then fServiceAdapter.ROFreeNotification(Self); + end; +end; + +function TDARemoteService.TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): Boolean; +begin + result := true; + if assigned(aEvent) then aEvent(self, result); +end; + +function TDARemoteService.DoGetDatasetData( + const Stream: TStream; + const aConnection: IDAConnection; + const aDatasetName: ansistring; + const aParamNames: array of string; + const aParamValues : array of variant; + const UserFilter : ansistring; + aSchema: TDASchema; + anAdapter: TDADataAdapter; + someOptions: TDAWriteOptions; + MaxRecords: integer): integer; + +var + ds: IDADataset; + i, cnt: integer; + paramname: string; + paramvalue: variant; + inclrows, + inclschema: boolean; + allow : boolean; + ref : TDADataTableReference; + cachedentry : IDACacheEntry; + cacheelement : TDACacheElement; + lDatasetName: string; + lUserFilter: string; +begin + // Misc + lDatasetName:= Utf8ToString(aDatasetName); + luserFilter := Utf8ToString(UserFilter); + cachedentry := NIL; + + inclschema := (woSchema in someOptions); + inclrows := (woRows in someOptions); + ref := NIL; + + if (fCache<>NIL) then begin + // If the service is connected to a cache, then it searches the cache for this dataset + cachedentry := fCache.Get(Self.Name+'.'+lDatasetName); + end; + + if (cachedentry=NIL) then begin + // New: searches for a datatable reference that matches the request, if any are present + // This allows the user to return in memory datasets or other custom data + if (fExportedDataTables.Count>0) then begin + ref := fExportedDataTables.FindByName(lDatasetName); // Already checks the datatable is not NIL + if (ref<>NIL) then begin + ds := ref.Dataset; + end; + end; + end; + + // Checks for connection, schema and adapter to be assigned since it will need to query the DB in this case + if (ref=NIL) and (cachedentry=NIL) + then CheckObjects(aConnection, aSchema, anAdapter); + + // Security check, common to every case + allow := TRUE; + if Assigned(fGetDatasetDataValidation) + then fGetDatasetDataValidation(Self, aConnection, lDatasetName, aParamNames, aParamValues, aSchema, allow); + + if not allow + then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [aDatasetName]); + + // Returns the actual data. Cached and non-cached data follow two different paths (some events are not triggered in the + // case of cached data, since we don't have an actual IDADataset to reference) + + if (cachedentry<>NIL) then begin + if Assigned(fOnGetCachedDataset) then fOnGetCachedDataset(Self, lDatasetName, cachedentry.Data); + + result := cachedentry.RecordCount; + Stream.CopyFrom(cachedentry.Data, 0); + end + else begin + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + + // Gets a reference to the dataset if it couldn't find a datatable to match the request... + if (ref=NIL) then + ds := aSchema.NewDataset(aConnection, lDatasetName); + + // Fills the parameters (if any are specified) + cnt := Length(aParamNames); + if (cnt>0) then begin + for i := 0 to (cnt-1) do begin + paramname := aParamNames[i]; + paramvalue := aParamValues[i]; + + ds.ParamByName(paramname).Value := paramvalue; + end; + end; + + // Applies the UserFilter, if any specified + if (Trim(lUserFilter)<>'') then begin + if not AllowWhereSQL then + raise Exception.Create('Passing of clear text WHERE clauses has been disabled (GetData)'); + ds.Where.AddText(lUserFilter); + end; + + // ...and writes the data fireing the right events + if inclschema and Assigned(fOnBeforeGetDatasetSchema) then fOnBeforeGetDatasetSchema(ds); + if inclrows and Assigned(fOnBeforeGetDatasetData) then fOnBeforeGetDatasetData(ds, inclschema, MaxRecords); + + result := anAdapter.WriteDataset(stream, ds, someOptions, MaxRecords); + + if inclschema and Assigned(fOnAfterGetDatasetSchema) then fOnAfterGetDatasetSchema(ds); + if inclrows and Assigned(fOnAfterGetDatasetData) then fOnAfterGetDatasetData(ds, inclschema, MaxRecords); + + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + // Checks if it needs to stored it in the cache + if (fCache<>NIL) then begin + cacheelement := fCacheElements.FindByDatasetName(lDatasetName); + if (cacheelement=NIL) or not cacheelement.Enabled then Exit; + + fCache.Store(Self.Name+'.'+lDatasetName, stream, TRUE, result, cacheelement.MaxReads, cacheelement.Duration); + end; + + end; +end; + +function TDARemoteService.GetDatasetSchema( + const aDatasetName: AnsiString): Binary; +var tempds : IDADataset; + schemads : TDADataset; + dummyrefs : TObjectList; + lDatasetName: string; +begin + dummyrefs := NIL; + + CheckObjects(Connection, ServiceSchema, ServiceAdapter); + + result := Binary.Create; + try + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create; + MergeDatatablesToSchema(dummyrefs); + end; + + lDatasetName := Utf8ToString(aDatasetName); + // Improved this method: now it is not necessary to have statements associated to a dataset + // thus allowing for the definition of in memory datasets inside a schema + schemads := ServiceSchema.Datasets.DatasetByName(lDatasetName); + tempds := Connection.NewDataset('', lDatasetName); + + // Copies the schema + tempds.Fields.AssignFieldCollection(schemads.Fields); + tempds.Params.AssignParamCollection(schemads.Params); + + ServiceAdapter.WriteDataset(result, tempds, [woSchema], 0); + except + FreeAndNIL(result); + raise; + end; + finally + dummyrefs.Free; + end; +end; + +type + TBizProcessorReference = class(TObject) + private + end; + +function TDARemoteService.UnpackDeltas(const DeltaStream: Binary; + DeltaStructList : TDADeltaStructList): integer; +var x, i: integer; + deltaname: string; + bizproc: TDABusinessProcessor; + details : TDADatasetRelationshipList; + found: boolean; + struct : TDADeltaStruct; +begin + result := 0; + with ServiceAdapter do begin + + // Reads the deltas. + Initialize(DeltaStream, aiReadFromBeginning); + try + if (DeltaCount = 0) then Exit; + + for i := 0 to (DeltaCount - 1) do begin + deltaname := DeltaNames[i]; + found := FALSE; + + { Tries to locate a user-defined business processor } + for x := 0 to (Self.ComponentCount - 1) do + if (Self.Components[x] is TDABusinessProcessor) then begin + bizproc := TDABusinessProcessor(Self.Components[x]); + if SameText(bizproc.ReferencedDataset, deltaname) then begin + struct := DeltaStructList.Add(NewDelta(deltaname), bizproc); + ReadDelta(deltaname, struct.Delta); + + found := TRUE; + Break; + end; + end; + + { Either creates one or aborts raising an exception } + if not found then begin + if not AutoCreateBusinessProcessors then RaiseError(err_DARDMCannotFindProxessorForDelta, [deltaname]); + + bizproc := TDABusinessProcessor.Create(Self); + bizproc.ReferencedDataset := deltaname; + bizproc.Schema := ServiceSchema; + + struct := DeltaStructList.Add(NewDelta(deltaname), bizproc); + ReadDelta(deltaname, struct.Delta); + + if Assigned(fOnBusinessProcessorAutoCreated) + then fOnBusinessProcessorAutoCreated(Self, bizproc); + end; + + Inc(result); + end; + + if (result=0) then Exit; // Cannot process anything! + + { Sets the master/detail relationships } + with ServiceSchema do + if (RelationShips.Count>0) then begin + details := TDADatasetRelationshipList.Create; + try + + for i := 0 to DeltaStructList.Count-1 do begin + RelationShips.GetDetails(DeltaStructList[i].BusinessProcessor.ReferencedDataset, details); + if (details.Count=0) then Continue; + + { Prepares an array with the references to the detail deltas that will be used later on to adjust + autoincs, etc. } + for x := 0 to details.Count-1 do begin + struct := DeltaStructList.FindStruct(details[x].DetailDatasetName); + if (struct<>NIL) then begin + DeltaStructList[i].DetailDeltas.Add(struct.Delta); + DeltaStructList[i].RelationShips.Add(details[x]); + end; + end; + end; + finally + details.Free; + end; + + end; + finally + Finalize; + end; + end; +end; + +function TDARemoteService.UpdateData(const Delta: Binary): Binary; +var + deltastructs : TDADeltaStructList; + struct : TDADeltaStruct; + k, i: integer; + doraise : boolean; + processeddeltas : TStringList; + + function ProceedDefaultTransactionLogic(aEvent: TDAUpdateDataTransactionEvent): Boolean; + begin + Result := True; + if Assigned(aEvent) + then aEvent(Self, Result); + end; + + procedure FlushCache(const aDatasetName : string); + var element : TDACacheElement; + begin + if (fCache=NIL) or (fCacheElements.Count=0) then Exit; + + element := fCacheElements.FindByDatasetName(aDatasetName); + if (element=NIL) then Exit; + + if (ceoFlushOnUpdate in element.Options) + then fCache.Flush(Self.Name+'.'+aDatasetName); + end; + +begin + result := NIL; + processeddeltas := NIL; + + CheckObjects(Connection, ServiceSchema, ServiceAdapter); + + deltastructs := TDADeltaStructList.Create; + + with ServiceAdapter do try + try + // Reads the deltas. The order in which the are put in the stream indicates + // the order in which updates are being made + if not (UnpackDeltas(Delta, deltastructs)>0) then Exit; + + // Applies the updates + if ProceedDefaultTransactionLogic(fOnUpdateDataBeginTransaction) + then Connection.BeginTransaction; + + if Assigned(fOnBeforeProcessDeltas) then fOnBeforeProcessDeltas(Self, deltastructs); + + if (ServiceSchema.UpdateRules.Count=0) and (rsoProcessDeltasWithoutUpdateRules in Options) then begin + // Processes them in order, from first to last delta sent + for i := 0 to deltastructs.Count-1 do begin + // Flushes the cache for the given dataset + FlushCache(deltastructs[i].Delta.LogicalName); + + deltastructs[i].BusinessProcessor.ProcessDelta(Connection, deltastructs[i].Delta, AllChanges); + end; + end + else try + processeddeltas := TStringList.Create; + + for i := 0 to (ServiceSchema.UpdateRules.Count-1) do begin + // Processes them in the order defined in the schema + struct := deltastructs.FindStruct(ServiceSchema.UpdateRules[i].DatasetName); + if (struct<>NIL) then begin + // Adds the dataset name to the list of processed deltas. Those that don't have update rules will be processed later + processeddeltas.Add(struct.Delta.LogicalName); + + // Flushes the cache for the given dataset + FlushCache(struct.Delta.LogicalName); + + // Processes the delta + struct.BusinessProcessor.ProcessDelta(Connection, struct.Delta, ServiceSchema.UpdateRules[i].ChangeTypes); + + + if (ctInsert in ServiceSchema.UpdateRules[i].ChangeTypes) then begin + for k := 0 to (struct.DetailDeltas.Count-1) do + struct.BusinessProcessor.SynchronizeAutoIncs(struct.Delta, struct.DetailDeltas[k], struct.RelationShips[k]); + end; + end; + end; + + // Processes the deltas for which update rules were not defined + if (rsoProcessDeltasWithoutUpdateRules in Options) then begin + for i := 0 to deltastructs.Count-1 do begin + // Skips if already processed + if (processeddeltas.IndexOf(deltastructs[i].Delta.LogicalName)>=0) then Continue; + + // Flushes the cache for the given dataset + FlushCache(deltastructs[i].Delta.LogicalName); + + deltastructs[i].BusinessProcessor.ProcessDelta(Connection, deltastructs[i].Delta, AllChanges); + end; + end; + + finally + processeddeltas.Free; + end; + + if Assigned(fOnAfterProcessDeltas) then fOnAfterProcessDeltas(Self, deltastructs); + + if Connection.InTransaction and ProceedDefaultTransactionLogic(fOnUpdateDataCommitTransaction) + then Connection.CommitTransaction; + + // Prepares the response + result := Binary.Create; + ServiceAdapter.Initialize(result, aiWrite); + try + for i := 0 to deltastructs.Count-1 do + WriteDelta(deltastructs[i].Delta); + finally + ServiceAdapter.Finalize; + end; + + except + on E:Exception do begin + doraise := TRUE; + try + if Assigned(fOnProcessDeltasError) + then fOnProcessDeltasError(Self, deltastructs, E, doraise); + finally + if Connection.InTransaction and ProceedDefaultTransactionLogic(fOnUpdateDataRollBackTransaction) + then Connection.RollbackTransaction; + end; + if doraise then raise; + end; + end; + finally + deltastructs.Free; + end; +end; + +function TDARemoteService.ExecuteSQLCommand(const SQL: AnsiString): Integer; +begin + if not AllowExecuteSQLCommand then + RaiseError(err_ExecuteSQLCommandNotAllowed); + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + result := Connection.NewCommand(Utf8ToString(SQL), stSQL).Execute; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; + const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +var + parnames: array of string; + parvalues: array of Variant; + options: TDAWriteOptions; + pars: TStringList; + i : integer; +begin + pars := TStringList.Create; + result := Binary.Create; + try + try + pars.Text := Utf8ToString(Params); + SetLength(parnames, pars.Count); + SetLength(parvalues, pars.Count); + for i := 0 to (pars.Count-1) do begin + parnames[i] := pars.Names[i]; + parvalues[i] := pars.Values[pars.Names[i]]; + end; + + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + + DoGetDatasetData(result, Connection, DatasetName, parnames, parvalues, '', ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; + finally + pars.Free; + end; +end; + +function TDARemoteService.CreateParamString( + const ParamNames: array of string; + const ParamValues: array of Variant): string; +var + i: integer; +begin + result := ''; + + for i := 0 to High(ParamNames) do + result := result + ParamNames[i] + '=' + VarToStr(ParamValues[i]) + #13; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: ansistring; + const ParamNames: array of string; const ParamValues: array of Variant; + const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +var + options: TDAWriteOptions; +begin + {result := GetDatasetData(DatasetName, CreateParamString(ParamNames, ParamValues), IncludeSchema, MaxRecords);} + result := Binary.Create; + try + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + DoGetDatasetData(result, Connection, DatasetName, ParamNames, ParamValues, '', ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; +end; + +function TDARemoteService.GetDatasetData(const DatasetName: ansistring; + const IncludeSchema: Boolean = FALSE; + const MaxRecords: Integer = -1): Binary; +begin + result := GetDatasetData(DatasetName, '', IncludeSchema, MaxRecords); +end; + +procedure TDARemoteService.MergeDatatablesToSchema(aList : TList); +var i : integer; + ref : TDADataset; + dt : IDADataset; +begin + if (fExportedDataTables.Count>0) then begin + for i := 0 to fExportedDataTables.Count-1 do + if fExportedDataTables[i].IsValidReference {and fExportedDataTables[i].ExportAsPartOfSchema} then begin + dt := fExportedDataTables[i].Dataset; + + ref := ServiceSchema.Datasets.Add; + ref.Name := dt.LogicalName; + ref.Fields.AssignFieldCollection(dt.Fields); + ref.Params.AssignParamCollection(dt.Params); + + aList.Add(ref); + end; + end; +end; + +function TDARemoteService.GetSchemaAsXML: AnsiString; +var xml : TStringStream; + dummyrefs : TObjectList; +begin + result := ''; + dummyrefs := NIL; + + if not Assigned(ServiceSchema) then Exit; + + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create; + MergeDatatablesToSchema(dummyrefs); + end; + + // Returns the schema + xml := TStringStream.Create(''); + try + ServiceSchema.SaveToStream(xml); + + result := UTF8Encode(xml.DataString); + + if Assigned(fOnGetSchemaAsXML) + then fOnGetSchemaAsXML(Self, result); + finally + xml.Free; + end; + + finally + dummyrefs.Free; // automatically removes the datatables from the schema again + end; +end; + +function TDARemoteService.GetDatasetDataEx(const DatasetName: AnsiString; + const Params: TDADatasetParamArray; + const UserFilter: AnsiString; + const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; +var parnames : array of string; + parvalues : array of variant; + i : integer; + options : TDAWriteOptions; +begin + result := Binary.Create; + try + { Prepares the parameter arrays} + if (Params<>NIL) then begin + SetLength(parnames, Params.Count); + SetLength(parvalues, Params.Count); + for i := 0 to (Params.Count-1) do begin + parnames[i] := Utf8ToString(Params[i].Name); + parvalues[i] := Params[i].Value; + end; + end + else begin + SetLength(parnames, 0); + SetLength(parvalues, 0); + end; + + { Other options } + if IncludeSchema + then options := [woSchema, woRows] + else options := [woRows]; + + { Reads the data } + DoGetDatasetData(result, Connection, DatasetName, parnames, parvalues, UserFilter, ServiceSchema, ServiceAdapter, options, MaxRecords); + except + FreeAndNIL(result); + raise; + end; +end; + +function TDARemoteService.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): TROBinaryMemoryStream; +var i : integer; + ds : IDADataset; + parnames : array of string; + parvalues : array of variant; + x : integer; + opt : TDAWriteOptions; + allow : boolean; + lDatasetName: string; +begin + result := NIL; + if (DatasetRequestInfoArray=NIL) or (DatasetRequestInfoArray.Count=0) then exit; + result := Binary.Create; + try + ServiceAdapter.Initialize(result, aiWrite); + try + + for i := 0 to (DatasetRequestInfoArray.Count-1) do begin + with DatasetRequestInfoArray[i] do begin + SetLength(parnames, Params.Count); + SetLength(parvalues, Params.Count); + for x := 0 to (Params.Count-1) do begin + parnames[x] := Utf8ToString(Params[x].Name); + parvalues[x] := Params[x].Value; + end; + lDatasetName := Utf8ToString(DatasetName); + opt := [woRows]; + if DatasetRequestInfoArray[i].IncludeSchema then opt := opt+[woSchema]; + + // Security check + allow := TRUE; + if Assigned(fGetDatasetDataValidation) + then fGetDatasetDataValidation(Self, Connection, lDatasetName, parnames, parvalues, ServiceSchema, allow); + + if not allow + then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [lDatasetName]); + + // Proceeds + ds := ServiceSchema.NewDataset(Connection, lDatasetName, parnames, parvalues, TRUE); + + ServiceAdapter.WriteDataset(ds, opt, MaxRecords); + end; + end; + finally + ServiceAdapter.Finalize(); + end; + except + FreeAndNIL(result); + raise + end; +end; + +function TDARemoteService.GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; +var names : TStringList; + i : integer; + ds : TDADataset; +begin + result := ''; + names := TStringList.Create; + try + CheckObjects(NIL, fServiceSchema, NIL, FALSE, TRUE, FALSE); + names.CommaText := Utf8ToString(DatasetNames); + + result := ''; + + for i := 0 to (names.Count-1) do begin + ds := fServiceSchema.Datasets.DatasetByName(names[i]); + + result := result+ {$IFDEF UNICODE}UTF8Encode{$ENDIF}( + Format('<%s Language="%s">', [ + names[i], + GetEnumName(TypeInfo(TROSEScriptLanguage), Ord(ds.BusinessRulesClient.ScriptLanguage)), + {$IFNDEF UNICODE}UTF8Encode{$ENDIF}(ds.BusinessRulesClient.Script), + names[i]])); + end; + + result := result+AnsiString(''); + finally + FreeAndNIL(names); + end; +end; + +function TDARemoteService.ExecuteSQLCommandEx(const CommandName: AnsiString; + const Params: TDADatasetParamArray): Integer; +var cmd : IDASQLCommand; + i : integer; +begin + if not AllowExecuteSQLCommand then + RaiseError(err_ExecuteSQLCommandNotAllowed); + + CheckObjects(Connection, ServiceSchema, NIL, TRUE, TRUE, FALSE); + + cmd := ServiceSchema.NewCommand(Connection, Utf8ToString(CommandName)); + for i := 0 to (Params.Count-1) do + cmd.ParamByName(Utf8ToString(Params[i].Name)).Value := Params[i].Value; + + if Assigned(fOnBeforeExecuteCommand) + then fOnBeforeExecuteCommand(Self, cmd); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then Connection.BeginTransaction; + try + result := cmd.Execute; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + if Assigned(fOnAfterExecuteCommand) + then fOnAfterExecuteCommand(Self, cmd, result); +end; + +procedure TDARemoteService.SetExportedDataTables(const Value: TDADataTableReferenceCollection); +begin + fExportedDataTables.Assign(Value); +end; + +procedure TDARemoteService.SetCache(const Value: TDACache); +begin + if fCache <> Value then begin + if (fCache<>NIL) then fCache.RemoveFreeNotification(Self); + fCache := Value; + if (fCache<>NIL) then fCache.FreeNotification(Self); + end; +end; + +procedure TDARemoteService.SetCacheElements( + const Value: TDACacheElementCollection); +begin + fCacheElements.Assign(Value); +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql new file mode 100644 index 0000000..54f5e49 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Create Session Table.sql @@ -0,0 +1,15 @@ +CREATE TABLE [dbo].[Sessions] ( + [SessionID] [char] (38) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , + [Created] [datetime] NULL , + [LastAccessed] [datetime] NULL , + [Data] [image] NULL +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [dbo].[Sessions] WITH NOCHECK ADD + CONSTRAINT [PK_Sessions] PRIMARY KEY CLUSTERED + ( + [SessionID] + ) ON [PRIMARY] +GO + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections new file mode 100644 index 0000000..625165d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daConnections @@ -0,0 +1 @@ +ADO?AuxDriver=SQLOLEDB.1;Server=localhost;Database=Northwind;UserID=sa;Password=;TrueMSSQL010pbWaitTrue6001 diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema new file mode 100644 index 0000000..32f7e13 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DBSessionManager Default Schema.daSchema @@ -0,0 +1,30 @@ + +Insert_SessiondabtUnknowndatStringSessionIDdaptInput38dabtUnknowndatDateTimeCreateddaptInput0dabtUnknowndatDateTimeLastAccesseddaptInput0dabtUnknowndatBlobDatadaptInput0MSSQLINSERT + INTO Sessions + (SessionID, Created, LastAccessed, Data) + VALUES + (:SessionID, :Created, :LastAccessed, :Data)stSQLUpdate_SessiondabtUnknowndatDateTimeLastAccesseddaptInput0dabtUnknowndatBlobDatadaptInput0dabtUnknowndatStringSessionIDdaptInput38MSSQLUPDATE + Sessions + SET + LastAccessed = :LastAccessed, + Data = :Data + WHERE + SessionID = :SessionID +stSQLClearSessionsdabtUnknowndatDateTimeLastAccesseddaptInput0MSSQLDELETE + FROM + Sessions + WHERE + LastAccessed < :LastAccessedstSQLDelete_SessiondabtUnknowndatStringSessionIDdaptInput38MSSQLDELETE + FROM + Sessions + WHERE + SessionID = :SessionIDstSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringSessionID0FalseTrueFalseFalseSessionIDFalseFalseFalse38TrueGetAllSessionIDsDatasetSessionIDSessionIDMSSQLSelect SessionID from Sessions +stSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatIntegerCOLUMN10FalseTrueFalseFalseCOLUMN1FalseFalseFalse0TrueGetSessionCountCOLUMN1COLUMN1MSSQLSELECT + COUNT(*) + FROM + SessionsstSQLTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringSessionID0TrueTrueFalseFalseSessionIDFalseFalseFalse38TruetaLeftJustifydabtUnknownFalsedatDateTimeCreated0FalseTrueFalseFalseCreatedFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeLastAccessed0FalseTrueFalseFalseLastAccessedFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatBlobData0FalseTrueFalseFalseDataFalseFalseFalse0TrueGetSessiondabtUnknowndatStringSessionIDdaptInput38SessionIDSessionIDCreatedCreatedLastAccessedLastAccessedDataDataMSSQLSELECT + SessionID, Created, LastAccessed, Data + FROM + Sessions + WHERE + SessionID = :SessionIDstSQL0 diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract.inc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract.inc new file mode 100644 index 0000000..b54e9da --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract.inc @@ -0,0 +1,33 @@ +{$INCLUDE eDefines.inc} +{.$DEFINE STORERECID} +{$DEFINE DataAbstract5} + +{$IFDEF FPC} + {$IFNDEF RO_FPC_MODE_SET} + {$MODE DELPHI} + {$DEFINE RO_FPC_MODE_SET} + {$ENDIF} + {$DEFINE FPC_SAFECALL_BUG} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo + {$DEFINE DA_FixedWideCharSupport} // support for ftWideFixedChar + {.$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + +{$IFDEF DELPHI6UP} + {$DEFINE ftFMTBCD_Support} // support for FMTBCD +{$ENDIF} + + +{$IFDEF DELPHI10UP} + {$DEFINE DA_WideMemoSupport} // support for ftWideMemo + {$DEFINE DA_FixedWideCharSupport} // support for ftWideFixedChar +{$ENDIF} + +// always use std methods for TDataset-compatible drivers +{$DEFINE Drivers_CompatibilityMode} + +// bug in Delphi2009 with AsAnsiString +{.$DEFINE DELPHI2009_USE_AsAnsiString_for_TStringField} + +// +{$DEFINE USE_LOCALDATAADAPTER} \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3.rodl b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3.rodl new file mode 100644 index 0000000..d9d82c1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3.rodl @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Async.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Async.pas new file mode 100644 index 0000000..e823d65 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Async.pas @@ -0,0 +1,367 @@ +unit DataAbstract3_Async; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROTypes, uROClientIntf, uROAsync, + {Project:} DataAbstract3_Intf; + +type + { IDARemoteService_Async } + IDARemoteService_Async = interface(IROAsyncInterface) + ['{F8299772-C66E-4D77-A4F9-78400662810B}'] + procedure Invoke_GetDatasetSchema(const aDatasetName: AnsiString); + procedure Invoke_GetDatasetScripts(const DatasetNames: AnsiString); + procedure Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_UpdateData(const Delta: Binary); + procedure Invoke_ExecuteSQLCommand(const SQL: AnsiString); + procedure Invoke_GetSchemaAsXML; + procedure Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); + procedure Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); + function Retrieve_GetDatasetSchema: Binary; + function Retrieve_GetDatasetScripts: AnsiString; + function Retrieve_GetDatasetData: Binary; + function Retrieve_GetDatasetDataEx: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteSQLCommand: Integer; + function Retrieve_GetSchemaAsXML: AnsiString; + function Retrieve_GetMultipleDatasets: Binary; + function Retrieve_ExecuteSQLCommandEx: Integer; + end; + + { IDALoginService_Async } + IDALoginService_Async = interface(IDARemoteService_Async) + ['{5A9C9231-1C8D-4436-88E1-07AD23D7BEF3}'] + procedure Invoke_Login(const UserID: AnsiString; const Password: AnsiString); + procedure Invoke_Logout; + function Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; + end; + + { CoDARemoteService_Async } + CoDARemoteService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService_Async; + end; + + { CoDALoginService_Async } + CoDALoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService_Async; + end; + + { TDARemoteService_AsyncProxy } + TDARemoteService_AsyncProxy = class(TROAsyncProxy, IDARemoteService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetDatasetSchema(const aDatasetName: AnsiString); + procedure Invoke_GetDatasetScripts(const DatasetNames: AnsiString); + procedure Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure Invoke_UpdateData(const Delta: Binary); + procedure Invoke_ExecuteSQLCommand(const SQL: AnsiString); + procedure Invoke_GetSchemaAsXML; + procedure Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); + procedure Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); + function Retrieve_GetDatasetSchema: Binary; + function Retrieve_GetDatasetScripts: AnsiString; + function Retrieve_GetDatasetData: Binary; + function Retrieve_GetDatasetDataEx: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteSQLCommand: Integer; + function Retrieve_GetSchemaAsXML: AnsiString; + function Retrieve_GetMultipleDatasets: Binary; + function Retrieve_ExecuteSQLCommandEx: Integer; + end; + + { TDALoginService_AsyncProxy } + TDALoginService_AsyncProxy = class(TDARemoteService_AsyncProxy, IDALoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const UserID: AnsiString; const Password: AnsiString); + procedure Invoke_Logout; + function Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils; + +{ CoDARemoteService } + +class function CoDARemoteService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService_Async; +begin + result := TDARemoteService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDARemoteService_AsyncProxy } + +function TDARemoteService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DARemoteService'; +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetSchema(const aDatasetName: AnsiString); +begin + __AssertProxyNotBusy('GetDatasetSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetSchema'); + __Message.Write('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + __DispatchAsyncRequest('GetDatasetSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetSchema: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetScripts(const DatasetNames: AnsiString); +begin + __AssertProxyNotBusy('GetDatasetScripts'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + __DispatchAsyncRequest('GetDatasetScripts',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetScripts: AnsiString; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDatasetScripts'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(AnsiString), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); +begin + __AssertProxyNotBusy('GetDatasetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetData'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(AnsiString), Params, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __DispatchAsyncRequest('GetDatasetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer); +begin + __AssertProxyNotBusy('GetDatasetDataEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetDataEx'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(TDADatasetParamArray), Params, []); + __Message.Write('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __DispatchAsyncRequest('GetDatasetDataEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetDatasetDataEx: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetDatasetDataEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_UpdateData(const Delta: Binary); +begin + __AssertProxyNotBusy('UpdateData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'UpdateData'); + __Message.Write('Delta', TypeInfo(Binary), Delta, []); + __DispatchAsyncRequest('UpdateData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_UpdateData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('UpdateData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_ExecuteSQLCommand(const SQL: AnsiString); +begin + __AssertProxyNotBusy('ExecuteSQLCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommand'); + __Message.Write('SQL', TypeInfo(AnsiString), SQL, []); + __DispatchAsyncRequest('ExecuteSQLCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_ExecuteSQLCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteSQLCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetSchemaAsXML; +begin + __AssertProxyNotBusy('GetSchemaAsXML'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetSchemaAsXML'); + __DispatchAsyncRequest('GetSchemaAsXML',__Message); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetSchemaAsXML: AnsiString; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetSchemaAsXML'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(AnsiString), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray); +begin + __AssertProxyNotBusy('GetMultipleDatasets'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetMultipleDatasets'); + __Message.Write('DatasetRequestInfoArray', TypeInfo(TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + __DispatchAsyncRequest('GetMultipleDatasets',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_GetMultipleDatasets: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetMultipleDatasets'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDARemoteService_AsyncProxy.Invoke_ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray); +begin + __AssertProxyNotBusy('ExecuteSQLCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommandEx'); + __Message.Write('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Write('Params', TypeInfo(TDADatasetParamArray), Params, []); + __DispatchAsyncRequest('ExecuteSQLCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDARemoteService_AsyncProxy.Retrieve_ExecuteSQLCommandEx: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteSQLCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + + +{ CoDALoginService } + +class function CoDALoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService_Async; +begin + result := TDALoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDALoginService_AsyncProxy } + +function TDALoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DALoginService'; +end; + +procedure TDALoginService_AsyncProxy.Invoke_Login(const UserID: AnsiString; const Password: AnsiString); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Write('Password', TypeInfo(AnsiString), Password, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDALoginService_AsyncProxy.Retrieve_Login(out LoginInfo: TDALoginInfo): Boolean; +var __response:TStream; +begin + LoginInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('LoginInfo', TypeInfo(TDALoginInfo), LoginInfo, []); + + __response.Free(); +end; + +procedure TDALoginService_AsyncProxy.Invoke_Logout; +begin + __AssertProxyNotBusy('Logout'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Logout'); + __DispatchAsyncRequest('Logout',__Message, false); +end; + + +initialization +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas new file mode 100644 index 0000000..c1f4134 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Intf.pas @@ -0,0 +1,1367 @@ +unit DataAbstract3_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{2966A4BF-569C-45AA-8F34-CF1E155FD77A}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDARemoteService_IID : TGUID = '{C532E842-0AA9-4253-A9BF-AFCF22885B97}'; + IDALoginService_IID : TGUID = '{58550AA0-B64F-495A-B2F8-C981D4C39180}'; + + { Event ID's } + +type + { Forward declarations } + IDARemoteService = interface; + IDALoginService = interface; + + TDADatasetParamArray = class; + TDADatasetRequestInfoArray = class; + TDAStringArray = class; + + TDADatasetParam = class; + TDADatasetRequestInfo = class; + TDALoginInfo = class; + + + { TDADatasetParam } + TDADatasetParam = class(TROComplexType) + private + fName: AnsiString; + fValue: Variant; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:AnsiString read fName write fName; + property Value:Variant read fValue write fValue; + end; + + { TDADatasetParamCollection } + TDADatasetParamCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDADatasetParam; + procedure SetItems(aIndex: integer; const Value: TDADatasetParam); + public + constructor Create; overload; + function Add: TDADatasetParam; reintroduce; + procedure SaveToArray(anArray: TDADatasetParamArray); + procedure LoadFromArray(anArray: TDADatasetParamArray); + property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; + end; + + { TDADatasetRequestInfo } + TDADatasetRequestInfo = class(TROComplexType) + private + fDatasetName: AnsiString; + fIncludeSchema: Boolean; + fMaxRecords: Integer; + fParams: TDADatasetParamArray; + function GetParams: TDADatasetParamArray; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property DatasetName:AnsiString read fDatasetName write fDatasetName; + property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema; + property MaxRecords:Integer read fMaxRecords write fMaxRecords; + property Params:TDADatasetParamArray read GetParams write fParams; + end; + + { TDADatasetRequestInfoCollection } + TDADatasetRequestInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDADatasetRequestInfo; + procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); + public + constructor Create; overload; + function Add: TDADatasetRequestInfo; reintroduce; + procedure SaveToArray(anArray: TDADatasetRequestInfoArray); + procedure LoadFromArray(anArray: TDADatasetRequestInfoArray); + property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; + end; + + { TDALoginInfo } + TDALoginInfo = class(TROComplexType) + private + fSessionID: AnsiString; + fUserID: AnsiString; + fPrivileges: TDAStringArray; + fAttributes: TDAStringArray; + fData: Binary; + function GetPrivileges: TDAStringArray; + function GetAttributes: TDAStringArray; + function GetData: Binary; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property SessionID:AnsiString read fSessionID write fSessionID; + property UserID:AnsiString read fUserID write fUserID; + property Privileges:TDAStringArray read GetPrivileges write fPrivileges; + property Attributes:TDAStringArray read GetAttributes write fAttributes; + property Data:Binary read GetData write fData; + end; + + { TDALoginInfoCollection } + TDALoginInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TDALoginInfo; + procedure SetItems(aIndex: integer; const Value: TDALoginInfo); + public + constructor Create; overload; + function Add: TDALoginInfo; reintroduce; + property Items[Index: integer]:TDALoginInfo read GetItems write SetItems; default; + end; + + { TDADatasetParamArray } + TDADatasetParamArray_TDADatasetParam = array of TDADatasetParam; + TDADatasetParamArray = class(TROArray) + private + fCount: Integer; + fItems : TDADatasetParamArray_TDADatasetParam; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TDADatasetParam; + procedure SetItems(aIndex: integer; const Value: TDADatasetParam); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TDADatasetParam; overload; + function Add(const Value: TDADatasetParam):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; + property InnerArray: TDADatasetParamArray_TDADatasetParam read fItems; + end; + + { TDADatasetRequestInfoArray } + TDADatasetRequestInfoArray_TDADatasetRequestInfo = array of TDADatasetRequestInfo; + TDADatasetRequestInfoArray = class(TROArray) + private + fCount: Integer; + fItems : TDADatasetRequestInfoArray_TDADatasetRequestInfo; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TDADatasetRequestInfo; + procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TDADatasetRequestInfo; overload; + function Add(const Value: TDADatasetRequestInfo):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; + property InnerArray: TDADatasetRequestInfoArray_TDADatasetRequestInfo read fItems; + end; + + { TDAStringArray } + TDAStringArray_AnsiString = array of AnsiString; + TDAStringArray = class(TROArray) + private + fCount: Integer; + fItems : TDAStringArray_AnsiString; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): AnsiString; + procedure SetItems(aIndex: integer; const Value: AnsiString); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:AnsiString): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:AnsiString read GetItems write SetItems; default; + property InnerArray: TDAStringArray_AnsiString read fItems; + end; + + { IDARemoteService } + IDARemoteService = interface + ['{C532E842-0AA9-4253-A9BF-AFCF22885B97}'] + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; + function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function UpdateData(const Delta: Binary): Binary; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; + function GetSchemaAsXML: AnsiString; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + end; + + { CoDARemoteService } + CoDARemoteService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; + end; + + { TDARemoteService_Proxy } + TDARemoteService_Proxy = class(TROProxy, IDARemoteService) + protected + function __GetInterfaceName:string; override; + + function GetDatasetSchema(const aDatasetName: AnsiString): Binary; + function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; + function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; + function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; + function UpdateData(const Delta: Binary): Binary; + function ExecuteSQLCommand(const SQL: AnsiString): Integer; + function GetSchemaAsXML: AnsiString; + function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; + function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; + end; + + { IDALoginService } + IDALoginService = interface(IDARemoteService) + ['{58550AA0-B64F-495A-B2F8-C981D4C39180}'] + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + end; + + { CoDALoginService } + CoDALoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; + end; + + { TDALoginService_Proxy } + TDALoginService_Proxy = class(TDARemoteService_Proxy, IDALoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; + procedure Logout; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ TDADatasetParamArray } + +procedure TDADatasetParamArray.Assign(iSource: TPersistent); +var lSource:TDADatasetParamArray; + i:integer; +begin + if (iSource is TDADatasetParamArray) then begin + lSource := TDADatasetParamArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDADatasetParamArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TDADatasetParam); +end; + +class function TDADatasetParamArray.GetItemClass: TClass; +begin + result := TDADatasetParam; +end; + +class function TDADatasetParamArray.GetItemSize: integer; +begin + result := SizeOf(TDADatasetParam); +end; + +function TDADatasetParamArray.GetItems(aIndex: integer): TDADatasetParam; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDADatasetParamArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TDADatasetParamArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TDADatasetParamArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDADatasetParamArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TDADatasetParamArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TDADatasetParam.Create; + FCount := ElementCount; +end; + +function TDADatasetParamArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDADatasetParamArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDADatasetParamArray.Add: TDADatasetParam; +begin + result := TDADatasetParam.Create; + Add(Result); +end; + +function TDADatasetParamArray.Add(const Value:TDADatasetParam): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TDADatasetParamArray.ReadComplex(ASerializer: TObject); +var + lval: TDADatasetParam; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TDADatasetParam, lval, i); + Items[i] := lval; + end; +end; + +procedure TDADatasetParamArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TDADatasetParam, i); +end; + +{ TDADatasetRequestInfoArray } + +procedure TDADatasetRequestInfoArray.Assign(iSource: TPersistent); +var lSource:TDADatasetRequestInfoArray; + i:integer; +begin + if (iSource is TDADatasetRequestInfoArray) then begin + lSource := TDADatasetRequestInfoArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDADatasetRequestInfoArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TDADatasetRequestInfo); +end; + +class function TDADatasetRequestInfoArray.GetItemClass: TClass; +begin + result := TDADatasetRequestInfo; +end; + +class function TDADatasetRequestInfoArray.GetItemSize: integer; +begin + result := SizeOf(TDADatasetRequestInfo); +end; + +function TDADatasetRequestInfoArray.GetItems(aIndex: integer): TDADatasetRequestInfo; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDADatasetRequestInfoArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TDADatasetRequestInfoArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TDADatasetRequestInfoArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDADatasetRequestInfoArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TDADatasetRequestInfoArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TDADatasetRequestInfo.Create; + FCount := ElementCount; +end; + +function TDADatasetRequestInfoArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDADatasetRequestInfoArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDADatasetRequestInfoArray.Add: TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo.Create; + Add(Result); +end; + +function TDADatasetRequestInfoArray.Add(const Value:TDADatasetRequestInfo): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TDADatasetRequestInfoArray.ReadComplex(ASerializer: TObject); +var + lval: TDADatasetRequestInfo; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TDADatasetRequestInfo, lval, i); + Items[i] := lval; + end; +end; + +procedure TDADatasetRequestInfoArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TDADatasetRequestInfo, i); +end; + +{ TDAStringArray } + +procedure TDAStringArray.Assign(iSource: TPersistent); +var lSource:TDAStringArray; + i:integer; +begin + if (iSource is TDAStringArray) then begin + lSource := TDAStringArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TDAStringArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(AnsiString); +end; + +class function TDAStringArray.GetItemSize: integer; +begin + result := SizeOf(AnsiString); +end; + +function TDAStringArray.GetItems(aIndex: integer): AnsiString; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TDAStringArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure TDAStringArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TDAStringArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure TDAStringArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TDAStringArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TDAStringArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TDAStringArray.Add(const Value: AnsiString): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function TDAStringArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure TDAStringArray.ReadComplex(ASerializer: TObject); +var + lval: AnsiString; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure TDAStringArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ TDADatasetParam } + +procedure TDADatasetParam.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDADatasetParam; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDADatasetParam) then begin + lSource := DataAbstract3_Intf.TDADatasetParam(iSource); + Name := lSource.Name; + Value := lSource.Value; + end; +end; + +procedure TDADatasetParam.ReadComplex(ASerializer: TObject); +var + l_Name: AnsiString; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end + else begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end; +end; + +procedure TDADatasetParam.WriteComplex(ASerializer: TObject); +var + l_Name: AnsiString; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDADatasetParam); + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end + else begin + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end; +end; + +{ TDADatasetParamCollection } +constructor TDADatasetParamCollection.Create; +begin + inherited Create(TDADatasetParam); +end; + +constructor TDADatasetParamCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDADatasetParamCollection.Add: TDADatasetParam; +begin + result := TDADatasetParam(inherited Add); +end; + +function TDADatasetParamCollection.GetItems(aIndex: integer): TDADatasetParam; +begin + result := TDADatasetParam(inherited Items[aIndex]); +end; + +procedure TDADatasetParamCollection.LoadFromArray(anArray: TDADatasetParamArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TDADatasetParamCollection.SaveToArray(anArray: TDADatasetParamArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TDADatasetParam.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TDADatasetParamCollection.SetItems(aIndex: integer; const Value: TDADatasetParam); +begin + TDADatasetParam(inherited Items[aIndex]).Assign(Value); +end; + +{ TDADatasetRequestInfo } + +procedure TDADatasetRequestInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDADatasetRequestInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDADatasetRequestInfo) then begin + lSource := DataAbstract3_Intf.TDADatasetRequestInfo(iSource); + DatasetName := lSource.DatasetName; + IncludeSchema := lSource.IncludeSchema; + MaxRecords := lSource.MaxRecords; + Params.Assign(lSource.Params); + end; +end; + +function TDADatasetRequestInfo.GetParams: TDADatasetParamArray; +begin + if (fParams = nil) then fParams := TDADatasetParamArray.Create(); + result := fParams; +end; + +procedure TDADatasetRequestInfo.ReadComplex(ASerializer: TObject); +var + l_DatasetName: AnsiString; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Params: TDADatasetParamArray; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).ReadUTF8String('DatasetName', l_DatasetName); + DatasetName := l_DatasetName; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Params := Params; + TROSerializer(ASerializer).ReadArray('Params', TDADatasetParamArray, l_Params); + if Params <> l_Params then Params.Free; + Params := l_Params; + end + else begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).ReadUTF8String('DatasetName', l_DatasetName); + DatasetName := l_DatasetName; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Params := Params; + TROSerializer(ASerializer).ReadArray('Params', TDADatasetParamArray, l_Params); + if Params <> l_Params then Params.Free; + Params := l_Params; + end; +end; + +procedure TDADatasetRequestInfo.WriteComplex(ASerializer: TObject); +var + l_DatasetName: AnsiString; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Params: TDADatasetParamArray; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDADatasetRequestInfo); + l_DatasetName := DatasetName; + TROSerializer(ASerializer).WriteUTF8String('DatasetName', l_DatasetName); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Params := Params; + TROSerializer(ASerializer).WriteArray('Params', l_Params, TDADatasetParamArray); + end + else begin + l_DatasetName := DatasetName; + TROSerializer(ASerializer).WriteUTF8String('DatasetName', l_DatasetName); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Params := Params; + TROSerializer(ASerializer).WriteArray('Params', l_Params, TDADatasetParamArray); + end; +end; + +{ TDADatasetRequestInfoCollection } +constructor TDADatasetRequestInfoCollection.Create; +begin + inherited Create(TDADatasetRequestInfo); +end; + +constructor TDADatasetRequestInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDADatasetRequestInfoCollection.Add: TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo(inherited Add); +end; + +function TDADatasetRequestInfoCollection.GetItems(aIndex: integer): TDADatasetRequestInfo; +begin + result := TDADatasetRequestInfo(inherited Items[aIndex]); +end; + +procedure TDADatasetRequestInfoCollection.LoadFromArray(anArray: TDADatasetRequestInfoArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TDADatasetRequestInfoCollection.SaveToArray(anArray: TDADatasetRequestInfoArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TDADatasetRequestInfo.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TDADatasetRequestInfoCollection.SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); +begin + TDADatasetRequestInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ TDALoginInfo } + +procedure TDALoginInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract3_Intf.TDALoginInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract3_Intf.TDALoginInfo) then begin + lSource := DataAbstract3_Intf.TDALoginInfo(iSource); + SessionID := lSource.SessionID; + UserID := lSource.UserID; + Privileges.Assign(lSource.Privileges); + Attributes.Assign(lSource.Attributes); + Data.Assign(lSource.Data); + end; +end; + +function TDALoginInfo.GetPrivileges: TDAStringArray; +begin + if (fPrivileges = nil) then fPrivileges := TDAStringArray.Create(); + result := fPrivileges; +end; + +function TDALoginInfo.GetAttributes: TDAStringArray; +begin + if (fAttributes = nil) then fAttributes := TDAStringArray.Create(); + result := fAttributes; +end; + +function TDALoginInfo.GetData: Binary; +begin + if (fData = nil) then fData := Binary.Create(); + result := fData; +end; + +procedure TDALoginInfo.ReadComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_SessionID: AnsiString; + l_UserID: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', TDAStringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', TDAStringArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Data := Data; + TROSerializer(ASerializer).ReadBinary('Data', l_Data); + if Data <> l_Data then Data.Free; + Data := l_Data; + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', TDAStringArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Data := Data; + TROSerializer(ASerializer).ReadBinary('Data', l_Data); + if Data <> l_Data then Data.Free; + Data := l_Data; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', TDAStringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + end; +end; + +procedure TDALoginInfo.WriteComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_SessionID: AnsiString; + l_UserID: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TDALoginInfo); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, TDAStringArray); + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, TDAStringArray); + l_Data := Data; + TROSerializer(ASerializer).WriteBinary('Data', l_Data); + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, TDAStringArray); + l_Data := Data; + TROSerializer(ASerializer).WriteBinary('Data', l_Data); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, TDAStringArray); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + end; +end; + +{ TDALoginInfoCollection } +constructor TDALoginInfoCollection.Create; +begin + inherited Create(TDALoginInfo); +end; + +constructor TDALoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TDALoginInfoCollection.Add: TDALoginInfo; +begin + result := TDALoginInfo(inherited Add); +end; + +function TDALoginInfoCollection.GetItems(aIndex: integer): TDALoginInfo; +begin + result := TDALoginInfo(inherited Items[aIndex]); +end; + +procedure TDALoginInfoCollection.SetItems(aIndex: integer; const Value: TDALoginInfo); +begin + TDALoginInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ CoDARemoteService } + +class function CoDARemoteService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; +begin + result := TDARemoteService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDARemoteService_Proxy } + +function TDARemoteService_Proxy.__GetInterfaceName:string; +begin + result := 'DARemoteService'; +end; + +function TDARemoteService_Proxy.GetDatasetSchema(const aDatasetName: AnsiString): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetSchema'); + __Message.Write('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetData'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(AnsiString), Params, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetDatasetDataEx'); + __Message.Write('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Write('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.UpdateData(const Delta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'UpdateData'); + __Message.Write('Delta', TypeInfo(Binary), Delta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.ExecuteSQLCommand(const SQL: AnsiString): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommand'); + __Message.Write('SQL', TypeInfo(AnsiString), SQL, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetSchemaAsXML: AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetSchemaAsXML'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'GetMultipleDatasets'); + __Message.Write('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDARemoteService_Proxy.ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'ExecuteSQLCommandEx'); + __Message.Write('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoDALoginService } + +class function CoDALoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; +begin + result := TDALoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDALoginService_Proxy } + +function TDALoginService_Proxy.__GetInterfaceName:string; +begin + result := 'DALoginService'; +end; + +function TDALoginService_Proxy.Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; +begin + try + LoginInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Write('Password', TypeInfo(AnsiString), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDALoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract3', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TDADatasetParam); + RegisterROClass(TDADatasetRequestInfo); + RegisterROClass(TDALoginInfo); + RegisterROClass(TDADatasetParamArray); + RegisterROClass(TDADatasetRequestInfoArray); + RegisterROClass(TDAStringArray); + RegisterProxyClass(IDARemoteService_IID, TDARemoteService_Proxy); + RegisterProxyClass(IDALoginService_IID, TDALoginService_Proxy); + + +finalization + UnregisterROClass(TDADatasetParam); + UnregisterROClass(TDADatasetRequestInfo); + UnregisterROClass(TDALoginInfo); + UnregisterROClass(TDADatasetParamArray); + UnregisterROClass(TDADatasetRequestInfoArray); + UnregisterROClass(TDAStringArray); + UnregisterProxyClass(IDARemoteService_IID); + UnregisterProxyClass(IDALoginService_IID); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas new file mode 100644 index 0000000..9ad9018 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract3_Invk.pas @@ -0,0 +1,365 @@ +unit DataAbstract3_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} DataAbstract3_Intf; + +type + TDARemoteService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetDatasetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteSQLCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSchemaAsXML(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetMultipleDatasets(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteSQLCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TDALoginService_Invoker = class(TDARemoteService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDARemoteService_Invoker } + +constructor TDARemoteService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetSchema(const aDatasetName: AnsiString): Binary; } +var + aDatasetName: AnsiString; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aDatasetName', TypeInfo(AnsiString), aDatasetName, []); + + lResult := (__Instance as IDARemoteService).GetDatasetSchema(aDatasetName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetSchemaResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetScripts(const DatasetNames: AnsiString): AnsiString; } +var + DatasetNames: AnsiString; + lResult: AnsiString; +begin + try + __Message.Read('DatasetNames', TypeInfo(AnsiString), DatasetNames, []); + + lResult := (__Instance as IDARemoteService).GetDatasetScripts(DatasetNames); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetScriptsResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetData(const DatasetName: AnsiString; const Params: AnsiString; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; } +var + DatasetName: AnsiString; + Params: AnsiString; + IncludeSchema: Boolean; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Read('Params', TypeInfo(AnsiString), Params, []); + __Message.Read('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IDARemoteService).GetDatasetData(DatasetName, Params, IncludeSchema, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetDatasetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetDataEx(const DatasetName: AnsiString; const Params: TDADatasetParamArray; const UserFilter: AnsiString; const IncludeSchema: Boolean; + const MaxRecords: Integer): Binary; } +var + DatasetName: AnsiString; + Params: DataAbstract3_Intf.TDADatasetParamArray; + UserFilter: AnsiString; + IncludeSchema: Boolean; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Params := nil; + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(AnsiString), DatasetName, []); + __Message.Read('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + __Message.Read('UserFilter', TypeInfo(AnsiString), UserFilter, []); + __Message.Read('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IDARemoteService).GetDatasetDataEx(DatasetName, Params, UserFilter, IncludeSchema, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetDatasetDataExResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Params); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateData(const Delta: Binary): Binary; } +var + Delta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Delta := nil; + lResult := nil; + try + __Message.Read('Delta', TypeInfo(Binary), Delta, []); + + lResult := (__Instance as IDARemoteService).UpdateData(Delta); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'UpdateDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Delta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_ExecuteSQLCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteSQLCommand(const SQL: AnsiString): Integer; } +var + SQL: AnsiString; + lResult: Integer; +begin + try + __Message.Read('SQL', TypeInfo(AnsiString), SQL, []); + + lResult := (__Instance as IDARemoteService).ExecuteSQLCommand(SQL); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'ExecuteSQLCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetSchemaAsXML(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchemaAsXML: AnsiString; } +var + lResult: AnsiString; +begin + try + lResult := (__Instance as IDARemoteService).GetSchemaAsXML; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetSchemaAsXMLResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDARemoteService_Invoker.Invoke_GetMultipleDatasets(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; } +var + DatasetRequestInfoArray: DataAbstract3_Intf.TDADatasetRequestInfoArray; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + DatasetRequestInfoArray := nil; + lResult := nil; + try + __Message.Read('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); + + lResult := (__Instance as IDARemoteService).GetMultipleDatasets(DatasetRequestInfoArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'GetMultipleDatasetsResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(DatasetRequestInfoArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDARemoteService_Invoker.Invoke_ExecuteSQLCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteSQLCommandEx(const CommandName: AnsiString; const Params: TDADatasetParamArray): Integer; } +var + CommandName: AnsiString; + Params: DataAbstract3_Intf.TDADatasetParamArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + Params := nil; + try + __Message.Read('CommandName', TypeInfo(AnsiString), CommandName, []); + __Message.Read('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); + + lResult := (__Instance as IDARemoteService).ExecuteSQLCommandEx(CommandName, Params); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DARemoteService', 'ExecuteSQLCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Params); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TDALoginService_Invoker } + +constructor TDALoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDALoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserID: AnsiString; const Password: AnsiString; out LoginInfo: TDALoginInfo): Boolean; } +var + UserID: AnsiString; + Password: AnsiString; + LoginInfo: DataAbstract3_Intf.TDALoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + LoginInfo := nil; + try + __Message.Read('UserID', TypeInfo(AnsiString), UserID, []); + __Message.Read('Password', TypeInfo(AnsiString), Password, []); + + lResult := (__Instance as IDALoginService).Login(UserID, Password, LoginInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DALoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(LoginInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDALoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IDALoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract3', 'DALoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4.rodl b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4.rodl new file mode 100644 index 0000000..ed4cf28 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4.rodl @@ -0,0 +1,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas new file mode 100644 index 0000000..6475085 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Async.pas @@ -0,0 +1,670 @@ +unit DataAbstract4_Async; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROTypes, uROClientIntf, uROAsync, + {Project:} DataAbstract4_Intf; + +type + { IDataAbstractService_Async } + IDataAbstractService_Async = interface(IROAsyncInterface) + ['{B4C1D84D-1C6F-4E5A-8839-0C9F7EA5431B}'] + procedure Invoke_GetSchema(const aFilter: Utf8String); + procedure Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); + procedure Invoke_UpdateData(const aDelta: Binary); + procedure Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); + procedure Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); + procedure Invoke_GetTableSchema(const aTableNameArray: StringArray); + procedure Invoke_GetCommandSchema(const aCommandNameArray: StringArray); + procedure Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); + procedure Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); + procedure Invoke_SQLExecuteCommand(const aSQLText: Utf8String); + procedure Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); + procedure Invoke_GetDatasetScripts(const DatasetNames: Utf8String); + procedure Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); + function Retrieve_GetSchema: Utf8String; + function Retrieve_GetData: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteCommand: Integer; + function Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; + function Retrieve_GetTableSchema: Utf8String; + function Retrieve_GetCommandSchema: Utf8String; + function Retrieve_SQLGetData: Binary; + function Retrieve_SQLGetDataEx: Binary; + function Retrieve_SQLExecuteCommand: Integer; + function Retrieve_SQLExecuteCommandEx: Integer; + function Retrieve_GetDatasetScripts: Utf8String; + end; + + { IBaseLoginService_Async } + IBaseLoginService_Async = interface(IROAsyncInterface) + ['{45A761A3-80E9-43E6-86BC-E96693551453}'] + procedure Invoke_LoginEx(const aLoginString: Utf8String); + procedure Invoke_Logout; + function Retrieve_LoginEx: Boolean; + end; + + { IMultiDbLoginService_Async } + IMultiDbLoginService_Async = interface(IBaseLoginService_Async) + ['{8EBB1878-ECD9-4F4E-8A87-E26D51FD0ADD}'] + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { IMultiDbLoginServiceV5_Async } + IMultiDbLoginServiceV5_Async = interface(IMultiDbLoginService_Async) + ['{292C3E8B-B263-4D95-9EE6-41DA014ACDF3}'] + procedure Invoke_GetConnectionNames; + procedure Invoke_GetDefaultConnectionName; + function Retrieve_GetConnectionNames: StringArray; + function Retrieve_GetDefaultConnectionName: Utf8String; + end; + + { ISimpleLoginService_Async } + ISimpleLoginService_Async = interface(IBaseLoginService_Async) + ['{74BC5406-7AA7-45CD-8012-193C38DF62E9}'] + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { CoDataAbstractService_Async } + CoDataAbstractService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService_Async; + end; + + { CoBaseLoginService_Async } + CoBaseLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService_Async; + end; + + { CoMultiDbLoginService_Async } + CoMultiDbLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService_Async; + end; + + { CoMultiDbLoginServiceV5_Async } + CoMultiDbLoginServiceV5_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5_Async; + end; + + { CoSimpleLoginService_Async } + CoSimpleLoginService_Async = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService_Async; + end; + + { TDataAbstractService_AsyncProxy } + TDataAbstractService_AsyncProxy = class(TROAsyncProxy, IDataAbstractService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetSchema(const aFilter: Utf8String); + procedure Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); + procedure Invoke_UpdateData(const aDelta: Binary); + procedure Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); + procedure Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); + procedure Invoke_GetTableSchema(const aTableNameArray: StringArray); + procedure Invoke_GetCommandSchema(const aCommandNameArray: StringArray); + procedure Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); + procedure Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); + procedure Invoke_SQLExecuteCommand(const aSQLText: Utf8String); + procedure Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); + procedure Invoke_GetDatasetScripts(const DatasetNames: Utf8String); + procedure Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); + function Retrieve_GetSchema: Utf8String; + function Retrieve_GetData: Binary; + function Retrieve_UpdateData: Binary; + function Retrieve_ExecuteCommand: Integer; + function Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; + function Retrieve_GetTableSchema: Utf8String; + function Retrieve_GetCommandSchema: Utf8String; + function Retrieve_SQLGetData: Binary; + function Retrieve_SQLGetDataEx: Binary; + function Retrieve_SQLExecuteCommand: Integer; + function Retrieve_SQLExecuteCommandEx: Integer; + function Retrieve_GetDatasetScripts: Utf8String; + end; + + { TBaseLoginService_AsyncProxy } + TBaseLoginService_AsyncProxy = class(TROAsyncProxy, IBaseLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_LoginEx(const aLoginString: Utf8String); + procedure Invoke_Logout; + function Retrieve_LoginEx: Boolean; + end; + + { TMultiDbLoginService_AsyncProxy } + TMultiDbLoginService_AsyncProxy = class(TBaseLoginService_AsyncProxy, IMultiDbLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + + { TMultiDbLoginServiceV5_AsyncProxy } + TMultiDbLoginServiceV5_AsyncProxy = class(TMultiDbLoginService_AsyncProxy, IMultiDbLoginServiceV5_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_GetConnectionNames; + procedure Invoke_GetDefaultConnectionName; + function Retrieve_GetConnectionNames: StringArray; + function Retrieve_GetDefaultConnectionName: Utf8String; + end; + + { TSimpleLoginService_AsyncProxy } + TSimpleLoginService_AsyncProxy = class(TBaseLoginService_AsyncProxy, ISimpleLoginService_Async) + private + protected + function __GetInterfaceName:string; override; + + procedure Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); + function Retrieve_Login(out aUserInfo: UserInfo): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils; + +{ CoDataAbstractService } + +class function CoDataAbstractService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService_Async; +begin + result := TDataAbstractService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TDataAbstractService_AsyncProxy } + +function TDataAbstractService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'DataAbstractService'; +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetSchema(const aFilter: Utf8String); +begin + __AssertProxyNotBusy('GetSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetSchema'); + __Message.Write('aFilter', TypeInfo(Utf8String), aFilter, []); + __DispatchAsyncRequest('GetSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray); +begin + __AssertProxyNotBusy('GetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetData'); + __Message.Write('aTableNameArray', TypeInfo(StringArray), aTableNameArray, []); + __Message.Write('aTableRequestInfoArray', TypeInfo(TableRequestInfoArray), aTableRequestInfoArray, []); + __DispatchAsyncRequest('GetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_UpdateData(const aDelta: Binary); +begin + __AssertProxyNotBusy('UpdateData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UpdateData'); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __DispatchAsyncRequest('UpdateData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_UpdateData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('UpdateData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray); +begin + __AssertProxyNotBusy('ExecuteCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommand'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aParameterArray', TypeInfo(DataParameterArray), aParameterArray, []); + __DispatchAsyncRequest('ExecuteCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_ExecuteCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('ExecuteCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray); +begin + __AssertProxyNotBusy('ExecuteCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommandEx'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aInputParameters', TypeInfo(DataParameterArray), aInputParameters, []); + __DispatchAsyncRequest('ExecuteCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_ExecuteCommandEx(out aOutputParameters: DataParameterArray): Integer; +var __response:TStream; +begin + aOutputParameters := nil; + __response := __RetrieveAsyncResponse('ExecuteCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + __Message.Read('aOutputParameters', TypeInfo(DataParameterArray), aOutputParameters, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetTableSchema(const aTableNameArray: StringArray); +begin + __AssertProxyNotBusy('GetTableSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetTableSchema'); + __Message.Write('aTableNameArray', TypeInfo(StringArray), aTableNameArray, []); + __DispatchAsyncRequest('GetTableSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetTableSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetTableSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetCommandSchema(const aCommandNameArray: StringArray); +begin + __AssertProxyNotBusy('GetCommandSchema'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetCommandSchema'); + __Message.Write('aCommandNameArray', TypeInfo(StringArray), aCommandNameArray, []); + __DispatchAsyncRequest('GetCommandSchema',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetCommandSchema: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetCommandSchema'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer); +begin + __AssertProxyNotBusy('SQLGetData'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetData'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __DispatchAsyncRequest('SQLGetData',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLGetData: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('SQLGetData'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring); +begin + __AssertProxyNotBusy('SQLGetDataEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetDataEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __DispatchAsyncRequest('SQLGetDataEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLGetDataEx: Binary; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('SQLGetDataEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Binary), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLExecuteCommand(const aSQLText: Utf8String); +begin + __AssertProxyNotBusy('SQLExecuteCommand'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommand'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __DispatchAsyncRequest('SQLExecuteCommand',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLExecuteCommand: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('SQLExecuteCommand'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring); +begin + __AssertProxyNotBusy('SQLExecuteCommandEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommandEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __DispatchAsyncRequest('SQLExecuteCommandEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_SQLExecuteCommandEx: Integer; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('SQLExecuteCommandEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Integer), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_GetDatasetScripts(const DatasetNames: Utf8String); +begin + __AssertProxyNotBusy('GetDatasetScripts'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + __DispatchAsyncRequest('GetDatasetScripts',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TDataAbstractService_AsyncProxy.Retrieve_GetDatasetScripts: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDatasetScripts'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_RegisterForDataChangeNotification(const aTableName: Utf8String); +begin + __AssertProxyNotBusy('RegisterForDataChangeNotification'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'RegisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __DispatchAsyncRequest('RegisterForDataChangeNotification',__Message, false); + __Message.UnsetAttributes(__TransportChannel); +end; + +procedure TDataAbstractService_AsyncProxy.Invoke_UnregisterForDataChangeNotification(const aTableName: Utf8String); +begin + __AssertProxyNotBusy('UnregisterForDataChangeNotification'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UnregisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __DispatchAsyncRequest('UnregisterForDataChangeNotification',__Message, false); + __Message.UnsetAttributes(__TransportChannel); +end; + + +{ CoSimpleLoginService } + +class function CoSimpleLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService_Async; +begin + result := TSimpleLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TSimpleLoginService_AsyncProxy } + +function TSimpleLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'SimpleLoginService'; +end; + +procedure TSimpleLoginService_AsyncProxy.Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TSimpleLoginService_AsyncProxy.Retrieve_Login(out aUserInfo: UserInfo): Boolean; +var __response:TStream; +begin + aUserInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('aUserInfo', TypeInfo(UserInfo), aUserInfo, []); + + __response.Free(); +end; + + +{ CoBaseLoginService } + +class function CoBaseLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService_Async; +begin + result := TBaseLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TBaseLoginService_AsyncProxy } + +function TBaseLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'BaseLoginService'; +end; + +procedure TBaseLoginService_AsyncProxy.Invoke_LoginEx(const aLoginString: Utf8String); +begin + __AssertProxyNotBusy('LoginEx'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'LoginEx'); + __Message.Write('aLoginString', TypeInfo(Utf8String), aLoginString, []); + __DispatchAsyncRequest('LoginEx',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TBaseLoginService_AsyncProxy.Retrieve_LoginEx: Boolean; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('LoginEx'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + + __response.Free(); +end; + +procedure TBaseLoginService_AsyncProxy.Invoke_Logout; +begin + __AssertProxyNotBusy('Logout'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Logout'); + __DispatchAsyncRequest('Logout',__Message, false); +end; + + +{ CoMultiDbLoginService } + +class function CoMultiDbLoginService_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService_Async; +begin + result := TMultiDbLoginService_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginService_AsyncProxy } + +function TMultiDbLoginService_AsyncProxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginService'; +end; + +procedure TMultiDbLoginService_AsyncProxy.Invoke_Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String); +begin + __AssertProxyNotBusy('Login'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Write('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + __DispatchAsyncRequest('Login',__Message); + __Message.UnsetAttributes(__TransportChannel); +end; + +function TMultiDbLoginService_AsyncProxy.Retrieve_Login(out aUserInfo: UserInfo): Boolean; +var __response:TStream; +begin + aUserInfo := nil; + __response := __RetrieveAsyncResponse('Login'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Boolean), Result, []); + __Message.Read('aUserInfo', TypeInfo(UserInfo), aUserInfo, []); + + __response.Free(); +end; + + +{ CoMultiDbLoginServiceV5 } + +class function CoMultiDbLoginServiceV5_Async.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5_Async; +begin + result := TMultiDbLoginServiceV5_AsyncProxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginServiceV5_AsyncProxy } + +function TMultiDbLoginServiceV5_AsyncProxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginServiceV5'; +end; + +procedure TMultiDbLoginServiceV5_AsyncProxy.Invoke_GetConnectionNames; +begin + __AssertProxyNotBusy('GetConnectionNames'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetConnectionNames'); + __DispatchAsyncRequest('GetConnectionNames',__Message); +end; + +function TMultiDbLoginServiceV5_AsyncProxy.Retrieve_GetConnectionNames: StringArray; +var __response:TStream; +begin + result := nil; + __response := __RetrieveAsyncResponse('GetConnectionNames'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(StringArray), Result, []); + + __response.Free(); +end; + +procedure TMultiDbLoginServiceV5_AsyncProxy.Invoke_GetDefaultConnectionName; +begin + __AssertProxyNotBusy('GetDefaultConnectionName'); + + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDefaultConnectionName'); + __DispatchAsyncRequest('GetDefaultConnectionName',__Message); +end; + +function TMultiDbLoginServiceV5_AsyncProxy.Retrieve_GetDefaultConnectionName: Utf8String; +var __response:TStream; +begin + __response := __RetrieveAsyncResponse('GetDefaultConnectionName'); + __Message.ReadFromStream(__response); + + __Message.Read('Result', TypeInfo(Utf8String), Result, []); + + __response.Free(); +end; + + +initialization +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas new file mode 100644 index 0000000..00348aa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Intf.pas @@ -0,0 +1,2514 @@ +unit DataAbstract4_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{DC8B7BE2-14AF-402D-B1F8-E1008B6FA4F6}'; + TargetNamespace = ''; + + { Service Interface ID's } + IDataAbstractService_IID : TGUID = '{4C2EC238-4FB4-434E-8CFF-ED25EEFF1525}'; + ISimpleLoginService_IID : TGUID = '{B186853B-168B-4E33-B798-467444BFC8C6}'; + IBaseLoginService_IID : TGUID = '{C349DB54-9DFB-454E-AD23-6F2166A624A6}'; + IMultiDbLoginService_IID : TGUID = '{2C6D5764-01CE-447A-8264-27210B2C7371}'; + IMultiDbLoginServiceV5_IID : TGUID = '{5A78AB01-2097-4473-A4D5-78980FFD90E4}'; + + { Event ID's } + EID_DataChangeNotification = 'DataChangeNotification'; + +type + { Forward declarations } + IDataAbstractService = interface; + ISimpleLoginService = interface; + IBaseLoginService = interface; + IMultiDbLoginService = interface; + IMultiDbLoginServiceV5 = interface; + + DataParameterArray = class; + TableRequestInfoArray = class; + StringArray = class; + VariantArray = class; + ColumnSortingArray = class; + + DataParameter = class; + TableRequestInfo = class; + UserInfo = class; + TableRequestInfoV5 = class; + ColumnSorting = class; + TableRequestInfoV6 = class; + + IDataChangeNotification = interface; + + + { Enumerateds } + ColumnSortDirection = (ColumnSortDirection_Ascending,ColumnSortDirection_Descending); + + { DataParameter } + DataParameter = class(TROComplexType) + private + fName: Utf8String; + fValue: Variant; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:Utf8String read fName write fName; + property Value:Variant read fValue write fValue; + end; + + { DataParameterCollection } + DataParameterCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): DataParameter; + procedure SetItems(aIndex: integer; const Value: DataParameter); + public + constructor Create; overload; + function Add: DataParameter; reintroduce; + procedure SaveToArray(anArray: DataParameterArray); + procedure LoadFromArray(anArray: DataParameterArray); + property Items[Index: integer]:DataParameter read GetItems write SetItems; default; + end; + + { TableRequestInfo } + TableRequestInfo = class(TROComplexType) + private + fUserFilter: Utf8String; + fIncludeSchema: Boolean; + fMaxRecords: Integer; + fParameters: DataParameterArray; + function GetParameters: DataParameterArray; + public + constructor Create(aCollection : TCollection); override; + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property UserFilter:Utf8String read fUserFilter write fUserFilter; + property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema; + property MaxRecords:Integer read fMaxRecords write fMaxRecords; + property Parameters:DataParameterArray read GetParameters write fParameters; + end; + + { TableRequestInfoCollection } + TableRequestInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TableRequestInfo; + procedure SetItems(aIndex: integer; const Value: TableRequestInfo); + public + constructor Create; overload; + function Add: TableRequestInfo; reintroduce; + procedure SaveToArray(anArray: TableRequestInfoArray); + procedure LoadFromArray(anArray: TableRequestInfoArray); + property Items[Index: integer]:TableRequestInfo read GetItems write SetItems; default; + end; + + { TableRequestInfoV6 } + TableRequestInfoV6 = class(TableRequestInfo) + private + fSql: Widestring; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Sql:Widestring read fSql write fSql; + end; + + { TableRequestInfoV6Collection } + TableRequestInfoV6Collection = class(TableRequestInfoCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TableRequestInfoV6; + procedure SetItems(aIndex: integer; const Value: TableRequestInfoV6); + public + constructor Create; overload; + function Add: TableRequestInfoV6; reintroduce; + property Items[Index: integer]:TableRequestInfoV6 read GetItems write SetItems; default; + end; + + { TableRequestInfoV5 } + TableRequestInfoV5 = class(TableRequestInfo) + private + fWhereClause: IXmlNode; + fDynamicSelectFieldNames: StringArray; + fSorting: ColumnSorting; + function GetDynamicSelectFieldNames: StringArray; + function GetSorting: ColumnSorting; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property WhereClause:IXmlNode read fWhereClause write fWhereClause; + property DynamicSelectFieldNames:StringArray read GetDynamicSelectFieldNames write fDynamicSelectFieldNames; + property Sorting:ColumnSorting read GetSorting write fSorting; + end; + + { TableRequestInfoV5Collection } + TableRequestInfoV5Collection = class(TableRequestInfoCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TableRequestInfoV5; + procedure SetItems(aIndex: integer; const Value: TableRequestInfoV5); + public + constructor Create; overload; + function Add: TableRequestInfoV5; reintroduce; + property Items[Index: integer]:TableRequestInfoV5 read GetItems write SetItems; default; + end; + + { UserInfo } + UserInfo = class(TROComplexType) + private + fSessionID: Utf8String; + fUserID: Utf8String; + fPrivileges: StringArray; + fAttributes: VariantArray; + fUserData: Binary; + function GetPrivileges: StringArray; + function GetAttributes: VariantArray; + function GetUserData: Binary; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property SessionID:Utf8String read fSessionID write fSessionID; + property UserID:Utf8String read fUserID write fUserID; + property Privileges:StringArray read GetPrivileges write fPrivileges; + property Attributes:VariantArray read GetAttributes write fAttributes; + property UserData:Binary read GetUserData write fUserData; + end; + + { UserInfoCollection } + UserInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): UserInfo; + procedure SetItems(aIndex: integer; const Value: UserInfo); + public + constructor Create; overload; + function Add: UserInfo; reintroduce; + property Items[Index: integer]:UserInfo read GetItems write SetItems; default; + end; + + { ColumnSorting } + ColumnSorting = class(TROComplexType) + private + fFieldName: Utf8String; + fSortDirection: ColumnSortDirection; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property FieldName:Utf8String read fFieldName write fFieldName; + property SortDirection:ColumnSortDirection read fSortDirection write fSortDirection; + end; + + { ColumnSortingCollection } + ColumnSortingCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): ColumnSorting; + procedure SetItems(aIndex: integer; const Value: ColumnSorting); + public + constructor Create; overload; + function Add: ColumnSorting; reintroduce; + procedure SaveToArray(anArray: ColumnSortingArray); + procedure LoadFromArray(anArray: ColumnSortingArray); + property Items[Index: integer]:ColumnSorting read GetItems write SetItems; default; + end; + + { DataParameterArray } + DataParameterArray_DataParameter = array of DataParameter; + DataParameterArray = class(TROArray) + private + fCount: Integer; + fItems : DataParameterArray_DataParameter; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): DataParameter; + procedure SetItems(aIndex: integer; const Value: DataParameter); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: DataParameter; overload; + function Add(const Value: DataParameter):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:DataParameter read GetItems write SetItems; default; + property InnerArray: DataParameterArray_DataParameter read fItems; + end; + + { TableRequestInfoArray } + TableRequestInfoArray_TableRequestInfo = array of TableRequestInfo; + TableRequestInfoArray = class(TROArray) + private + fCount: Integer; + fItems : TableRequestInfoArray_TableRequestInfo; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TableRequestInfo; + procedure SetItems(aIndex: integer; const Value: TableRequestInfo); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TableRequestInfo; overload; + function Add(const Value: TableRequestInfo):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TableRequestInfo read GetItems write SetItems; default; + property InnerArray: TableRequestInfoArray_TableRequestInfo read fItems; + end; + + { StringArray } + StringArray_Utf8String = array of Utf8String; + StringArray = class(TROArray) + private + fCount: Integer; + fItems : StringArray_Utf8String; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Utf8String; + procedure SetItems(aIndex: integer; const Value: Utf8String); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Utf8String): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:Utf8String read GetItems write SetItems; default; + property InnerArray: StringArray_Utf8String read fItems; + end; + + { VariantArray } + VariantArray_Variant = array of Variant; + VariantArray = class(TROArray) + private + fCount: Integer; + fItems : VariantArray_Variant; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Variant; + procedure SetItems(aIndex: integer; const Value: Variant); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Variant): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:Variant read GetItems write SetItems; default; + property InnerArray: VariantArray_Variant read fItems; + end; + + { ColumnSortingArray } + ColumnSortingArray_ColumnSorting = array of ColumnSorting; + ColumnSortingArray = class(TROArray) + private + fCount: Integer; + fItems : ColumnSortingArray_ColumnSorting; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): ColumnSorting; + procedure SetItems(aIndex: integer; const Value: ColumnSorting); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: ColumnSorting; overload; + function Add(const Value: ColumnSorting):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:ColumnSorting read GetItems write SetItems; default; + property InnerArray: ColumnSortingArray_ColumnSorting read fItems; + end; + + { IDataAbstractService } + IDataAbstractService = interface + ['{4C2EC238-4FB4-434E-8CFF-ED25EEFF1525}'] + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + end; + + { CoDataAbstractService } + CoDataAbstractService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService; + end; + + { TDataAbstractService_Proxy } + TDataAbstractService_Proxy = class(TROProxy, IDataAbstractService) + protected + function __GetInterfaceName:string; override; + + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + end; + + { IBaseLoginService } + IBaseLoginService = interface + ['{C349DB54-9DFB-454E-AD23-6F2166A624A6}'] + function LoginEx(const aLoginString: Utf8String): Boolean; + procedure Logout; + end; + + { CoBaseLoginService } + CoBaseLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService; + end; + + { TBaseLoginService_Proxy } + TBaseLoginService_Proxy = class(TROProxy, IBaseLoginService) + protected + function __GetInterfaceName:string; override; + + function LoginEx(const aLoginString: Utf8String): Boolean; + procedure Logout; + end; + + { IMultiDbLoginService } + IMultiDbLoginService = interface(IBaseLoginService) + ['{2C6D5764-01CE-447A-8264-27210B2C7371}'] + function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { CoMultiDbLoginService } + CoMultiDbLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService; + end; + + { TMultiDbLoginService_Proxy } + TMultiDbLoginService_Proxy = class(TBaseLoginService_Proxy, IMultiDbLoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { IMultiDbLoginServiceV5 } + IMultiDbLoginServiceV5 = interface(IMultiDbLoginService) + ['{5A78AB01-2097-4473-A4D5-78980FFD90E4}'] + function GetConnectionNames: StringArray; + function GetDefaultConnectionName: Utf8String; + end; + + { CoMultiDbLoginServiceV5 } + CoMultiDbLoginServiceV5 = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5; + end; + + { TMultiDbLoginServiceV5_Proxy } + TMultiDbLoginServiceV5_Proxy = class(TMultiDbLoginService_Proxy, IMultiDbLoginServiceV5) + protected + function __GetInterfaceName:string; override; + + function GetConnectionNames: StringArray; + function GetDefaultConnectionName: Utf8String; + end; + + { ISimpleLoginService } + ISimpleLoginService = interface(IBaseLoginService) + ['{B186853B-168B-4E33-B798-467444BFC8C6}'] + function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { CoSimpleLoginService } + CoSimpleLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService; + end; + + { TSimpleLoginService_Proxy } + TSimpleLoginService_Proxy = class(TBaseLoginService_Proxy, ISimpleLoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; + end; + + { IDataChangeNotification } + IDataChangeNotification = interface + ['{1309480C-AEF8-48E0-A27F-E6090F441B46}'] + procedure OnDataTableChanged(const aTableName: Utf8String; const aDelta: Binary); + end; + + { IDataChangeNotification_Writer } + IDataChangeNotification_Writer = interface(IROEventWriter) + ['{1309480C-AEF8-48E0-A27F-E6090F441B46}'] + procedure OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ DataParameterArray } + +procedure DataParameterArray.Assign(iSource: TPersistent); +var lSource:DataParameterArray; + i:integer; +begin + if (iSource is DataParameterArray) then begin + lSource := DataParameterArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function DataParameterArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(DataParameter); +end; + +class function DataParameterArray.GetItemClass: TClass; +begin + result := DataParameter; +end; + +class function DataParameterArray.GetItemSize: integer; +begin + result := SizeOf(DataParameter); +end; + +function DataParameterArray.GetItems(aIndex: integer): DataParameter; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function DataParameterArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure DataParameterArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure DataParameterArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure DataParameterArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure DataParameterArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := DataParameter.Create; + FCount := ElementCount; +end; + +function DataParameterArray.GetCount: integer; +begin + result := FCount; +end; + +procedure DataParameterArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function DataParameterArray.Add: DataParameter; +begin + result := DataParameter.Create; + Add(Result); +end; + +function DataParameterArray.Add(const Value:DataParameter): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure DataParameterArray.ReadComplex(ASerializer: TObject); +var + lval: DataParameter; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), DataParameter, lval, i); + Items[i] := lval; + end; +end; + +procedure DataParameterArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], DataParameter, i); +end; + +{ TableRequestInfoArray } + +procedure TableRequestInfoArray.Assign(iSource: TPersistent); +var lSource:TableRequestInfoArray; + i:integer; +begin + if (iSource is TableRequestInfoArray) then begin + lSource := TableRequestInfoArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TableRequestInfoArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TableRequestInfo); +end; + +class function TableRequestInfoArray.GetItemClass: TClass; +begin + result := TableRequestInfo; +end; + +class function TableRequestInfoArray.GetItemSize: integer; +begin + result := SizeOf(TableRequestInfo); +end; + +function TableRequestInfoArray.GetItems(aIndex: integer): TableRequestInfo; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TableRequestInfoArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TableRequestInfoArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TableRequestInfoArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TableRequestInfoArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TableRequestInfoArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TableRequestInfo.Create; + FCount := ElementCount; +end; + +function TableRequestInfoArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TableRequestInfoArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TableRequestInfoArray.Add: TableRequestInfo; +begin + result := TableRequestInfo.Create; + Add(Result); +end; + +function TableRequestInfoArray.Add(const Value:TableRequestInfo): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TableRequestInfoArray.ReadComplex(ASerializer: TObject); +var + lval: TableRequestInfo; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TableRequestInfo, lval, i); + Items[i] := lval; + end; +end; + +procedure TableRequestInfoArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TableRequestInfo, i); +end; + +{ StringArray } + +procedure StringArray.Assign(iSource: TPersistent); +var lSource:StringArray; + i:integer; +begin + if (iSource is StringArray) then begin + lSource := StringArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function StringArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Utf8String); +end; + +class function StringArray.GetItemSize: integer; +begin + result := SizeOf(Utf8String); +end; + +function StringArray.GetItems(aIndex: integer): Utf8String; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function StringArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure StringArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure StringArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure StringArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function StringArray.GetCount: integer; +begin + result := FCount; +end; + +procedure StringArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function StringArray.Add(const Value: Utf8String): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function StringArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure StringArray.ReadComplex(ASerializer: TObject); +var + lval: Utf8String; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure StringArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteUTF8String(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ VariantArray } + +procedure VariantArray.Assign(iSource: TPersistent); +var lSource:VariantArray; + i:integer; +begin + if (iSource is VariantArray) then begin + lSource := VariantArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function VariantArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Variant); +end; + +class function VariantArray.GetItemSize: integer; +begin + result := SizeOf(Variant); +end; + +function VariantArray.GetItems(aIndex: integer): Variant; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function VariantArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure VariantArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure VariantArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure VariantArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function VariantArray.GetCount: integer; +begin + result := FCount; +end; + +procedure VariantArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function VariantArray.Add(const Value: Variant): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function VariantArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure VariantArray.ReadComplex(ASerializer: TObject); +var + lval: Variant; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadVariant(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure VariantArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteVariant(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ ColumnSortingArray } + +procedure ColumnSortingArray.Assign(iSource: TPersistent); +var lSource:ColumnSortingArray; + i:integer; +begin + if (iSource is ColumnSortingArray) then begin + lSource := ColumnSortingArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + if Assigned(lSource.Items[i]) then begin + Items[i].Assign(lSource.Items[i]); + end; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function ColumnSortingArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(ColumnSorting); +end; + +class function ColumnSortingArray.GetItemClass: TClass; +begin + result := ColumnSorting; +end; + +class function ColumnSortingArray.GetItemSize: integer; +begin + result := SizeOf(ColumnSorting); +end; + +function ColumnSortingArray.GetItems(aIndex: integer): ColumnSorting; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function ColumnSortingArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure ColumnSortingArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure ColumnSortingArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure ColumnSortingArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure ColumnSortingArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := ColumnSorting.Create; + FCount := ElementCount; +end; + +function ColumnSortingArray.GetCount: integer; +begin + result := FCount; +end; + +procedure ColumnSortingArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function ColumnSortingArray.Add: ColumnSorting; +begin + result := ColumnSorting.Create; + Add(Result); +end; + +function ColumnSortingArray.Add(const Value:ColumnSorting): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure ColumnSortingArray.ReadComplex(ASerializer: TObject); +var + lval: ColumnSorting; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), ColumnSorting, lval, i); + Items[i] := lval; + end; +end; + +procedure ColumnSortingArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], ColumnSorting, i); +end; + +{ DataParameter } + +procedure DataParameter.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.DataParameter; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.DataParameter) then begin + lSource := DataAbstract4_Intf.DataParameter(iSource); + Name := lSource.Name; + Value := lSource.Value; + end; +end; + +procedure DataParameter.ReadComplex(ASerializer: TObject); +var + l_Name: Utf8String; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end + else begin + l_Name := Name; + TROSerializer(ASerializer).ReadUTF8String('Name', l_Name); + Name := l_Name; + l_Value := Value; + TROSerializer(ASerializer).ReadVariant('Value', l_Value); + Value := l_Value; + end; +end; + +procedure DataParameter.WriteComplex(ASerializer: TObject); +var + l_Name: Utf8String; + l_Value: Variant; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(DataParameter); + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end + else begin + l_Name := Name; + TROSerializer(ASerializer).WriteUTF8String('Name', l_Name); + l_Value := Value; + TROSerializer(ASerializer).WriteVariant('Value', l_Value); + end; +end; + +{ DataParameterCollection } +constructor DataParameterCollection.Create; +begin + inherited Create(DataParameter); +end; + +constructor DataParameterCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function DataParameterCollection.Add: DataParameter; +begin + result := DataParameter(inherited Add); +end; + +function DataParameterCollection.GetItems(aIndex: integer): DataParameter; +begin + result := DataParameter(inherited Items[aIndex]); +end; + +procedure DataParameterCollection.LoadFromArray(anArray: DataParameterArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure DataParameterCollection.SaveToArray(anArray: DataParameterArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := DataParameter.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure DataParameterCollection.SetItems(aIndex: integer; const Value: DataParameter); +begin + DataParameter(inherited Items[aIndex]).Assign(Value); +end; + +{ TableRequestInfo } + +procedure TableRequestInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.TableRequestInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.TableRequestInfo) then begin + lSource := DataAbstract4_Intf.TableRequestInfo(iSource); + UserFilter := lSource.UserFilter; + IncludeSchema := lSource.IncludeSchema; + MaxRecords := lSource.MaxRecords; + Parameters.Assign(lSource.Parameters); + end; +end; + +constructor TableRequestInfo.Create(aCollection : TCollection); +begin + inherited Create(aCollection); + fMaxRecords := -1; +end; + +function TableRequestInfo.GetParameters: DataParameterArray; +begin + if (fParameters = nil) then fParameters := DataParameterArray.Create(); + result := fParameters; +end; + +procedure TableRequestInfo.ReadComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + end; +end; + +procedure TableRequestInfo.WriteComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TableRequestInfo); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + end; +end; + +{ TableRequestInfoCollection } +constructor TableRequestInfoCollection.Create; +begin + inherited Create(TableRequestInfo); +end; + +constructor TableRequestInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TableRequestInfoCollection.Add: TableRequestInfo; +begin + result := TableRequestInfo(inherited Add); +end; + +function TableRequestInfoCollection.GetItems(aIndex: integer): TableRequestInfo; +begin + result := TableRequestInfo(inherited Items[aIndex]); +end; + +procedure TableRequestInfoCollection.LoadFromArray(anArray: TableRequestInfoArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure TableRequestInfoCollection.SaveToArray(anArray: TableRequestInfoArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := TableRequestInfo.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure TableRequestInfoCollection.SetItems(aIndex: integer; const Value: TableRequestInfo); +begin + TableRequestInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ UserInfo } + +procedure UserInfo.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.UserInfo; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.UserInfo) then begin + lSource := DataAbstract4_Intf.UserInfo(iSource); + SessionID := lSource.SessionID; + UserID := lSource.UserID; + Privileges.Assign(lSource.Privileges); + Attributes.Assign(lSource.Attributes); + UserData.Assign(lSource.UserData); + end; +end; + +function UserInfo.GetPrivileges: StringArray; +begin + if (fPrivileges = nil) then fPrivileges := StringArray.Create(); + result := fPrivileges; +end; + +function UserInfo.GetAttributes: VariantArray; +begin + if (fAttributes = nil) then fAttributes := VariantArray.Create(); + result := fAttributes; +end; + +function UserInfo.GetUserData: Binary; +begin + if (fUserData = nil) then fUserData := Binary.Create(); + result := fUserData; +end; + +procedure UserInfo.ReadComplex(ASerializer: TObject); +var + l_Attributes: VariantArray; + l_Privileges: StringArray; + l_SessionID: Utf8String; + l_UserData: Binary; + l_UserID: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', StringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', VariantArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_UserData := UserData; + TROSerializer(ASerializer).ReadBinary('UserData', l_UserData); + if UserData <> l_UserData then UserData.Free; + UserData := l_UserData; + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', VariantArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', StringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserData := UserData; + TROSerializer(ASerializer).ReadBinary('UserData', l_UserData); + if UserData <> l_UserData then UserData.Free; + UserData := l_UserData; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + end; +end; + +procedure UserInfo.WriteComplex(ASerializer: TObject); +var + l_Attributes: VariantArray; + l_Privileges: StringArray; + l_SessionID: Utf8String; + l_UserData: Binary; + l_UserID: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(UserInfo); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, StringArray); + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, VariantArray); + l_UserData := UserData; + TROSerializer(ASerializer).WriteBinary('UserData', l_UserData); + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes, VariantArray); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges, StringArray); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserData := UserData; + TROSerializer(ASerializer).WriteBinary('UserData', l_UserData); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + end; +end; + +{ UserInfoCollection } +constructor UserInfoCollection.Create; +begin + inherited Create(UserInfo); +end; + +constructor UserInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function UserInfoCollection.Add: UserInfo; +begin + result := UserInfo(inherited Add); +end; + +function UserInfoCollection.GetItems(aIndex: integer): UserInfo; +begin + result := UserInfo(inherited Items[aIndex]); +end; + +procedure UserInfoCollection.SetItems(aIndex: integer; const Value: UserInfo); +begin + UserInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ TableRequestInfoV5 } + +procedure TableRequestInfoV5.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.TableRequestInfoV5; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.TableRequestInfoV5) then begin + lSource := DataAbstract4_Intf.TableRequestInfoV5(iSource); + WhereClause := lSource.WhereClause; + DynamicSelectFieldNames.Assign(lSource.DynamicSelectFieldNames); + Sorting.Assign(lSource.Sorting); + end; +end; + +function TableRequestInfoV5.GetDynamicSelectFieldNames: StringArray; +begin + if (fDynamicSelectFieldNames = nil) then fDynamicSelectFieldNames := StringArray.Create(); + result := fDynamicSelectFieldNames; +end; + +function TableRequestInfoV5.GetSorting: ColumnSorting; +begin + if (fSorting = nil) then fSorting := ColumnSorting.Create(); + result := fSorting; +end; + +procedure TableRequestInfoV5.ReadComplex(ASerializer: TObject); +var + l_DynamicSelectFieldNames: StringArray; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sorting: ColumnSorting; + l_UserFilter: Utf8String; + l_WhereClause: IXmlNode; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + l_WhereClause := WhereClause; + TROSerializer(ASerializer).ReadXML('WhereClause', l_WhereClause); + WhereClause := l_WhereClause; + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).ReadArray('DynamicSelectFieldNames', StringArray, l_DynamicSelectFieldNames); + if DynamicSelectFieldNames <> l_DynamicSelectFieldNames then DynamicSelectFieldNames.Free; + DynamicSelectFieldNames := l_DynamicSelectFieldNames; + l_Sorting := Sorting; + TROSerializer(ASerializer).ReadStruct('Sorting', ColumnSorting, l_Sorting); + if Sorting <> l_Sorting then Sorting.Free; + Sorting := l_Sorting; + end + else begin + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).ReadArray('DynamicSelectFieldNames', StringArray, l_DynamicSelectFieldNames); + if DynamicSelectFieldNames <> l_DynamicSelectFieldNames then DynamicSelectFieldNames.Free; + DynamicSelectFieldNames := l_DynamicSelectFieldNames; + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + l_Sorting := Sorting; + TROSerializer(ASerializer).ReadStruct('Sorting', ColumnSorting, l_Sorting); + if Sorting <> l_Sorting then Sorting.Free; + Sorting := l_Sorting; + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + l_WhereClause := WhereClause; + TROSerializer(ASerializer).ReadXML('WhereClause', l_WhereClause); + WhereClause := l_WhereClause; + end; +end; + +procedure TableRequestInfoV5.WriteComplex(ASerializer: TObject); +var + l_DynamicSelectFieldNames: StringArray; + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sorting: ColumnSorting; + l_UserFilter: Utf8String; + l_WhereClause: IXmlNode; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + TROSerializer(ASerializer).ChangeClass(TableRequestInfoV5); + l_WhereClause := WhereClause; + TROSerializer(ASerializer).WriteXML('WhereClause', l_WhereClause); + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).WriteArray('DynamicSelectFieldNames', l_DynamicSelectFieldNames, StringArray); + l_Sorting := Sorting; + TROSerializer(ASerializer).WriteStruct('Sorting', l_Sorting, ColumnSorting); + end + else begin + l_DynamicSelectFieldNames := DynamicSelectFieldNames; + TROSerializer(ASerializer).WriteArray('DynamicSelectFieldNames', l_DynamicSelectFieldNames, StringArray); + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + l_Sorting := Sorting; + TROSerializer(ASerializer).WriteStruct('Sorting', l_Sorting, ColumnSorting); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + l_WhereClause := WhereClause; + TROSerializer(ASerializer).WriteXML('WhereClause', l_WhereClause); + end; +end; + +{ TableRequestInfoV5Collection } +constructor TableRequestInfoV5Collection.Create; +begin + inherited Create(TableRequestInfoV5); +end; + +constructor TableRequestInfoV5Collection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TableRequestInfoV5Collection.Add: TableRequestInfoV5; +begin + result := TableRequestInfoV5(inherited Add); +end; + +function TableRequestInfoV5Collection.GetItems(aIndex: integer): TableRequestInfoV5; +begin + result := TableRequestInfoV5(inherited Items[aIndex]); +end; + +procedure TableRequestInfoV5Collection.SetItems(aIndex: integer; const Value: TableRequestInfoV5); +begin + TableRequestInfoV5(inherited Items[aIndex]).Assign(Value); +end; + +{ ColumnSorting } + +procedure ColumnSorting.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.ColumnSorting; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.ColumnSorting) then begin + lSource := DataAbstract4_Intf.ColumnSorting(iSource); + FieldName := lSource.FieldName; + SortDirection := lSource.SortDirection; + end; +end; + +procedure ColumnSorting.ReadComplex(ASerializer: TObject); +var + l_FieldName: Utf8String; + l_SortDirection: ColumnSortDirection; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_FieldName := FieldName; + TROSerializer(ASerializer).ReadUTF8String('FieldName', l_FieldName); + FieldName := l_FieldName; + l_SortDirection := SortDirection; + TROSerializer(ASerializer).ReadEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + SortDirection := l_SortDirection; + end + else begin + l_FieldName := FieldName; + TROSerializer(ASerializer).ReadUTF8String('FieldName', l_FieldName); + FieldName := l_FieldName; + l_SortDirection := SortDirection; + TROSerializer(ASerializer).ReadEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + SortDirection := l_SortDirection; + end; +end; + +procedure ColumnSorting.WriteComplex(ASerializer: TObject); +var + l_FieldName: Utf8String; + l_SortDirection: ColumnSortDirection; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(ColumnSorting); + l_FieldName := FieldName; + TROSerializer(ASerializer).WriteUTF8String('FieldName', l_FieldName); + l_SortDirection := SortDirection; + TROSerializer(ASerializer).WriteEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + end + else begin + l_FieldName := FieldName; + TROSerializer(ASerializer).WriteUTF8String('FieldName', l_FieldName); + l_SortDirection := SortDirection; + TROSerializer(ASerializer).WriteEnumerated('SortDirection',TypeInfo(ColumnSortDirection), l_SortDirection); + end; +end; + +{ ColumnSortingCollection } +constructor ColumnSortingCollection.Create; +begin + inherited Create(ColumnSorting); +end; + +constructor ColumnSortingCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function ColumnSortingCollection.Add: ColumnSorting; +begin + result := ColumnSorting(inherited Add); +end; + +function ColumnSortingCollection.GetItems(aIndex: integer): ColumnSorting; +begin + result := ColumnSorting(inherited Items[aIndex]); +end; + +procedure ColumnSortingCollection.LoadFromArray(anArray: ColumnSortingArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + Add.Assign(anArray[i]); +end; + +procedure ColumnSortingCollection.SaveToArray(anArray: ColumnSortingArray); +var i : integer; +begin + anArray.Clear; + anArray.Resize(Count); + for i := 0 to (Count-1) do begin + anArray[i] := ColumnSorting.Create; + anArray[i].Assign(Items[i]); + end; +end; + +procedure ColumnSortingCollection.SetItems(aIndex: integer; const Value: ColumnSorting); +begin + ColumnSorting(inherited Items[aIndex]).Assign(Value); +end; + +{ TableRequestInfoV6 } + +procedure TableRequestInfoV6.Assign(iSource: TPersistent); +var lSource: DataAbstract4_Intf.TableRequestInfoV6; +begin + inherited Assign(iSource); + if (iSource is DataAbstract4_Intf.TableRequestInfoV6) then begin + lSource := DataAbstract4_Intf.TableRequestInfoV6(iSource); + Sql := lSource.Sql; + end; +end; + +procedure TableRequestInfoV6.ReadComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sql: Widestring; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + l_Sql := Sql; + TROSerializer(ASerializer).ReadWideString('Sql', l_Sql); + Sql := l_Sql; + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).ReadEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + IncludeSchema := l_IncludeSchema; + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).ReadInteger('MaxRecords', otSLong, l_MaxRecords); + MaxRecords := l_MaxRecords; + l_Parameters := Parameters; + TROSerializer(ASerializer).ReadArray('Parameters', DataParameterArray, l_Parameters); + if Parameters <> l_Parameters then Parameters.Free; + Parameters := l_Parameters; + l_Sql := Sql; + TROSerializer(ASerializer).ReadWideString('Sql', l_Sql); + Sql := l_Sql; + l_UserFilter := UserFilter; + TROSerializer(ASerializer).ReadUTF8String('UserFilter', l_UserFilter); + UserFilter := l_UserFilter; + end; +end; + +procedure TableRequestInfoV6.WriteComplex(ASerializer: TObject); +var + l_IncludeSchema: Boolean; + l_MaxRecords: Integer; + l_Parameters: DataParameterArray; + l_Sql: Widestring; + l_UserFilter: Utf8String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + TROSerializer(ASerializer).ChangeClass(TableRequestInfoV6); + l_Sql := Sql; + TROSerializer(ASerializer).WriteWideString('Sql', l_Sql); + end + else begin + l_IncludeSchema := IncludeSchema; + TROSerializer(ASerializer).WriteEnumerated('IncludeSchema',TypeInfo(boolean), l_IncludeSchema); + l_MaxRecords := MaxRecords; + TROSerializer(ASerializer).WriteInteger('MaxRecords', otSLong, l_MaxRecords); + l_Parameters := Parameters; + TROSerializer(ASerializer).WriteArray('Parameters', l_Parameters, DataParameterArray); + l_Sql := Sql; + TROSerializer(ASerializer).WriteWideString('Sql', l_Sql); + l_UserFilter := UserFilter; + TROSerializer(ASerializer).WriteUTF8String('UserFilter', l_UserFilter); + end; +end; + +{ TableRequestInfoV6Collection } +constructor TableRequestInfoV6Collection.Create; +begin + inherited Create(TableRequestInfoV6); +end; + +constructor TableRequestInfoV6Collection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TableRequestInfoV6Collection.Add: TableRequestInfoV6; +begin + result := TableRequestInfoV6(inherited Add); +end; + +function TableRequestInfoV6Collection.GetItems(aIndex: integer): TableRequestInfoV6; +begin + result := TableRequestInfoV6(inherited Items[aIndex]); +end; + +procedure TableRequestInfoV6Collection.SetItems(aIndex: integer; const Value: TableRequestInfoV6); +begin + TableRequestInfoV6(inherited Items[aIndex]).Assign(Value); +end; + +{ CoDataAbstractService } + +class function CoDataAbstractService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDataAbstractService; +begin + result := TDataAbstractService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TDataAbstractService_Proxy } + +function TDataAbstractService_Proxy.__GetInterfaceName:string; +begin + result := 'DataAbstractService'; +end; + +function TDataAbstractService_Proxy.GetSchema(const aFilter: Utf8String): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetSchema'); + __Message.Write('aFilter', TypeInfo(Utf8String), aFilter, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetData'); + __Message.Write('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Write('aTableRequestInfoArray', TypeInfo(DataAbstract4_Intf.TableRequestInfoArray), aTableRequestInfoArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.UpdateData(const aDelta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UpdateData'); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommand'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aParameterArray', TypeInfo(DataAbstract4_Intf.DataParameterArray), aParameterArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; +begin + try + aOutputParameters := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'ExecuteCommandEx'); + __Message.Write('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Write('aInputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aInputParameters, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + __Message.Read('aOutputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aOutputParameters, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetTableSchema(const aTableNameArray: StringArray): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetTableSchema'); + __Message.Write('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetCommandSchema'); + __Message.Write('aCommandNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aCommandNameArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetData'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLGetDataEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Write('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLExecuteCommand(const aSQLText: Utf8String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommand'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'SQLExecuteCommandEx'); + __Message.Write('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Write('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TDataAbstractService_Proxy.GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDatasetScripts'); + __Message.Write('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDataAbstractService_Proxy.RegisterForDataChangeNotification(const aTableName: Utf8String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'RegisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TDataAbstractService_Proxy.UnregisterForDataChangeNotification(const aTableName: Utf8String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'UnregisterForDataChangeNotification'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoSimpleLoginService } + +class function CoSimpleLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISimpleLoginService; +begin + result := TSimpleLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TSimpleLoginService_Proxy } + +function TSimpleLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'SimpleLoginService'; +end; + +function TSimpleLoginService_Proxy.Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; +begin + try + aUserInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoBaseLoginService } + +class function CoBaseLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IBaseLoginService; +begin + result := TBaseLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TBaseLoginService_Proxy } + +function TBaseLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'BaseLoginService'; +end; + +function TBaseLoginService_Proxy.LoginEx(const aLoginString: Utf8String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'LoginEx'); + __Message.Write('aLoginString', TypeInfo(Utf8String), aLoginString, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TBaseLoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +{ CoMultiDbLoginService } + +class function CoMultiDbLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginService; +begin + result := TMultiDbLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginService_Proxy } + +function TMultiDbLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginService'; +end; + +function TMultiDbLoginService_Proxy.Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; +begin + try + aUserInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'Login'); + __Message.Write('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Write('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Write('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoMultiDbLoginServiceV5 } + +class function CoMultiDbLoginServiceV5.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiDbLoginServiceV5; +begin + result := TMultiDbLoginServiceV5_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiDbLoginServiceV5_Proxy } + +function TMultiDbLoginServiceV5_Proxy.__GetInterfaceName:string; +begin + result := 'MultiDbLoginServiceV5'; +end; + +function TMultiDbLoginServiceV5_Proxy.GetConnectionNames: StringArray; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetConnectionNames'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DataAbstract4_Intf.StringArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMultiDbLoginServiceV5_Proxy.GetDefaultConnectionName: Utf8String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract4', __InterfaceName, 'GetDefaultConnectionName'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Utf8String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +type + { TDataChangeNotification_Writer } + TDataChangeNotification_Writer = class(TROEventWriter, IDataChangeNotification_Writer) + protected + procedure OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); + end; + +procedure TDataChangeNotification_Writer.OnDataTableChanged(const __Sender : TGUID; const aTableName: Utf8String; const aDelta: Binary); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'DataAbstract4', EID_DataChangeNotification, 'OnDataTableChanged'); + __Message.Write('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Write('aDelta', TypeInfo(Binary), aDelta, []); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +type + { TDataChangeNotification_Invoker } + TDataChangeNotification_Invoker = class(TROEventInvoker) + published + procedure Invoke_OnDataTableChanged(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + end; + +procedure TDataChangeNotification_Invoker.Invoke_OnDataTableChanged(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; + aTableName: Utf8String; + aDelta: Binary; +begin + aDelta := NIL; + + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + __Message.Read('aDelta', TypeInfo(Binary), aDelta, []); + + (__Target as IDataChangeNotification).OnDataTableChanged(aTableName, aDelta); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + __lObjectDisposer.Add(aDelta); + finally + __lObjectDisposer.Free(); + end + end +end; + +initialization + RegisterROClass(DataParameter); + RegisterROClass(TableRequestInfo); + RegisterROClass(UserInfo); + RegisterROClass(TableRequestInfoV5); + RegisterROClass(ColumnSorting); + RegisterROClass(TableRequestInfoV6); + RegisterROClass(DataParameterArray); + RegisterROClass(TableRequestInfoArray); + RegisterROClass(StringArray); + RegisterROClass(VariantArray); + RegisterROClass(ColumnSortingArray); + RegisterProxyClass(IDataAbstractService_IID, TDataAbstractService_Proxy); + RegisterProxyClass(ISimpleLoginService_IID, TSimpleLoginService_Proxy); + RegisterProxyClass(IBaseLoginService_IID, TBaseLoginService_Proxy); + RegisterProxyClass(IMultiDbLoginService_IID, TMultiDbLoginService_Proxy); + RegisterProxyClass(IMultiDbLoginServiceV5_IID, TMultiDbLoginServiceV5_Proxy); + + RegisterEventWriterClass(IDataChangeNotification_Writer, TDataChangeNotification_Writer); + RegisterEventInvokerClass(EID_DataChangeNotification, TDataChangeNotification_Invoker); + +finalization + UnregisterROClass(DataParameter); + UnregisterROClass(TableRequestInfo); + UnregisterROClass(UserInfo); + UnregisterROClass(TableRequestInfoV5); + UnregisterROClass(ColumnSorting); + UnregisterROClass(TableRequestInfoV6); + UnregisterROClass(DataParameterArray); + UnregisterROClass(TableRequestInfoArray); + UnregisterROClass(StringArray); + UnregisterROClass(VariantArray); + UnregisterROClass(ColumnSortingArray); + UnregisterProxyClass(IDataAbstractService_IID); + UnregisterProxyClass(ISimpleLoginService_IID); + UnregisterProxyClass(IBaseLoginService_IID); + UnregisterProxyClass(IMultiDbLoginService_IID); + UnregisterProxyClass(IMultiDbLoginServiceV5_IID); + + UnregisterEventWriterClass(IDataChangeNotification_Writer); + UnregisterEventInvokerClass(EID_DataChangeNotification); +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas new file mode 100644 index 0000000..fd826b9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract4_Invk.pas @@ -0,0 +1,642 @@ +unit DataAbstract4_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} DataAbstract4_Intf; + +type + TDataAbstractService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetTableSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetCommandSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLGetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLGetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SQLExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_RegisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UnregisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TBaseLoginService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_LoginEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TMultiDbLoginService_Invoker = class(TBaseLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TMultiDbLoginServiceV5_Invoker = class(TMultiDbLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetConnectionNames(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDefaultConnectionName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TSimpleLoginService_Invoker = class(TBaseLoginService_Invoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TDataAbstractService_Invoker } + +constructor TDataAbstractService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchema(const aFilter: Utf8String): Utf8String; } +var + aFilter: Utf8String; + lResult: Utf8String; +begin + try + __Message.Read('aFilter', TypeInfo(Utf8String), aFilter, []); + + lResult := (__Instance as IDataAbstractService).GetSchema(aFilter); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; } +var + aTableNameArray: DataAbstract4_Intf.StringArray; + aTableRequestInfoArray: DataAbstract4_Intf.TableRequestInfoArray; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + aTableNameArray := nil; + aTableRequestInfoArray := nil; + lResult := nil; + try + __Message.Read('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + __Message.Read('aTableRequestInfoArray', TypeInfo(DataAbstract4_Intf.TableRequestInfoArray), aTableRequestInfoArray, []); + + lResult := (__Instance as IDataAbstractService).GetData(aTableNameArray, aTableRequestInfoArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aTableNameArray); + __lObjectDisposer.Add(aTableRequestInfoArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_UpdateData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateData(const aDelta: Binary): Binary; } +var + aDelta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + aDelta := nil; + lResult := nil; + try + __Message.Read('aDelta', TypeInfo(Binary), aDelta, []); + + lResult := (__Instance as IDataAbstractService).UpdateData(aDelta); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'UpdateDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aDelta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_ExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; } +var + aCommandName: Utf8String; + aParameterArray: DataAbstract4_Intf.DataParameterArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + aParameterArray := nil; + try + __Message.Read('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Read('aParameterArray', TypeInfo(DataAbstract4_Intf.DataParameterArray), aParameterArray, []); + + lResult := (__Instance as IDataAbstractService).ExecuteCommand(aCommandName, aParameterArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'ExecuteCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aParameterArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_ExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ExecuteCommandEx(const aCommandName: Utf8String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray): Integer; } +var + aCommandName: Utf8String; + aInputParameters: DataAbstract4_Intf.DataParameterArray; + aOutputParameters: DataAbstract4_Intf.DataParameterArray; + lResult: Integer; + __lObjectDisposer: TROObjectDisposer; +begin + aInputParameters := nil; + aOutputParameters := nil; + try + __Message.Read('aCommandName', TypeInfo(Utf8String), aCommandName, []); + __Message.Read('aInputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aInputParameters, []); + + lResult := (__Instance as IDataAbstractService).ExecuteCommandEx(aCommandName, aInputParameters, aOutputParameters); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'ExecuteCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Write('aOutputParameters', TypeInfo(DataAbstract4_Intf.DataParameterArray), aOutputParameters, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aInputParameters); + __lObjectDisposer.Add(aOutputParameters); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetTableSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetTableSchema(const aTableNameArray: StringArray): Utf8String; } +var + aTableNameArray: DataAbstract4_Intf.StringArray; + lResult: Utf8String; + __lObjectDisposer: TROObjectDisposer; +begin + aTableNameArray := nil; + try + __Message.Read('aTableNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aTableNameArray, []); + + lResult := (__Instance as IDataAbstractService).GetTableSchema(aTableNameArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetTableSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aTableNameArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetCommandSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; } +var + aCommandNameArray: DataAbstract4_Intf.StringArray; + lResult: Utf8String; + __lObjectDisposer: TROObjectDisposer; +begin + aCommandNameArray := nil; + try + __Message.Read('aCommandNameArray', TypeInfo(DataAbstract4_Intf.StringArray), aCommandNameArray, []); + + lResult := (__Instance as IDataAbstractService).GetCommandSchema(aCommandNameArray); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetCommandSchemaResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aCommandNameArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLGetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; } +var + aSQLText: Utf8String; + aIncludeSchema: Boolean; + aMaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Read('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + + lResult := (__Instance as IDataAbstractService).SQLGetData(aSQLText, aIncludeSchema, aMaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLGetDataResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLGetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; } +var + aSQLText: Utf8String; + aIncludeSchema: Boolean; + aMaxRecords: Integer; + aDynamicWhereXML: Widestring; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aIncludeSchema', TypeInfo(Boolean), aIncludeSchema, []); + __Message.Read('aMaxRecords', TypeInfo(Integer), aMaxRecords, []); + __Message.Read('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + + lResult := (__Instance as IDataAbstractService).SQLGetDataEx(aSQLText, aIncludeSchema, aMaxRecords, aDynamicWhereXML); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLGetDataExResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLExecuteCommand(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLExecuteCommand(const aSQLText: Utf8String): Integer; } +var + aSQLText: Utf8String; + lResult: Integer; +begin + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + + lResult := (__Instance as IDataAbstractService).SQLExecuteCommand(aSQLText); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLExecuteCommandResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_SQLExecuteCommandEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; } +var + aSQLText: Utf8String; + aDynamicWhereXML: Widestring; + lResult: Integer; +begin + try + __Message.Read('aSQLText', TypeInfo(Utf8String), aSQLText, []); + __Message.Read('aDynamicWhereXML', TypeInfo(Widestring), aDynamicWhereXML, []); + + lResult := (__Instance as IDataAbstractService).SQLExecuteCommandEx(aSQLText, aDynamicWhereXML); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'SQLExecuteCommandExResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_GetDatasetScripts(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; } +var + DatasetNames: Utf8String; + lResult: Utf8String; +begin + try + __Message.Read('DatasetNames', TypeInfo(Utf8String), DatasetNames, []); + + lResult := (__Instance as IDataAbstractService).GetDatasetScripts(DatasetNames); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'GetDatasetScriptsResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_RegisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure RegisterForDataChangeNotification(const aTableName: Utf8String); } +var + aTableName: Utf8String; +begin + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + + (__Instance as IDataAbstractService).RegisterForDataChangeNotification(aTableName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'RegisterForDataChangeNotificationResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TDataAbstractService_Invoker.Invoke_UnregisterForDataChangeNotification(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); } +var + aTableName: Utf8String; +begin + try + __Message.Read('aTableName', TypeInfo(Utf8String), aTableName, []); + + (__Instance as IDataAbstractService).UnregisterForDataChangeNotification(aTableName); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'DataAbstractService', 'UnregisterForDataChangeNotificationResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TSimpleLoginService_Invoker } + +constructor TSimpleLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TSimpleLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const aUserID: Utf8String; const aPassword: Utf8String; out aUserInfo: UserInfo): Boolean; } +var + aUserID: Utf8String; + aPassword: Utf8String; + aUserInfo: DataAbstract4_Intf.UserInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + aUserInfo := nil; + try + __Message.Read('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Read('aPassword', TypeInfo(Utf8String), aPassword, []); + + lResult := (__Instance as ISimpleLoginService).Login(aUserID, aPassword, aUserInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'SimpleLoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aUserInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TBaseLoginService_Invoker } + +constructor TBaseLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TBaseLoginService_Invoker.Invoke_LoginEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function LoginEx(const aLoginString: Utf8String): Boolean; } +var + aLoginString: Utf8String; + lResult: Boolean; +begin + try + __Message.Read('aLoginString', TypeInfo(Utf8String), aLoginString, []); + + lResult := (__Instance as IBaseLoginService).LoginEx(aLoginString); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'BaseLoginService', 'LoginExResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TBaseLoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IBaseLoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'BaseLoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TMultiDbLoginService_Invoker } + +constructor TMultiDbLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TMultiDbLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const aUserID: Utf8String; const aPassword: Utf8String; const aConnectionName: Utf8String; out aUserInfo: UserInfo): Boolean; } +var + aUserID: Utf8String; + aPassword: Utf8String; + aConnectionName: Utf8String; + aUserInfo: DataAbstract4_Intf.UserInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + aUserInfo := nil; + try + __Message.Read('aUserID', TypeInfo(Utf8String), aUserID, []); + __Message.Read('aPassword', TypeInfo(Utf8String), aPassword, []); + __Message.Read('aConnectionName', TypeInfo(Utf8String), aConnectionName, []); + + lResult := (__Instance as IMultiDbLoginService).Login(aUserID, aPassword, aConnectionName, aUserInfo); + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('aUserInfo', TypeInfo(DataAbstract4_Intf.UserInfo), aUserInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aUserInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TMultiDbLoginServiceV5_Invoker } + +constructor TMultiDbLoginServiceV5_Invoker.Create; +begin + inherited Create; + FAbstract := True; +end; + +procedure TMultiDbLoginServiceV5_Invoker.Invoke_GetConnectionNames(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetConnectionNames: StringArray; } +var + lResult: DataAbstract4_Intf.StringArray; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as IMultiDbLoginServiceV5).GetConnectionNames; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginServiceV5', 'GetConnectionNamesResponse'); + __Message.Write('Result', TypeInfo(DataAbstract4_Intf.StringArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMultiDbLoginServiceV5_Invoker.Invoke_GetDefaultConnectionName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDefaultConnectionName: Utf8String; } +var + lResult: Utf8String; +begin + try + lResult := (__Instance as IMultiDbLoginServiceV5).GetDefaultConnectionName; + + __Message.InitializeResponseMessage(__Transport, 'DataAbstract4', 'MultiDbLoginServiceV5', 'GetDefaultConnectionNameResponse'); + __Message.Write('Result', TypeInfo(Utf8String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm new file mode 100644 index 0000000..65deb18 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.dfm @@ -0,0 +1,5 @@ +object DataAbstractService: TDataAbstractService + OldCreateOrder = True + Height = 437 + Width = 546 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lfm new file mode 100644 index 0000000..e5b4ff9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lfm @@ -0,0 +1,7 @@ +inherited DataAbstractService: TDataAbstractService + OldCreateOrder = True + Height = 437 + HorizontalOffset = 0 + VerticalOffset = 0 + Width = 546 +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lrs new file mode 100644 index 0000000..cca0dab --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.lrs @@ -0,0 +1,7 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TDataAbstractService','FORMDATA',[ + 'TPF0'#241#20'TDataAbstractService'#19'DataAbstractService'#14'OldCreateOrder' + +#9#6'Height'#3#181#1#16'HorizontalOffset'#2#0#14'VerticalOffset'#2#0#5'Width' + +#3'"'#2#0#0 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas new file mode 100644 index 0000000..f32a0cb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstractService_Impl.pas @@ -0,0 +1,1554 @@ +unit DataAbstractService_Impl; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{----------------------------------------------------------------------------} +{ When applying fixes to this unit, please see if the need to be propagates } +{ to the duplicate dlogic in legacy DARemoteService_Impl.pas, too. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + {vcl:} Classes, SysUtils, DB, + {Generated:} DataAbstract4_Intf, + uROClientIntf, uROTypes, uROServer, uROSessions, uRORemoteDataModule, uROClasses, + uDAInterfaces, uDAClasses, uDADataTable, uDADataStreamer, uDABusinessProcessor, + uDADataTableReferenceCollection, uDADelta, uDALocalHelpers; + +type + { Events } + TDAAcquireConnectionEvent = procedure(aSender: TObject; var aConnectionName: string) of object; + TDAConnectionAcquiredEvent = procedure(aSender: TObject; const aConnectionName: string; const aAcquiredConnection: IDAConnection) of object; + TDAAcquireConnectionFailureEvent = procedure(aSender: TObject; const aConnectionName: string; aError: Exception) of object; + TDAGetDatasetSchemaEvent = procedure(aSender: TObject; const aDataset: IDADataset) of object; + TDAGetDatasetDataEvent = procedure(aSender: TObject; const aDataset: IDADataset; const aIncludeSchema: Boolean; const aMaxRecords: Integer) of object; + TDABusinessProcessorAutoCreatedEvent = procedure(aSender: TRORemoteDataModule; BusinessProcessor : TDABusinessProcessor) of object; + TDABeforeExecuteCommandEvent = procedure(aSender: TObject; const aCommand: IDASQLCommand) of object; + TDAAfterExecuteCommandEvent = procedure(aSender: TObject; const aCommand: IDASQLCommand; aRowsAffacted : integer) of object; + TDAConnectionReleasedEvent = procedure(aSender: TObject; const aConnectionName: string) of object; + TDAGetSchemaAsXMLEvent = procedure(aSender: TObject; var aSchemaXML: Utf8string) of object; + TDAProcessDeltasEvent = procedure(aSender: TObject; aDeltaStructs: TDADeltaStructList) of object; + TDAProcessDeltasErrorEvent = procedure(aSender: TObject; aDeltaStructs: TDADeltaStructList; aError: Exception; var aDoRaise: boolean) of object; + TDASchemaElementAccessValidationEvent = procedure(Sender: TObject; const aConnection: IDAConnection; const aDatasetName: string; + const aParamNames: array of string; const aParamValues : array of variant; + aSchema: TDASchema; var Allowed : boolean) of object; + TDASQLValidationEvent = procedure(Sender: TObject; const aConnection: IDAConnection; const aSQLText: string; + const aParamNames: array of string; const aParamValues : array of variant; + var Allowed : boolean) of object; + TDAUpdateDataTransactionEvent = procedure(Sender: TObject; var aUseDefaultTransactionLogic: Boolean) of object; + + TDADeltasMode = (dumExported, dumStandard); + TDADeltasModes = set of TDADeltasMode; + { TDataAbstractService } + TDataAbstractService = class(TRORemoteDataModule, IDataAbstractService, IDataAbstractLocalServiceAccess) + private + { Properties } + fAllowExecuteCommands: boolean; + fAllowExecuteSQL: boolean; + fAllowDataAccess: boolean; + fAllowSchemaAccess: boolean; + fAllowWhereSQL: boolean; + fConnectionName: string; + fAcquireConnection: boolean; + fServiceSchema: TDASchema; + fAutoCreateBusinessProcessors: boolean; + fServiceDataStreamer: TDADataStreamer; + fProcessDeltasWithoutUpdateRules: boolean; + + fConnection: IDAConnection; + fHETConnection: IDAHETConnection; + fExportedDataTables: TDADataTableReferenceCollection; + + { Events } + fBeforeGetDatasetSchema: TDAGetDatasetSchemaEvent; + fBeforeProcessDeltas: TDAProcessDeltasEvent; + fOnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent; + fOnUpdateDataCommitTransaction: TDAUpdateDataTransactionEvent; + fGetDatasetDataValidation: TDASchemaElementAccessValidationEvent; + fExecuteCommandValidation: TDASchemaElementAccessValidationEvent; + fSQLValidation: TDASQLValidationEvent; + fAfterExecuteCommand: TDAAfterExecuteCommandEvent; + fBeforeAcquireConnection: TDAAcquireConnectionEvent; + fOnUpdateDataRollBackTransaction: TDAUpdateDataTransactionEvent; + fAfterGetDatasetData: TDAGetDatasetDataEvent; + fAfterReleaseConnection: TDAConnectionReleasedEvent; + fAfterGetDatasetSchema: TDAGetDatasetSchemaEvent; + fAfterProcessDeltas: TDAProcessDeltasEvent; + fOnGetSchemaAsXML: TDAGetSchemaAsXMLEvent; + fOnBusinessProcessorAutoCreated: TDABusinessProcessorAutoCreatedEvent; + fOnUpdateDataBeginTransaction: TDAUpdateDataTransactionEvent; + fAfterAcquireConnection: TDAConnectionAcquiredEvent; + fOnProcessDeltasError: TDAProcessDeltasErrorEvent; + fBeforeExecuteCommand: TDABeforeExecuteCommandEvent; + fBeforeGetDatasetData: TDAGetDatasetDataEvent; + fBeforeReleaseConnection: TDAConnectionAcquiredEvent; + fAllowDynamicSelect: boolean; + fAllowDynamicWhere: boolean; + fAllowUpdates: boolean; + fHasReducedDelta: Boolean; + fReturnUpdateFailureDelta: boolean; + + procedure SetServiceDataStreamer(const Value: TDADataStreamer); + procedure SetServiceSchema(const Value: TDASchema); + procedure SetExportedDataTables(const Value: TDADataTableReferenceCollection); + procedure Check(CheckOnlyDataStreamer:Boolean = false); + procedure Check2; + procedure InternalStartTransaction; + private + function GetConnection: IDAConnection; + function ReadDeltaFromStream(const DeltaStream: Binary):IDeltaArray; + function PackDeltas(aDeltaList: IDeltaArray): Binary; + function UnpackDeltas(aDeltaList: IDeltaArray; DeltaStructList: TDADeltaStructList): TDADeltasModes; + function TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; + procedure ExportedDataTables_MergeDelta(ADelta: IDADelta); + procedure InternalGetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray; aStreamer: TDADataStreamer); + function InternalGetSchema(const aFilter: Utf8String): Utf8String; + procedure InternalUpdateData(aDeltaList: IDeltaArray); + function InternalExecuteCommandEx(const aCommandName: String; const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray):integer; + protected + { IDataAbstractService methods } + function GetSchema(const aFilter: Utf8String): Utf8String; + function GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; + function UpdateData(const aDelta: Binary): Binary; + function ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; + function GetTableSchema(const aTableNameArray: StringArray): Utf8String; + function GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; + function SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; + function SQLGetDataEx(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer; const aDynamicWhereXML: Widestring): Binary; + function SQLExecuteCommand(const aSQLText: Utf8String): Integer; + function SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; + function ExecuteCommandEx(const aCommandName: Utf8String; + const aInputParameters: DataParameterArray; + out aOutputParameters: DataParameterArray): Integer; + function GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; + procedure RegisterForDataChangeNotification(const aTableName: Utf8String); + procedure UnregisterForDataChangeNotification(const aTableName: Utf8String); + { IDataAbstractLocalServiceAccess } + function IDataAbstractLocalServiceAccess.GetSchema = InternalGetSchema; + procedure IDataAbstractLocalServiceAccess.UpdateData = InternalUpdateData; + procedure IDataAbstractLocalServiceAccess.GetData = InternalGetData; + function IDataAbstractLocalServiceAccess.GetDatasetScripts = GetDatasetScripts; + function IDataAbstractLocalServiceAccess.ExecuteCommandEx = InternalExecuteCommandEx; + + { TRORemoteDataModule } + procedure DoOnDeactivate(aClientID: TGUID); override; + + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + + function GetConnectionForObject(const aName: string): IDAConnection; virtual; + public + constructor Create(aOwner : TComponent); override; + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + procedure SetConnection(aConnection: IDAConnection); deprecated; + {$WARN SYMBOL_DEPRECATED OFF} + property Connection: IDAConnection read GetConnection write SetConnection; + {$WARN SYMBOL_DEPRECATED ON} + + procedure ReleaseConnection; + published + property AcquireConnection: boolean read fAcquireConnection write fAcquireConnection default true; + property ConnectionName: string read fConnectionName write fConnectionName; + property AutoCreateBusinessProcessors : boolean read fAutoCreateBusinessProcessors write fAutoCreateBusinessProcessors default true; + property ServiceSchema: TDASchema read fServiceSchema write SetServiceSchema; + property ServiceDataStreamer: TDADataStreamer read fServiceDataStreamer write SetServiceDataStreamer; + + property AllowDataAccess: boolean read fAllowDataAccess write fAllowDataAccess default true; + property AllowSchemaAccess: boolean read fAllowSchemaAccess write fAllowSchemaAccess default true; + property AllowUpdates: boolean read fAllowUpdates write fAllowUpdates default true; + property AllowExecuteSQL: boolean read fAllowExecuteSQL write fAllowExecuteSQL default false; + property AllowWhereSQL: boolean read fAllowWhereSQL write fAllowWhereSQL default false; + property AllowExecuteCommands: boolean read fAllowExecuteCommands write fAllowExecuteCommands default false; + property AllowDynamicSelect: boolean read fAllowDynamicSelect write fAllowDynamicSelect default true; + property AllowDynamicWhere: boolean read fAllowDynamicWhere write fAllowDynamicWhere default true; + + property ProcessDeltasWithoutUpdateRules: boolean read fProcessDeltasWithoutUpdateRules write fProcessDeltasWithoutUpdateRules default true; + property ExportedDataTables: TDADataTableReferenceCollection read fExportedDataTables write SetExportedDataTables; + property ReturnUpdateFailureDelta: boolean read fReturnUpdateFailureDelta write FReturnUpdateFailureDelta default True; + + { Events } + property BeforeAcquireConnection: TDAAcquireConnectionEvent read fBeforeAcquireConnection write fBeforeAcquireConnection; + property AfterAcquireConnection: TDAConnectionAcquiredEvent read fAfterAcquireConnection write fAfterAcquireConnection; + property BeforeReleaseConnection: TDAConnectionAcquiredEvent read fBeforeReleaseConnection write fBeforeReleaseConnection; + property AfterReleaseConnection: TDAConnectionReleasedEvent read fAfterReleaseConnection write fAfterReleaseConnection; + property OnAcquireConnectionFailure: TDAAcquireConnectionFailureEvent read fOnAcquireConnectionFailure write fOnAcquireConnectionFailure; + + property BeforeProcessDeltas : TDAProcessDeltasEvent read fBeforeProcessDeltas write fBeforeProcessDeltas; + property AfterProcessDeltas: TDAProcessDeltasEvent read fAfterProcessDeltas write fAfterProcessDeltas; + property OnProcessDeltasError: TDAProcessDeltasErrorEvent read fOnProcessDeltasError write fOnProcessDeltasError; + + property BeforeGetDatasetSchema: TDAGetDatasetSchemaEvent read fBeforeGetDatasetSchema write fBeforeGetDatasetSchema; + property BeforeGetDatasetData: TDAGetDatasetDataEvent read fBeforeGetDatasetData write fBeforeGetDatasetData; + property AfterGetDatasetSchema: TDAGetDatasetSchemaEvent read fAfterGetDatasetSchema write fAfterGetDatasetSchema; + property AfterGetDatasetData: TDAGetDatasetDataEvent read fAfterGetDatasetData write fAfterGetDatasetData; + property OnBusinessProcessorAutoCreated: TDABusinessProcessorAutoCreatedEvent read fOnBusinessProcessorAutoCreated write fOnBusinessProcessorAutoCreated; + property BeforeExecuteCommand: TDABeforeExecuteCommandEvent read fBeforeExecuteCommand write fBeforeExecuteCommand; + property AfterExecuteCommand: TDAAfterExecuteCommandEvent read fAfterExecuteCommand write fAfterExecuteCommand; + property OnGetSchemaAsXMLEvent: TDAGetSchemaAsXMLEvent read fOnGetSchemaAsXML write fOnGetSchemaAsXML; + property ValidateDatasetAccess: TDASchemaElementAccessValidationEvent read fGetDatasetDataValidation write fGetDatasetDataValidation; + property ValidateCommandExecution: TDASchemaElementAccessValidationEvent read fExecuteCommandValidation write fExecuteCommandValidation; + property ValidateDirectSQLAccess: TDASQLValidationEvent read fSQLValidation write fSQLValidation; + + property OnUpdateDataBeginTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataBeginTransaction write fOnUpdateDataBeginTransaction; + property OnUpdateDataCommitTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataCommitTransaction write fOnUpdateDataCommitTransaction; + property OnUpdateDataRollBackTransaction : TDAUpdateDataTransactionEvent read fOnUpdateDataRollBackTransaction write fOnUpdateDataRollBackTransaction; + end; + +implementation + +uses + Contnrs, Variants, + uDARes, uDAExceptions, uDAXMLUtils, uROXMLIntf, + TypInfo, uDAEngine, uDAWhere; + +procedure CheckUTF8Decode(const aOriginalStr: Utf8String; aDecodedStr: string); +begin + if (aDecodedStr = '') and (aOriginalStr <> '') then raise Exception.CreateFmt(err_UTF8DecodeError, [aOriginalStr]); +end; +{ DataAbstractService } + +procedure TDataAbstractService.Check2; +begin + if not (Assigned(Connection) or AcquireConnection) then + raise EROException.Create('AcquireConnection is not set and there is no connection available'); + if not Assigned(ServiceSchema) then + raise Exception.Create('ServiceSchema property is not assigned.'); +end; + +constructor TDataAbstractService.Create(aOwner : TComponent); +begin + fAllowDataAccess := true; + fAllowSchemaAccess := true; + fAllowDynamicSelect := true; + fAllowDynamicWhere := true; + fAllowUpdates := true; + fAutoCreateBusinessProcessors := true; + fProcessDeltasWithoutUpdateRules := true; + fAcquireConnection := true; + fExportedDataTables := TDADataTableReferenceCollection.Create(Self); + fReturnUpdateFailureDelta := True; + fHasReducedDelta := False; + inherited; +end; + +destructor TDataAbstractService.Destroy; +begin + ServiceSchema := nil; + ServiceDataStreamer := nil; + inherited; + FreeAndNIL(fExportedDataTables); +end; + +procedure TDataAbstractService.Notification(AComponent: TComponent; Operation: TOperation); +var + lRef: TDADataTableReference; +begin + inherited; + + if (Operation = opRemove) then begin + + if ((AComponent is TDADataTable) or (AComponent is TDataSet)) and (fExportedDataTables.Count > 0) then begin + lRef := fExportedDataTables.FindByDataTable(TDADataTable(aComponent)); + if (lRef<>NIL) then lRef.DataTable := NIL; + end else if (AComponent = ServiceSchema) then + ServiceSchema := nil + else if (AComponent = ServiceDataStreamer) then + ServiceDataStreamer := nil; + end + +end; + +function TDataAbstractService.PackDeltas(aDeltaList: IDeltaArray): Binary; +var + oldDeltaMode: Boolean; + i: integer; +begin + Result := Binary.Create; + Result.CapacityIncrement := ServiceDataStreamer.BufferSize; + oldDeltaMode:=ServiceDataStreamer.SendReducedDelta; + ServiceDataStreamer.Initialize(result, aiWrite); + try + if fHasReducedDelta then ServiceDataStreamer.SendReducedDelta:=True; + for i := 0 to Length(aDeltaList)-1 do + ServiceDataStreamer.WriteDelta(aDeltaList[i]); + finally + ServiceDataStreamer.Finalize; + ServiceDataStreamer.SendReducedDelta:=oldDeltaMode; + end; +end; + +function TDataAbstractService.TriggerTransactionEvent(aEvent: TDAUpdateDataTransactionEvent): boolean; +begin + result := true; + if assigned(aEvent) then aEvent(self, result); +end; + +{ IDataAbstractService: Schema Access } + +function TDataAbstractService.InternalGetSchema(const aFilter: Utf8String): Utf8String; +var + xml: TStringStream; + dummyrefs: TObjectList; + tempSchema: TDASchema; + + procedure MergeDatatablesToSchema(aList: TObjectList); + var i : integer; + ref : TDADataset; + dt : IDADataset; + begin + for i := 0 to fExportedDataTables.Count-1 do + if fExportedDataTables[i].IsValidReference then begin + dt := fExportedDataTables[i].Dataset; + + ref := tempSchema.Datasets.Add; + ref.Name := dt.LogicalName; + ref.Fields.AssignFieldCollection(dt.Fields); + ref.Params.AssignParamCollection(dt.Params); + + aList.Add(ref); + end; + end; + +begin + tempSchema := ServiceSchema; + if not Assigned(tempSchema) and (fExportedDataTables.Count<>0) then + tempSchema := TDASchema.Create(nil); + + if not Assigned(tempSchema) then + raise Exception.Create('ServiceSchema property is not assigned and no data tables are exported.'); + + dummyrefs := nil; + try + // New: merges the data tables references by the service + if (fExportedDataTables.Count>0) then begin + dummyrefs := TObjectList.Create(true);; + MergeDatatablesToSchema(dummyrefs); + end; + + // Returns the schema + xml := TStringStream.Create(''); + try + tempSchema.SaveToStream(xml); + + result := UTF8Encode(xml.DataString); + + if Assigned(fOnGetSchemaAsXML) then fOnGetSchemaAsXML(Self, result); + finally + xml.Free; + end; + + finally + FreeAndNil(dummyrefs); // automatically removes the datatables from the schema again + if tempSchema <> ServiceSchema then tempSchema.Free; + end; +end; + + +procedure TDataAbstractService.InternalStartTransaction; +begin + try + Connection.BeginTransaction; + except + ReleaseConnection; + Connection.BeginTransaction; + end; +end; + +procedure TDataAbstractService.InternalUpdateData(aDeltaList: IDeltaArray); +var + lProcessedDeltas: TStringList; + lDeltaStructs: TDADeltaStructList; + lStruct: TDADeltaStruct; + lDs: TDADataset; + lDoRaise: boolean; + i,j: integer; + modes: TDADeltasModes; + oldDeltaMode: Boolean; +begin + fHasReducedDelta := False; + + lDeltaStructs := TDADeltaStructList.Create; + try + + try + modes:= UnpackDeltas(aDeltaList, lDeltaStructs); + if modes = [] then exit; + + if dumStandard in modes then begin + Check; + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then InternalStartTransaction; + end; + if Assigned(fBeforeProcessDeltas) then fBeforeProcessDeltas(Self, lDeltaStructs); + + for i := 0 to lDeltaStructs.Count-1 do begin + if ServiceSchema <> nil then + lDs := ServiceSchema.FindDataset(lDeltaStructs[i].Delta.LogicalName) + else + lDs := nil; + if lDs <> nil then begin + if not lDs.IsPublic then + raise EDAException.Create(lDs.Name+' is not accessible'); + if lDs.ReadOnly then + raise EDAException.Create(lDs.Name+' is read-only'); + end; + end; + if dumExported in modes then + // Processes the delta for exported tables (BP=nil) + for i := 0 to lDeltaStructs.Count-1 do begin + if lDeltaStructs[i].BusinessProcessor = nil then + ExportedDataTables_MergeDelta(lDeltaStructs[i].Delta); + end; + if dumStandard in modes then begin + if (ServiceSchema.UpdateRules.Count = 0) and ProcessDeltasWithoutUpdateRules then begin + + // Processes them in order, from first to last delta sent + for i := 0 to lDeltaStructs.Count-1 do + if lDeltaStructs[i].BusinessProcessor <> nil then begin + oldDeltaMode:=lDeltaStructs[i].BusinessProcessor.HasReducedDelta; + try + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + // TODO: Handle GetConnectionForObject() for 'Rosetta', UNIONS and JOINS + lDeltaStructs[i].BusinessProcessor.ProcessDelta(GetConnectionForObject(lDeltaStructs[i].BusinessProcessor.ReferencedDataset), lDeltaStructs[i].Delta, AllChanges, lDeltaStructs[i]); + finally + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + with lDeltaStructs[i] do + for j := 0 to (DetailDeltas.Count-1) do + BusinessProcessor.SynchronizeAutoIncs(Delta, DetailDeltas[j], RelationShips[j]); + end; + end + else begin + lProcessedDeltas := TStringList.Create; + try + + for i := 0 to (ServiceSchema.UpdateRules.Count-1) do begin + // Processes them in the order defined in the schema + lStruct := lDeltaStructs.FindStruct(ServiceSchema.UpdateRules[i].DatasetName); + if assigned(lStruct) then begin + if lStruct.BusinessProcessor = nil then Continue; + // Adds the dataset name to the list of processed deltas. Those that don't have update rules will be processed later + lProcessedDeltas.Add(lStruct.Delta.LogicalName); + + // Processes the delta + oldDeltaMode:=lStruct.BusinessProcessor.HasReducedDelta; + try + lStruct.BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + // TODO: Handle GetConnectionForObject() for 'Rosetta', UNIONS and JOINS + lStruct.BusinessProcessor.ProcessDelta(GetConnectionForObject(lStruct.BusinessProcessor.ReferencedDataset), lStruct.Delta, ServiceSchema.UpdateRules[i].ChangeTypes,lStruct); + finally + lStruct.BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + if (ctInsert in ServiceSchema.UpdateRules[i].ChangeTypes) then begin + for j := 0 to (lStruct.DetailDeltas.Count-1) do + lStruct.BusinessProcessor.SynchronizeAutoIncs(lStruct.Delta, lStruct.DetailDeltas[j], lStruct.RelationShips[j]); + end; + end; + end; + + // Processes the deltas for which update rules were not defined + if (ProcessDeltasWithoutUpdateRules) then begin + for i := 0 to lDeltaStructs.Count-1 do begin + // Skips if already processed + if (lProcessedDeltas.IndexOf(lDeltaStructs[i].Delta.LogicalName)>=0) then Continue; + + if lDeltaStructs[i].BusinessProcessor <> nil then begin + oldDeltaMode:=lDeltaStructs[i].BusinessProcessor.HasReducedDelta; + try + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=fHasReducedDelta; + lDeltaStructs[i].BusinessProcessor.ProcessDelta(GetConnectionForObject(lDeltaStructs[i].BusinessProcessor.ReferencedDataset), lDeltaStructs[i].Delta, AllChanges,lDeltaStructs[i]); + finally + lDeltaStructs[i].BusinessProcessor.HasReducedDelta:=oldDeltaMode; + end; + + with lDeltaStructs[i] do + for j := 0 to (DetailDeltas.Count-1) do + BusinessProcessor.SynchronizeAutoIncs(Delta, DetailDeltas[j], RelationShips[j]); + end; + end; + end; + + finally + lProcessedDeltas.Free; + end; + end; + end; + + if Assigned(fAfterProcessDeltas) then fAfterProcessDeltas(Self, lDeltaStructs); + + if dumStandard in modes then + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + + // Check for unhandled changes + for i := 0 to lDeltaStructs.Count-1 do begin + for j := 0 to lDeltaStructs[i].Delta.Count -1 do begin + if lDeltaStructs[i].Delta[j].Status = csPending then begin + lDeltaStructs[i].Delta[j].Status := csFailed; + lDeltaStructs[i].Delta[j].Message := 'Change was not processed'; + end; + end; + end; + except + on E:Exception do begin + lDoRaise := true; + try + if Assigned(fOnProcessDeltasError) then fOnProcessDeltasError(Self, lDeltaStructs, E, lDoRaise); + finally + if dumStandard in modes then + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + end; + if lDoRaise then raise; + end; + end; + finally + lDeltaStructs.Free; + end; +end; + +function TDataAbstractService.GetTableSchema(const aTableNameArray: StringArray): Utf8String; + + function CreateDatasetFromIDADataset(aRef: IDADataset): TDADataset; + begin + Result := TDADataset.Create(nil); + Result.Name := aRef.LogicalName; + Result.Fields.AssignFieldCollection(aRef.Fields); + Result.Params.AssignParamCollection(aRef.Params); + end; + +var + lxml: IXMLDocument; + i: integer; + lDataSet: TDADataset; + lDataTableRef: TDADataTableReference; + lNeedDeleteDataset: Boolean; + lTableName: string; +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetTableSchema)'); + + if not Assigned(ServiceSchema) and (fExportedDataTables.Count=0) then + raise Exception.Create('ServiceSchema property is not assigned and no data tables are exported.'); + + // Returns the schema + lxml := NewROXmlDocument; + lxml.New('DataTables'); + try + for i := 0 to aTableNameArray.Count - 1 do begin + lTableName := UTF8ToString(aTableNameArray[i]); + CheckUTF8Decode(aTableNameArray[i], lTableName); + lDataSet := nil; + if (fExportedDataTables.Count > 0) then begin + lDataTableRef := fExportedDataTables.FindByName(lTableName); + if lDataTableRef <> nil then lDataSet := CreateDatasetFromIDADataset(lDataTableRef.Dataset); + end; + lNeedDeleteDataset := lDataSet <> nil; + if not lNeedDeleteDataset and (ServiceSchema <> nil) then + lDataSet := ServiceSchema.Datasets.DatasetByName(lTableName); + try + if lDataSet <> nil then begin + // if Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(Self, lDataset as IDADataset); + SaveObjectToXMLNode(lDataSet, lxml.DocumentNode.Add('SchemaDataTable'), [], [], False); + //if Assigned(FAfterGetDatasetSchema) then FAfterGetDatasetSchema(Self, lDataset as IDADataset); + if not (lDataSet.IsPublic) then + raise EDAException.Create(lDataset.Name +' is not accessible'); + end; + finally + if lNeedDeleteDataset then lDataSet.Free; + end; + end; + Result := UTF8Encode(lxml.DocumentNode.XML); + finally + lxml := nil; + end; +end; + +function TDataAbstractService.InternalExecuteCommandEx(const aCommandName: String; + const aInputParameters: DataParameterArray; out aOutputParameters: DataParameterArray):integer; +var + j: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lAllow: boolean; + lCommand: IDASQLCommand; + lCommandSchema: TDASQLCommand; + lConnection: IDAConnection; +begin + SetLength(lParamNames, aInputParameters.Count); + SetLength(lParamValues, aInputParameters.Count); + for j := 0 to (aInputParameters.Count-1) do begin + lParamNames[j] := UTF8ToString(aInputParameters[j].Name); + CheckUTF8Decode(aInputParameters[j].Name,lParamNames[j]); + lParamValues[j] := aInputParameters[j].Value; + end; + + lCommandSchema := ServiceSchema.Commands.SQLCommandByName(aCommandName); + if assigned(lCommandSchema) and not (lCommandSchema.IsPublic) then + raise EDAException.Create(lCommandSchema.Name +' is not accessible'); + + lAllow := true; + lConnection := GetConnectionForObject(aCommandName); + if assigned(fExecuteCommandValidation) then fExecuteCommandValidation(self, lConnection, aCommandName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_CommandNotAccessible, [aCommandName]); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then begin + try + lConnection.BeginTransaction; + except + ReleaseConnection; + lConnection := GetConnectionForObject(aCommandName); + lConnection.BeginTransaction; + end; + end; + try + + lCommand := ServiceSchema.NewCommand(lConnection, aCommandName, lParamNames, lParamValues, false); + if Assigned(fBeforeExecutecommand) then fBeforeExecuteCommand(self, lCommand); + result := lCommand.Execute; + if assigned(fAfterExecutecommand) then fAfterExecuteCommand(self, lCommand, Result); + + aOutputParameters := DataParameterArray.Create; + for j := 0 to lCommand.Params.Count -1 do begin + if (lCommand.Params[j].ParamType <> daptUnknown) and (lCommand.Params[j].ParamType <> daptInput) then begin + with aOutputParameters.Add do begin + Name := AnsiToUtf8(lCommand.Params[j].Name); + Value := lCommand.Params[j].Value; + end; + end; + end; + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then lConnection.CommitTransaction; + except + if lConnection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then lConnection.RollbackTransaction; + raise; + end; +end; + +procedure TDataAbstractService.InternalGetData( + const aTableNameArray: StringArray; + const aTableRequestInfoArray: TableRequestInfoArray; + aStreamer: TDADataStreamer); +var + i, j, x, n,k: integer; + lParamNames: array of string; + lParamValues: array of Variant; + lOptions: TDAWriteOptions; + lAllow: boolean; + lDataSet: IDADataSet; + lEditableDataset: IDAEditableDataset; + lHasTransaction: boolean; + lMaxRecords: integer; + lDataTableRef: TDADataTableReference; + lDynSelectFields: array of string; + lDynSelectFields2: array of string; + lWhereClause, lProcessedWhereClause: UnicodeString; + // lConnection: IDAConnection; + lTableName: String; + lDataTable: TDADataset; + lUnionTable: TDAUnionDataTable; + lAppendData: TDADataForAppend; + lMapping: TDAColumnMappingCollection; + lFilter: string; +begin + if not assigned(aTableNameArray) or (aTableNameArray.Count = 0) then exit; + + if assigned(aTableRequestInfoArray) and (aTableNameArray.Count <> aTableRequestInfoArray.Count) then + raise Exception.Create('Number of items passed to aTableNameArray and aTableRequestInfoArray do not match.'); + + lHasTransaction := false; + try + + for i := 0 to (aTableNameArray.Count-1) do begin + + lTableName := UTF8ToString(aTableNameArray[i]); + CheckUTF8Decode(aTableNameArray[i], lTableName); + if ServiceSchema <> nil then lDataTable := ServiceSchema.FindDataset(lTableName) else lDataTable:=nil; + lOptions := [woRows]; + lMaxRecords := -1; + SetLength(lDynSelectFields,0); + lWhereClause := ''; + + if assigned(aTableRequestInfoArray) and assigned(aTableRequestInfoArray[i]) then with aTableRequestInfoArray[i] do begin + SetLength(lParamNames, Parameters.Count); + SetLength(lParamValues, Parameters.Count); + for j := 0 to (Parameters.Count-1) do begin + lParamNames[j] := UTF8ToString(Parameters[j].Name); + CheckUTF8Decode(Parameters[j].Name, lParamNames[j]); + lParamValues[j] := Parameters[j].Value; + end; + + if IncludeSchema then lOptions := lOptions+[woSchema]; + lMaxRecords := MaxRecords; + + // v5 TableRequestInfo + if aTableRequestInfoArray[i] is TableRequestInfoV5 then + with TableRequestInfoV5(aTableRequestInfoArray[i]) do begin + if assigned(DynamicSelectFieldNames) then begin + if AllowDynamicSelect then begin + SetLength(lDynSelectFields,DynamicSelectFieldNames.Count); + for j := 0 to DynamicSelectFieldNames.Count-1 do begin + CheckUTF8Decode(DynamicSelectFieldNames[j], UTF8ToString(DynamicSelectFieldNames[j])); + lDynSelectFields[j] := Trim(UTF8ToString(DynamicSelectFieldNames[j])); + end; + if DynamicSelectFieldNames.Count > 0 then lOptions := lOptions+[woSchema]; + end else begin + raise EDAException.Create('DynamicSelect support has been disabled (GetData)'); + end; + end; + if assigned(TableRequestInfoV5(aTableRequestInfoArray[i]).WhereClause) then begin + if AllowDynamicWhere then + lWhereClause := WhereClause.XML + else + raise EDAException.Create('DynamicWhere support has been disabled (GetData)'); + end; + end; + end; + + if (fExportedDataTables.Count > 0) and Assigned(fExportedDataTables.FindByName(lTableName)) then begin + // lConnection := nil; + end + else begin + Check2; + //lConnection := GetConnectionForObject(aTableNameArray[i]); + end; + + lAllow := true; + if assigned(fGetDatasetDataValidation) then fGetDatasetDataValidation(self, {l}Connection, lTableName, lParamNames, lParamValues, ServiceSchema, lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_DatasetNotAccessible, [lTableName]); + + lDataSet := nil; + if (fExportedDataTables.Count > 0) then begin + lDataTableRef := fExportedDataTables.FindByName(lTableName); + if assigned(lDataTableRef) then lDataSet := lDataTableRef.Dataset; + end; + + if not assigned(lDataSet) then begin + + // Create transaction, if needed + if not lHasTransaction then begin + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then begin + InternalStartTransaction; + lHasTransaction := true; + end; + end; + + lDataTable := ServiceSchema.FindDataset(lTableName); + + { Unions } + if lDataTable is TDAUnionDataTable then begin + + if (aTableRequestInfoArray <> nil) then begin + lFilter:=UTF8ToString(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then + raise EDAException.Create('Passing of clear text WHERE clauses is not supported for UNIONS (GetData)'); + end; + lUnionTable := lDataTable as TDAUnionDataTable; + lAppendData := aStreamer.BeginWriteDataset({Source}nil, {Schema}lDataTable, lOptions, lMaxRecords, lDynSelectFields); + if not (woRows in lOptions) then Continue; + + for x := 0 to lUnionTable.SourceTables.Count - 1 do begin + lTableName := lUnionTable.SourceTables[x].Name; + + // Check is source table exists in schema. + if (not Assigned(ServiceSchema.FindDataset(lTableName))) then + raise EDAException.CreateFmt('Source table %s doesn''t exist in schema.', [lTableName]); + + // Do column remapping for DynFields names + lMapping := lUnionTable.SourceTables[x].ColumnMappings; + SetLength(lDynSelectFields2, Length(lDynSelectFields)); + for n := Low(lDynSelectFields) to High(lDynSelectFields) do begin + if (lDynSelectFields[n]) = def_SourceTableFieldName then + lDynSelectFields2[n] := lDynSelectFields[n] + else + lDynSelectFields2[n] := lMapping.MappingByDatasetField(lDynSelectFields[n]).TableField; + end; + + // try to predict do we need dynamic where on this source table or not. + lProcessedWhereClause := lWhereClause; + if not ProcessDAWhereForUnions(x, lProcessedWhereClause) then Continue; + + // remap Union name to UnionItem.Name + lProcessedWhereClause := Where_RemapTableNamesForUnions(lProcessedWhereClause,lTableName,lTableName); + + lDataSet := ServiceSchema.NewUnionItemDataset( + GetConnectionForObject(lTableName), + lTableName, + lParamNames, + lParamValues, + lDynSelectFields2, + lProcessedWhereClause, + lMapping + ); + + aStreamer.WriteDatasetData(lDataSet, lAppendData, x); + // Keeping track of maxrecords + if ((lMaxRecords <> -1) and (lAppendData.RecordCount >= lMaxRecords)) then Break; + end; + aStreamer.EndWriteDataset(lAppendData); + end + { Joins } + else if lDataTable is TDAJoinDataTable then begin + raise EDAException.Create('TODO: Joined Data Tables are not implemented in this release, yet.'); + end + { Plain Data Tables } + else begin + + lDataSet := ServiceSchema.NewDataset(GetConnectionForObject(lTableName), lTableName, lParamNames, lParamValues, lDynSelectFields, lWhereClause, False); + + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + + if (aTableRequestInfoArray <> nil) then begin + lFilter:=UTF8ToString(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then begin + if not AllowWhereSQL then raise Exception.Create('Passing of clear text WHERE clauses has been disabled (GetData)'); + lDataSet.Where.AddText(lFilter); + for k := 0 to High(lParamValues) do + lDataSet.ParamByName(lParamNames[k]).Value := lParamValues[k]; + end; + end; + lDataSet.Open; + + aStreamer.WriteDataset(lDataset, lOptions, lMaxRecords,lDynSelectFields); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + + end; + + end + { ExportedDataTables } + else begin + lFilter:=UTF8ToString(aTableRequestInfoArray[i].UserFilter); + CheckUTF8Decode(aTableRequestInfoArray[i].UserFilter,lFilter); + if (Trim(lFilter)<>'') then + raise EDAException.Create('WHERE clauses are not supported on data from ExportedDataTables.'); + + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + + if lDataSet.Active and (lMaxRecords = -1) then begin + if lDataSet.QueryInterface(IDAEditableDataset,lEditableDataset) = s_ok then + lEditableDataset.First + else + lDataSet.Close; + end; + + if not lDataSet.Active then lDataSet.Open; + aStreamer.WriteDataset(lDataset, lOptions, lMaxRecords,lDynSelectFields); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), lMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + end; + + if assigned(lDataTable) and not (lDataTable.IsPublic) then + raise EDAException.Create(lDataTable.Name +' is not accessible'); + + lDataSet := nil; + end; { for } + + + if lHasTransaction and Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if lHasTransaction and Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; +end; + +function TDataAbstractService.GetSchema(const aFilter: Utf8String): Utf8String; +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetSchema)'); + + Result := InternalGetSchema(aFilter); +end; + +function TDataAbstractService.GetCommandSchema(const aCommandNameArray: StringArray): Utf8String; +var + lxml: IXMLDocument; + i: integer; + lSQLCommand: TDASQLCommand; + lCommand: string; +begin + if not AllowSchemaAccess then + raise Exception.Create('Schema access has been disabled (GetCommandSchema)'); + + if not Assigned(ServiceSchema) then + raise Exception.Create('ServiceSchema property is not assigned.'); + + // Returns the schema + lxml := NewROXmlDocument; + lxml.New('Commands'); + try + for i := 0 to aCommandNameArray.Count - 1 do begin + lCommand:=UTF8ToString(aCommandNameArray[i]); + CheckUTF8Decode(aCommandNameArray[i], lCommand); + lSQLCommand:=ServiceSchema.Commands.SQLCommandByName(lCommand); + if lSQLCommand <> nil then begin + if not lSQLCommand.IsPublic then + raise EDAException.Create(lSqlCommand.Name +' is not accessible'); + SaveObjectToXMLNode(lSQLCommand, lxml.DocumentNode.Add('SchemaCommand'), [], [], False); + end; + end; + result := UTF8Encode(lxml.DocumentNode.XML); + finally + lxml := nil; + end; +end; + +{ IDataAbstractService: Data Access } + +function TDataAbstractService.GetData(const aTableNameArray: StringArray; const aTableRequestInfoArray: TableRequestInfoArray): Binary; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (GetData)'); + + result := nil; + if not assigned(aTableNameArray) or (aTableNameArray.Count = 0) then exit; + + if assigned(aTableRequestInfoArray) and (aTableNameArray.Count <> aTableRequestInfoArray.Count) then + raise Exception.Create('Number of items passed to aTableNameArray and aTableRequestInfoArray do not match.'); + + Check(True); + + result := Binary.Create; + Result.CapacityIncrement := ServiceDataStreamer.BufferSize; + try + ServiceDataStreamer.Initialize(result, aiWrite); + try + InternalGetData(aTableNameArray,aTableRequestInfoArray, ServiceDataStreamer); + finally + ServiceDataStreamer.Finalize(); + end; + except + FreeAndNIL(result); + raise; + end; +end; + +//TODO: needs cleaning! +function TDataAbstractService.UnpackDeltas(aDeltaList: IDeltaArray; DeltaStructList: TDADeltaStructList): TDADeltasModes; +var + i, j: integer; + lDeltaName: string; + lBizProc: TDABusinessProcessor; + lDetails : TDADatasetRelationshipList; + lFound: boolean; + lStruct : TDADeltaStruct; + ltabRef: TDADataTableReference; +begin + result := []; + if (Length(aDeltaList) = 0) then Exit; + for i := 0 to Length(aDeltaList) - 1 do begin + lDeltaName := aDeltaList[i].LogicalName; + if (ExportedDataTables.Count >0) then begin + ltabRef := ExportedDataTables.FindByName(lDeltaName); + if Assigned(ltabRef) then begin + // for ExportedDataTables , BP=nil + DeltaStructList.Add(aDeltaList[i], nil); + Result:=Result+[dumExported]; + Continue; + end; + end; + lFound := false; + { Tries to locate a user-defined business processor } + for j := 0 to (Self.ComponentCount - 1) do begin + if (Self.Components[j] is TDABusinessProcessor) then begin + lBizProc := TDABusinessProcessor(Self.Components[j]); + if SameText(lBizProc.ReferencedDataset, lDeltaName) and (lBizProc.Schema = fServiceSchema) then begin + DeltaStructList.Add(aDeltaList[i], lBizProc); + if fHasReducedDelta then begin + if (lBizProc.InsertCommandName <> '') or + (lBizProc.DeleteCommandName <> '') or + (lBizProc.UpdateCommandName <> '') or + ([poAutoGenerateInsert,poAutoGenerateUpdate,poAutoGenerateDelete]*lBizProc.ProcessorOptions <>[poAutoGenerateInsert,poAutoGenerateUpdate,poAutoGenerateDelete]) then + raise Exception.Create('SendReducedDelta option is incompatible with '+lBizProc.Name+' settings'); + end; + lFound := true; + Break; + end; + end; + end; + + { Either creates one or aborts raising an exception } + if not lFound then begin + if not AutoCreateBusinessProcessors then + raise Exception.CreateFmt(err_DARDMCannotFindProxessorForDelta, [lDeltaName]); + + //ToDo: this will never get freed, until the DM frees? + lBizProc := TDABusinessProcessor.Create(self); + lBizProc.ReferencedDataset := lDeltaName; + lBizProc.Schema := ServiceSchema; + lBizProc.RaiseExceptionAtError := not fReturnUpdateFailureDelta; + if Assigned(fOnBusinessProcessorAutoCreated) then fOnBusinessProcessorAutoCreated(Self, lBizProc); + + DeltaStructList.Add(aDeltaList[i], lBizProc); + end; + + Result:=Result+[dumStandard]; + end; + fHasReducedDelta := ServiceDataStreamer.HasReducedDelta; + if not (dumStandard in Result) then exit; // nothing to process + Check; + { Sets the master/detail relationships } + if (ServiceSchema.RelationShips.Count>0) then begin + + lDetails := TDADatasetRelationshipList.Create; + try + for i := 0 to DeltaStructList.Count-1 do begin + ServiceSchema.RelationShips.GetDetails(DeltaStructList[i].BusinessProcessor.ReferencedDataset, lDetails); + if (lDetails.Count=0) then Continue; + + { Prepares an array with the references to the detail deltas that will be used later on to adjust + autoincs, etc. } + for j := 0 to lDetails.Count-1 do begin + lStruct := DeltaStructList.FindStruct(lDetails[j].DetailDatasetName); + if assigned(lStruct) then begin + DeltaStructList[i].DetailDeltas.Add(lStruct.Delta); + DeltaStructList[i].RelationShips.Add(lDetails[j]); + end; + end; + end; + finally + lDetails.Free; + end; + + end; +end; + +function TDataAbstractService.UpdateData(const aDelta: Binary): Binary; +var + aDeltaList: IDeltaArray; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.DoUpdateData + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (UpdateData)'); + + if not AllowUpdates then + raise Exception.Create('Data updates have been disabled (UpdateData)'); + + fHasReducedDelta := False; + aDeltaList := ReadDeltaFromStream(aDelta); + try + InternalUpdateData(aDeltaList); + result := PackDeltas(aDeltaList); + finally + SetLength(aDeltaList,0); + end; +end; + +function TDataAbstractService.ExecuteCommand(const aCommandName: Utf8String; const aParameterArray: DataParameterArray): Integer; +var + aOutputParameters: DataParameterArray; +begin + Result := ExecuteCommandEx(aCommandName,aParameterArray, aOutputParameters); + aOutputParameters.Free; +end; + +{ IDataAbstractService: Direct SQL Access } + +function TDataAbstractService.SQLGetDataEx(const aSQLText: Utf8String; + const aIncludeSchema: Boolean; const aMaxRecords: Integer; + const aDynamicWhereXML: Widestring): Binary; +var + lOptions: TDAWriteOptions; + lDataSet: IDADataSet; + lAllow: boolean; + lSQLText: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (SQLGetData)'); + + if not AllowExecuteSQL then + raise Exception.Create('Execution of SQL has been disabled (SQLGetData)'); + + if assigned(fHETConnection) then + raise Exception.Create('Execution of SQL isnot supported for HET Connections'); + + result := nil; + lSQLText := UTF8ToString(aSQLText); + CheckUTF8Decode(aSQLText,lSQLText); + if lSQLText = '' then exit; + + Check(); + + lAllow := true; + if assigned(fSQLValidation) then fSQLValidation(self, Connection, lSQLText, [], [], lAllow); + if not lAllow then raise EDADatasetNotAccessible.Create(err_SQLNotPermitted); + + result := Binary.Create; + Result.CapacityIncrement := ServiceDataStreamer.BufferSize; + try + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then InternalStartTransaction; + try + ServiceDataStreamer.Initialize(result, aiWrite); + try + + lOptions := [woRows]; + if aIncludeSchema then lOptions := lOptions+[woSchema]; + + lDataSet := Connection.NewDataset(lSQLText,'SQLResult'); + try + if aDynamicWhereXML <> '' then lDataSet.DynamicWhere.Expression := lDataSet.DynamicWhere.XMLToExpression(aDynamicWhereXML); + if (woSchema in lOptions) and Assigned(fBeforeGetDatasetSchema) then fBeforeGetDatasetSchema(self, lDataset); + if (woRows in lOptions) and Assigned(fBeforeGetDatasetData) then fBeforeGetDatasetData(self, lDataset, (woSchema in lOptions), aMaxRecords); + + lDataSet.Open(); + + ServiceDataStreamer.WriteDataset(lDataset, lOptions, aMaxRecords); + + if (woRows in lOptions) and Assigned(fAfterGetDatasetData) then fAfterGetDatasetData(self, lDataset, (woSchema in lOptions), aMaxRecords); + if (woSchema in lOptions) and Assigned(fAfterGetDatasetSchema) then fAfterGetDatasetSchema(self, lDataset); + + finally + lDataSet := nil; + end; + + finally + ServiceDataStreamer.Finalize(); + end; + + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; + + except + FreeAndNIL(result); + raise; + end; + +end; + +function TDataAbstractService.SQLExecuteCommandEx(const aSQLText: Utf8String; const aDynamicWhereXML: Widestring): Integer; +var + lAllow: boolean; + lSQLText: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (SQLExecuteCommand)'); + + if not AllowExecuteSQL then + raise Exception.Create('Execution of SQL has been disabled (SQLExecuteCommand)'); + + if assigned(fHETConnection) then + raise Exception.Create('Execution of SQL isnot supported for HET Connections'); + + Check(); + lSQLText := UTF8ToString(aSQLText); + CheckUTF8Decode(aSQLText,lSQLText); + lAllow := true; + if assigned(fSQLValidation) then fSQLValidation(self, Connection, lSQLText, [], [], lAllow); + if not lAllow then raise EDADatasetNotAccessible.CreateFmt(err_SQLNotPermitted, []); + + if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then InternalStartTransaction; + try + with Connection.NewCommand(lSQLText, stSQL) do begin + if aDynamicWhereXML <> '' then DynamicWhere.Expression := DynamicWhere.XMLToExpression(aDynamicWhereXML); + result := Execute; + end; + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataCommitTransaction) then Connection.CommitTransaction; + except + if Connection.InTransaction and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction) then Connection.RollbackTransaction; + raise; + end; +end; + +{ Properties } + +procedure TDataAbstractService.SetExportedDataTables(const Value: TDADataTableReferenceCollection); +begin + fExportedDataTables.Assign(Value); +end; + +procedure TDataAbstractService.SetServiceDataStreamer(const Value: TDADataStreamer); +begin + if fServiceDataStreamer <> Value then begin + if (fServiceDataStreamer <> nil) then fServiceDataStreamer.RORemoveFreeNotification(Self); + fServiceDataStreamer := Value; + if (fServiceDataStreamer <> nil) then fServiceDataStreamer.ROFreeNotification(Self); + end; +end; + +procedure TDataAbstractService.SetServiceSchema(const Value: TDASchema); +begin + if fServiceSchema <> Value then begin + if assigned(fServiceSchema) then fServiceSchema.RORemoveFreeNotification(self); + fServiceSchema := Value; + if assigned(fServiceSchema) then fServiceSchema.ROFreeNotification(self); + end; +end; + +{ Connections } + +function TDataAbstractService.GetConnection: IDAConnection; +var + lConnectionName: string; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.GetConnection + inherited; + result := fConnection; + if assigned(fConnection) then exit; + if (csDesigning in ComponentState) then exit; + + if AcquireConnection then try + + if (fServiceSchema = nil) or (fServiceSchema.ConnectionManager = nil) then raise Exception.Create(err_DARDMInvalidSchema); + + lConnectionName := ConnectionName; + if Assigned(fBeforeAcquireConnection) then fBeforeAcquireConnection(Self, lConnectionName); + + result := ServiceSchema.ConnectionManager.NewConnection(lConnectionName); + Connection := result; + if Assigned(fAfterAcquireConnection) then fAfterAcquireConnection(Self, lConnectionName, result); + + except + on E: Exception do begin + if Assigned(fOnAcquireConnectionFailure) then fOnAcquireConnectionFailure(Self, lConnectionName, E); + raise; + end; + end; +end; + +{$WARN SYMBOL_DEPRECATED OFF} +procedure TDataAbstractService.SetConnection(aConnection: IDAConnection); +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.SetConnection + + if fConnection <> aConnection then begin + fConnection := aConnection; + if not Supports(fConnection, IDAHETConnection, fHETConnection) then fHETConnection := nil; + end; +end; +{$WARN SYMBOL_DEPRECATED ON} + +function TDataAbstractService.GetConnectionForObject(const aName: string): IDAConnection; +begin + // WARNING: any changes should be duplicated into TDALocalDataAdapter.GetConnectionForObject + + result := Connection; // forces acquisition of Connection + if assigned(fHETConnection) and (ServiceSchema.UnionDataTables.FindItem(aName) = nil) then + result := fHETConnection.GetConnectionForObject(aName) +end; + +procedure TDataAbstractService.DoOnDeactivate(aClientID: TGUID); +begin + inherited; + if (csDesigning in ComponentState) then Exit; + + ReleaseConnection(); +end; + +procedure TDataAbstractService.ReleaseConnection; +var + lConnectionName: string; +begin + if assigned(fConnection) then begin + lConnectionName := fConnection.Name; + if Assigned(fBeforeReleaseConnection) then fBeforeReleaseConnection(Self, lConnectionName, fConnection); + Connection := nil; + if Assigned(fAfterReleaseConnection) then fAfterReleaseConnection(Self, lConnectionName); + end; +end; + +procedure TDataAbstractService.Assign(Source: TPersistent); +var + lSource: TDataAbstractService; +begin + inherited; + if Source is TDataAbstractService then begin + lSource := TDataAbstractService(Source); + + AcquireConnection := lSource.AcquireConnection; + AfterAcquireConnection := lSource.AfterAcquireConnection; + AfterExecuteCommand := lSource.AfterExecuteCommand; + AfterGetDatasetData := lSource.AfterGetDatasetData; + AfterGetDatasetSchema := lSource.AfterGetDatasetSchema; + AfterProcessDeltas := lSource.AfterProcessDeltas; + AfterReleaseConnection := lSource.AfterReleaseConnection; + AllowDataAccess := lSource.AllowDataAccess; + AllowDynamicSelect := lSource.AllowDynamicSelect; + AllowDynamicWhere := lSource.AllowDynamicWhere; + AllowExecuteCommands := lSource.AllowExecuteCommands; + AllowExecuteSQL := lSource.AllowExecuteSQL; + AllowSchemaAccess := lSource.AllowSchemaAccess; + AllowUpdates := lSource.AllowUpdates; + AllowWhereSQL := lSource.AllowWhereSQL; + AutoCreateBusinessProcessors := lSource.AutoCreateBusinessProcessors; + BeforeAcquireConnection := lSource.BeforeAcquireConnection; + BeforeExecuteCommand := lSource.BeforeExecuteCommand; + BeforeGetDatasetData := lSource.BeforeGetDatasetData; + BeforeGetDatasetSchema := lSource.BeforeGetDatasetSchema; + BeforeProcessDeltas := lSource.BeforeProcessDeltas; + BeforeReleaseConnection := lSource.BeforeReleaseConnection; + ConnectionName := lSource.ConnectionName; + ExportedDataTables := lSource.ExportedDataTables; + OnAcquireConnectionFailure := lSource.OnAcquireConnectionFailure; + OnBusinessProcessorAutoCreated := lSource.OnBusinessProcessorAutoCreated; + OnGetSchemaAsXMLEvent := lSource.OnGetSchemaAsXMLEvent; + OnProcessDeltasError := lSource.OnProcessDeltasError; + OnUpdateDataBeginTransaction := lSource.OnUpdateDataBeginTransaction; + OnUpdateDataCommitTransaction := lSource.OnUpdateDataCommitTransaction; + OnUpdateDataRollBackTransaction := lSource.OnUpdateDataRollBackTransaction; + ProcessDeltasWithoutUpdateRules := lSource.ProcessDeltasWithoutUpdateRules; + ReturnUpdateFailureDelta := lSource.ReturnUpdateFailureDelta; + ServiceDataStreamer := lSource.ServiceDataStreamer; + ServiceSchema := lSource.ServiceSchema; + ValidateCommandExecution := lSource.ValidateCommandExecution; + ValidateDatasetAccess := lSource.ValidateDatasetAccess; + ValidateDirectSQLAccess := lSource.ValidateDirectSQLAccess; + end; +end; + +procedure TDataAbstractService.Check(CheckOnlyDataStreamer:Boolean = false); +begin + if not CheckOnlyDataStreamer then Check2; + if not Assigned(ServiceDataStreamer) then + raise EROException.Create('DataStreamer must be assigned.'); +end; + +function TDataAbstractService.ExecuteCommandEx(const aCommandName: Utf8String; + const aInputParameters: DataParameterArray; + out aOutputParameters: DataParameterArray): Integer; +var + lCommandName: string; +begin + if not AllowDataAccess then + raise Exception.Create('Data access has been disabled (ExecuteCommand)'); + + if not AllowExecuteCommands then + raise Exception.Create('Execution of commands has been disabled (ExecuteCommand)'); + + lCommandName:= UTF8ToString(aCommandName); + CheckUTF8Decode(aCommandName,lCommandName); + Result := InternalExecuteCommandEx(lCommandName,aInputParameters,aOutputParameters); +end; + +type + TMyDatasetCollection = class(TDADatasetCollection) + end; + +function TDataAbstractService.GetDatasetScripts(const DatasetNames: Utf8String): Utf8String; +var names : TStringList; + i : integer; + ds : TDADataset; + lResult: UnicodeString; + lLogicalName: string; +begin + lresult := ''; + names := TStringList.Create; + try + names.CommaText := UTF8ToString(DatasetNames); + CheckUTF8Decode(DatasetNames,names.CommaText); + for i := 0 to (names.Count-1) do begin + // scripts for externaltables is not allowed + lLogicalName := names[i]; + if fExportedDataTables.FindByName(lLogicalName) <> nil then continue; + ds := ServiceSchema.Datasets.FindDatasetByName(lLogicalName); + if not assigned(ds) then + ds := ServiceSchema.UnionDataTables.FindUnionDataTableByName(lLogicalName); + if not assigned(ds) then + ds := ServiceSchema.JoinDataTables.FindJoinTableByName(lLogicalName); + with TMyDatasetCollection(ServiceSchema.Datasets) do + if ds = nil then EDAException.CreateFmt(err_CannotFindItem, [ItemName, lLogicalName, ClassName]); + + lresult := lresult+Format('<%s Language="%s">', [ + lLogicalName, + GetEnumName(TypeInfo(TROSEScriptLanguage), Ord(ds.BusinessRulesClient.ScriptLanguage)), + ds.BusinessRulesClient.Script, + lLogicalName]); + end; + + result := UTF8Encode(''+lresult+''); + finally + FreeAndNIL(names); + end; +end; + +procedure TDataAbstractService.ExportedDataTables_MergeDelta(ADelta: IDADelta); +var + i, k, x: integer; + oldval, newval, val : Variant; + fld : TDAField; + pkfields : string; + pkfields1: array of string; + insertfields: array of string; + keyvals, insertvals : array of variant; + LDAEditableDataset:IDAEditableDataset; + ADataset: IDADataset; + pk_array: array of boolean; +begin + // validated in UnpackDeltas + ADataset:=ExportedDataTables.FindByName(ADelta.LogicalName).Dataset; + SetLength(pk_array, ADelta.LoggedFieldCount); + for i := 0 to ADelta.LoggedFieldCount - 1 do + pk_array[i]:=False; + + for i := 0 to ADelta.KeyFieldCount - 1 do begin + x := ADelta.IndexOfLoggedField(ADelta.KeyFieldNames[i]); + if x <> -1 then pk_array[x]:=True; + end; + + SetLength(pkfields1, ADelta.KeyFieldCount); + for i := 0 to (ADelta.KeyFieldCount-1) do + pkfields1[i]:=ADelta.KeyFieldNames[i]; + if ADelta.KeyFieldCount = 0 then + begin + SetLength(pkfields1, ADelta.LoggedFieldCount); + k:=-1; + for i := 0 to (ADelta.LoggedFieldCount-1) do begin + if ADelta.LoggedFieldTypes[i] in [datUnknown, datMemo, datBlob,datWideMemo, datXml] then Continue; + inc(k); + pkfields1[k]:=ADelta.LoggedFieldNames[i]; + end; + SetLength(pkfields1,k+1); + end; + SetLength(keyvals, Length(pkfields1)); + pkfields := ''; + For i:=0 to Length(pkfields1) - 1 do + pkfields:=pkfields+pkfields1[i]+';'; + pkfields := Copy(pkfields, 1, Length(pkfields)-1); + + if (ADelta.Count>0) then begin + for i := (ADelta.Count-1) downto 0 do begin + for k := 0 to Length(pkfields1)-1 do begin + val := ADelta[i].OldValueByName[pkfields1[k]]; + keyvals[k] := val; + end; + if fHasReducedDelta and (ADelta.KeyFieldCount = 0) then begin + SetLength(pkfields1, ADelta.LoggedFieldCount); + k:=-1; + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + if ADelta.LoggedFieldTypes[x] in [datUnknown, datMemo, datBlob,datWideMemo, datXml] then Continue; + pkfields:=ADelta.LoggedFieldNames[x]; + oldval:=ADelta[i].OldValueByName[pkfields]; + if ROVariantsEqual(oldval,ADelta[i].NewValueByName[pkfields]) and (VarIsNull(oldval) or (VarIsEmpty(oldval))) then Continue; + inc(k); + pkfields1[k]:=ADelta.LoggedFieldNames[x]; + end; + SetLength(pkfields1,k+1); + SetLength(keyvals,k+1); + for k := 0 to Length(pkfields1)-1 do begin + val := ADelta[i].OldValueByName[pkfields1[k]]; + keyvals[k] := val; + end; + pkfields := ''; + For x:=0 to Length(pkfields1) - 1 do + pkfields:=pkfields+pkfields1[x]+';'; + pkfields := Copy(pkfields, 1, Length(pkfields)-1); + end; + if ADataset.QueryInterface(StringToGUID('{D3E2147F-65B3-4D9D-8614-7270011FA7D5}'),LDAEditableDataset) <> 0 then exit; + LDAEditableDataset.Open; + LDAEditableDataset.First; + case ADelta[i].ChangeType of + ctDelete: begin + // Locates the original record + if Length(keyvals)=1 then begin + if not Adataset.Locate(pkfields, keyvals[0], []) then Continue; + end + else begin + if not Adataset.Locate(pkfields, keyvals, []) then Continue; + end; + LDAEditableDataset.Delete; + end; + ctInsert: begin + // fHasReducedDelta don't work in this case + // old values = Unassigned + // new Values = Null + SetLength(insertFields, ADelta.LoggedFieldCount); + SetLength(insertvals, ADelta.LoggedFieldCount); + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + insertfields[x] := ADelta.LoggedFieldNames[x]; + insertvals[x] := ADelta[i].NewValueByName[ADelta.LoggedFieldNames[x]]; + end; + LDAEditableDataset.AddRecord(insertfields,insertvals); + end; + ctUpdate: begin + // Locates the original record + if Length(keyvals)=1 then begin + if not Adataset.Locate(pkfields, keyvals[0], []) then Continue; + end + else begin + if not Adataset.Locate(pkfields, keyvals, []) then Continue; + end; + LDAEditableDataset.Edit; + for x := 0 to (ADelta.LoggedFieldCount-1) do begin + fld := Adataset.FieldByName(ADelta.LoggedFieldNames[x]); + newval := ADelta[i].NewValueByName[fld.Name]; + oldval := ADelta[i].OldValueByName[fld.Name]; + if fHasReducedDelta and (ROVariantsEqual(newval, oldval)) then Continue; + fld.Value:=newval; +{ if fld.ServerAutoRefresh or (not VarIsArray(newVal) and (newval<>oldval)) then begin + VariantToFieldValue(newval, fld); + end; +} + end; + LDAEditableDataset.Post; + end; + end; + // Removes this merged change + ADelta.Delete(i); + end; + end +end; + +function TDataAbstractService.ReadDeltaFromStream(const DeltaStream: Binary): IDeltaArray; +var + i: integer; + lDeltaName: string; +begin + SetLength(result,0); + Check(True); + // Reads the deltas. + ServiceDataStreamer.Initialize(DeltaStream, aiReadFromBeginning); + try + fHasReducedDelta := ServiceDataStreamer.HasReducedDelta; + SetLength(result,ServiceDataStreamer.DeltaCount); + for i := 0 to (ServiceDataStreamer.DeltaCount - 1) do begin + lDeltaName := ServiceDataStreamer.DeltaNames[i]; + Result[i] := NewDelta(lDeltaName); + ServiceDataStreamer.ReadDelta(lDeltaName, Result[i]); + end; + finally + ServiceDataStreamer.Finalize; + end; +end; + +procedure TDataAbstractService.RegisterForDataChangeNotification( + const aTableName: Utf8String); +begin +{ TODO : todo } +end; + +procedure TDataAbstractService.UnregisterForDataChangeNotification( + const aTableName: Utf8String); +begin +{ TODO : todo } +end; + +function TDataAbstractService.SQLExecuteCommand(const aSQLText: Utf8String): Integer; +begin + Result:= SQLExecuteCommandEx(aSQLText,''); +end; + +function TDataAbstractService.SQLGetData(const aSQLText: Utf8String; const aIncludeSchema: Boolean; const aMaxRecords: Integer): Binary; +begin + Result:= SQLGetDataEx(aSQLText, aIncludeSchema, aMaxRecords, ''); +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj new file mode 100644 index 0000000..4c974b2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_Core_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Core Library + False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + + + DESIGNTIME + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 0 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 0.0.0.0 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg new file mode 100644 index 0000000..11c667c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.cfg @@ -0,0 +1,48 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-DDESIGNTIME +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk new file mode 100644 index 0000000..1836908 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.dpk @@ -0,0 +1,117 @@ +package DataAbstract_Core_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D10, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + //.31 + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + // + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res new file mode 100644 index 0000000..6a57c43 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk new file mode 100644 index 0000000..f56be5d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dpk @@ -0,0 +1,117 @@ +package DataAbstract_Core_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} +{$DEFINE RELEASE} + +requires + RemObjects_Core_D11, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj new file mode 100644 index 0000000..dd437f4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.dproj @@ -0,0 +1,668 @@ + + + {f3a56007-69a7-443a-8fdf-56da71a8440c} + DataAbstract_Core_D11.dpk + Release + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Core_D11.bpl + + + 7.0 + False + False + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + DESIGNTIME;RELEASE + False + False + False + False + False + False + False + False + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + + + 7.0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + DESIGNTIME + False + False + False + False + False + False + False + False + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\RemObjects SDK for Delphi\Dcu\D11 + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Core LibraryFalseFalseFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_Core_D11.dpk + + + + + + + + + + + + + + + + + + + + + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + MainSource + + + + + + + + + +
BaseLoginService
+ TRORemoteDataModule +
+ + + + + + + + + +
DataAbstractService
+ TRORemoteDataModule +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ReconcileDialogForm
+
+ + + + + + + + + + + + + + + + + +
+
+ + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk new file mode 100644 index 0000000..0523a14 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dpk @@ -0,0 +1,117 @@ +package DataAbstract_Core_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb, + RemObjects_Core_D12; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXmlAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + //.31 + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + // + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dproj new file mode 100644 index 0000000..814624d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.dproj @@ -0,0 +1,177 @@ + + + {f3a56007-69a7-443a-8fdf-56da71a8440c} + DataAbstract_Core_D12.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D12\DataAbstract_Core_D12.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + ..\..\RemObjects SDK for Delphi\Dcu\D12;..\Dcu\D12;$(DCC_UnitSearchPath) + ..\Dcu\D12 + error + error + error + error + ..\Dcu\D12 + error + ..\Dcu\D12 + true + true + true + false + 00400000 + ..\Dcu\D12\DataAbstract_Core_D12.bpl + RemObjects Data Abstract - Core Library + DESIGNTIME;$(DCC_Define) + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DataAbstractService
+ TRORemoteDataModule +
+ + +
BaseLoginService
+ TRORemoteDataModule +
+ + + + + + + + + + + + + + + +
ReconcileDialogForm
+
+ + + + + + + + + + + + + + + + + + Base + +
+ + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 4 + 0 + 2 + 434 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 4.0.2.434 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_Core_D12.dpk + + + + + 12 + +
diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dpk new file mode 100644 index 0000000..c2e7fa5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dpk @@ -0,0 +1,116 @@ +package DataAbstract_Core_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} +{$WARN UNIT_DEPRECATED OFF} +requires + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb, + RemObjects_Core_D14; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXmlAdapter in 'uDAXmlAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dproj new file mode 100644 index 0000000..08aee1a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.dproj @@ -0,0 +1,182 @@ + + + {f3a56007-69a7-443a-8fdf-56da71a8440c} + DataAbstract_Core_D14.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D12\DataAbstract_Core_D12.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + ..\..\RemObjects SDK for Delphi\Dcu\D14;..\Dcu\D14;$(DCC_UnitSearchPath) + ..\Dcu\D14 + error + error + error + error + ..\Dcu\D14 + error + ..\Dcu\D14 + true + true + true + false + 00400000 + ..\Dcu\D14\DataAbstract_Core_D14.bpl + RemObjects Data Abstract - Core Library + DESIGNTIME;$(DCC_Define) + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DataAbstractService
+ TRORemoteDataModule +
+ + +
BaseLoginService
+ TRORemoteDataModule +
+ + + + + + + + + + + + + + + +
ReconcileDialogForm
+
+ + + + + + + + + + + + + + + + + + + + + + + Base + +
+ + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 4 + 0 + 2 + 434 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 4.0.2.434 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_Core_D14.dpk + + + + + 12 + +
diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg new file mode 100644 index 0000000..3d4736d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-U"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-DDESIGNTIME +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof new file mode 100644 index 0000000..ff6f0ce --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Core Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath=..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals=DESIGNTIME +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk new file mode 100644 index 0000000..4abdb86 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.dpk @@ -0,0 +1,117 @@ +package DataAbstract_Core_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D6, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + //.31 + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + // + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res new file mode 100644 index 0000000..8c3fa75 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg new file mode 100644 index 0000000..d9c7e92 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.cfg @@ -0,0 +1,51 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-U"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-O"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-I"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-R"..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7" +-DDESIGNTIME +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof new file mode 100644 index 0000000..19785e8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Core Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath=..\Dcu\D7;..\Dcu\DevEx;..\..\RemObjects SDK for Delphi\Dcu\D7;..\..\Pascal Script\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals=DESIGNTIME +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.286 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk new file mode 100644 index 0000000..ef48c51 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.dpk @@ -0,0 +1,117 @@ +package DataAbstract_Core_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Core Library'} +{$IMPLICITBUILD OFF} +{$DEFINE DESIGNTIME} + +requires + RemObjects_Core_D7, + rtl, + vcl, + adortl, + dbrtl, + dsnap, + vcldb; + +contains + uDAInterfaces in 'uDAInterfaces.pas', + uDAInterfacesEx in 'uDAInterfacesEx.pas', + uDAClasses in 'uDAClasses.pas', + uDAHelpers in 'uDAHelpers.pas', + uDAEngine in 'uDAEngine.pas', + uDAUtils in 'uDAUtils.pas', + uDARes in 'uDARes.pas', + DataAbstract_Core_Reg in 'DataAbstract_Core_Reg.pas', + uDABinAdapter in 'uDABinAdapter.pas', + uDAXMLAdapter in 'uDAXMLAdapter.pas', + uDADriverManager in 'uDADriverManager.pas', + uDASupportClasses in 'uDASupportClasses.pas', + uDADataTable in 'uDADataTable.pas', + uDACDSDataTable in 'uDACDSDataTable.pas', + uDAADODataTable in 'uDAADODataTable.pas', + uDABusinessProcessor in 'uDABusinessProcessor.pas', + uDAIBInterfaces in 'uDAIBInterfaces.pas', + uDAOracleInterfaces in 'uDAOracleInterfaces.pas', + uDAADOInterfaces in 'uDAADOInterfaces.pas', + uDAMacroProcessors in 'uDAMacroProcessors.pas', + uDADBSessionManager in 'uDADBSessionManager.pas', + uDAMacros in 'uDAMacros.pas', + DALoginService_Impl in 'DALoginService_Impl.pas', + DARemoteService_Impl in 'DARemoteService_Impl.pas', + uDAXMLUtils in 'uDAXMLUtils.pas', + uDARegExpr in 'uDARegExpr.pas', + uDADriverInfo in 'uDADriverInfo.pas', + uDAPleaseWaitForm in 'uDAPleaseWaitForm.pas', + uDAClientDataModule in 'uDAClientDataModule.pas', + uDAScriptingProvider in 'uDAScriptingProvider.pas', + uDAServerLog in 'uDAServerLog.pas', + uDADatasetProvider in 'uDADatasetProvider.pas', + uDAPoweredByDataAbstractButton in 'uDAPoweredByDataAbstractButton.pas', + SimpleLoginService_Impl in 'SimpleLoginService_Impl.pas', + DataAbstract3_Intf in 'DataAbstract3_Intf.pas', + DataAbstract3_Invk in 'DataAbstract3_Invk.pas', + DataAbstract3_Async in 'DataAbstract3_Async.pas', + DataAbstractService_Impl in 'DataAbstractService_Impl.pas' {DataAbstractService: TRORemoteDataModule}, + MultiDbLoginService_Impl in 'MultiDbLoginService_Impl.pas', + BaseLoginService_Impl in 'BaseLoginService_Impl.pas' {BaseLoginService: TRORemoteDataModule}, + DataAbstract4_Invk in 'DataAbstract4_Invk.pas', + DataAbstract4_Intf in 'DataAbstract4_Intf.pas', + DataAbstract4_Async in 'DataAbstract4_Async.pas', + uDARemoteDataAdapter in 'uDARemoteDataAdapter.pas', + uDACache in 'uDACache.pas', + uDARemoteDataAdapterRequests in 'uDARemoteDataAdapterRequests.pas', + uDADataStreamer in 'uDADataStreamer.pas', + uDADelta in 'uDADelta.pas', + uDADesigntimeCall in 'uDADesigntimeCall.pas', + uDAExceptions in 'uDAExceptions.pas', + uDASQL92Interfaces in 'uDASQL92Interfaces.pas', + uDABin2DataStreamer in 'uDABin2DataStreamer.pas', + uDAMemDataset in 'uDAMemDataset.pas', + uDAMemDataTable in 'uDAMemDataTable.pas', + uDAReconcileDialog in 'uDAReconcileDialog.pas' {ReconcileDialogForm}, + uDAReconcileDialogDetails in 'uDAReconcileDialogDetails.pas', + uDADatasetWrapper in 'uDADatasetWrapper.pas', + uDADataTableReferenceCollection in 'uDADataTableReferenceCollection.pas', + uDAMySQLInterfaces in 'uDAMySQLInterfaces.pas', + uDASQLiteInterfaces in 'uDASQLiteInterfaces.pas', + uDAExpressionEvaluator in 'uDAExpressionEvaluator.pas', + uDASQL92QueryBuilder in 'uDASQL92QueryBuilder.pas', + uDAWhere in 'uDAWhere.pas', + uDARemoteCommand in 'uDARemoteCommand.pas', + uDAPostgresInterfaces in 'uDAPostgresInterfaces.pas', + uDAElevateDBInterfaces in 'uDAElevateDBInterfaces.pas', + uDADB2Interfaces in 'uDADB2Interfaces.pas', + uDASybaseInterfaces in 'uDASybaseInterfaces.pas', + MultiDbLoginServiceV5_Impl in 'MultiDbLoginServiceV5_Impl.pas', + //.31 + uDAHETDriver in 'uDAHETDriver.pas', + uDAHETConnections in 'uDAHETConnections.pas', + // + uDAJSONDataStreamer in 'uDAJSONDataStreamer.pas', + uDALocalDataAdapter in 'uDALocalDataAdapter.pas', + uDADataAdapter in 'uDADataAdapter.pas', + uDALocalHelpers in 'uDALocalHelpers.pas', + uDALocalCommand in 'uDALocalCommand.pas'; +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs new file mode 100644 index 0000000..881fc96 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.lrs @@ -0,0 +1,1856 @@ +LazarusResources.Add('TDABIN2DATASTREAMER','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#142']' + +'Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y' + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#225#189#255#221#181#255#217#172#255 + +#213#165#255#211#157#255#207#151#255#203#145#255#201#140#255#199#135#128'PK' + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0 + +#0#255#231#203#0#0#0#0#0#0#255#220#178#255#216#171#0#0#0#0#0#0#0#0#0#255#203 + +#143#128'PK'#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#255 + +#238#217#0#0#0#255#230#199#0#0#0#255#221#182#0#0#0#255#215#166#255#211#159 + +#255#207#152#128'PK'#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128 + +#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0#0 + +#255#243#229#0#0#0#0#0#0#255#233#204#255#229#197#255#224#187#0#0#0#255#216 + +#171#255#213#165#128'PK'#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128 + +#0#0'@'#0#0#255#250#242#0#0#0#255#242#225#0#0#0#255#234#209#255#231#203#255 + +#227#193#0#0#0#255#218#176#128'PK'#128#0#0#255#255#255#128#0#0#128#0#0#128#0 + +#0#255#255#255#255#255#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255 + +#255#128#0#0'@'#0#0#255#254#250#0#0#0#0#0#0#255#244#231#255#240#222#0#0#0#0#0 + +#0#255#229#198#255#225#189#128'PK'#128#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#128#0#0'@'#0#0#255#255#255#255#254#252#255#252#247 + +#255#250#242#255#246#235#255#243#227#255#239#220#255#235#211#255#231#203#128 + +'PK'#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#254#250#255#251#246#255#248#239#255#244#231#255#242#225#255#238#217 + +#128'PKHJK'#201#194#201#7'9z'#7'9z'#7'9z='#154#242'5'#149#239'-'#140#239#7'9' + +'z'#7'9z'#7'9zyyy'#194#140'm'#255#255#255#255#255#255#255#255#255#137#167#199 + +#7'9z'#137#167#199#255#252#248#247#240#235#226#218#209#226#216#204'{MIHJK' + +#206#199#204#191#184#192#7'9z@'#157#242'@'#157#242'@'#157#242'9'#152#240'2' + +#145#239#7'9zE_{yyy'#203#147'o'#255#255#255#255#255#255#137#167#199#7'9z'#15 + +'s'#233#7'9z'#137#167#199#234#233#230#182#180#176#182#177#171'uIEHJK'#209#202 + +#209#194#188#194'h'#129#163#7'9z@'#157#242'@'#157#242'@'#157#242#7'9zE_{{{{y' + +'yy'#209#153'r'#255#255#255#137#167#199#7'9z'#15's'#233#15's'#233#15's'#233#7 + +'9zURf'#160'g['#160'g['#149'\KHJK'#213#207#213#197#191#197#194#188#194'Qk' + +#138#7'9z@'#157#242#7'9zId'#128'yzzyyyyyy'#216#159'u'#137#167#199#7'9z'#27'}' + +#235#22'y'#234#18'u'#233#15's'#233#15's'#233#7'9z'#254#176'J'#240#145','#225 + +#132'.HJK'#217#213#217#201#196#202#199#192#198#150#146#152'0Kf'#7'9z,D^'#137 + +#137#137#127#127#127#130#130#131'yyy'#220#163'v'#7'9z'#7'9z'#7'9z'#31#130#235 + +#27'}'#235#22'y'#234#7'9z'#7'9z'#7'9z'#218#152'c'#255#0#255'HJK'#225#218#224 + +#207#201#206#199#192#198#151#150#153'UWX'#175#175#177'JLM'#137#137#137#128 + +#128#128#132#132#132#127#127#127#220#163'v'#209#146'm'#209#146'm'#7'9z-'#140 + +#239'%'#135#238#31#130#237#7'9zXTh'#212#154's'#255#0#255#255#0#255'HJK'#231 + +#226#230#212#207#211#225#218#224#152#149#152'UWX'#176#175#177'LNO'#150#149 + +#149#132#131#131'vvvyyy'#143#143#143#131#132#132'*C]'#7'9z7'#150#240'2'#146 + +#240#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#239#235#239 + +#235#233#235#198#197#199#160#157#161'UWX'#164#165#167';=>'#130#130#131#137 + +#137#137#143#143#143#137#137#137#147#147#147'Id'#128#7'9z@'#157#242'@'#157 + +#242'='#154#242#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK' + +#238#237#238#178#177#180#156#153#156#159#158#161'RTU'#235#235#237'ossY[Z'#7 + +'9z'#7'9z'#7'9z'#7'9z'#7'9z@'#157#242'@'#157#242#7'9z'#7'9z'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#237#235#237#129#129#130#213 + +#209#212#207#207#208'`cdprrxy{'#138#142#140#171#172#172'Xt'#146#7'9z'#7'9z'#7 + +'9z'#7'9z'#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255'HJK'#251#251#252#204#204#204#254#254#254#227#227#230#186 + +#184#188#151#149#152#136#134#137'xy{rssfihehi'#150#152#153#150#152#153'HJK' + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255'HJK'#255#255#255#251#251#252#238#238#242#237#238#240#231#230 + +#233#217#213#217#196#192#196#172#170#172#151#145#151#136#131#136#150#142#146 + +#136#129#131'HJK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#255#255#255#255#255#255#246#246 + ,#248#248#247#251#237#237#239#226#226#229#209#207#212#194#191#196#193#187#193 + +#167#159#165'HJKHJK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJKHJK'#255 + +#255#255#255#255#255#255#255#255#240#239#243#229#225#230#203#197#203'HJKHJK' + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255'LNOHJKHJKHJKHJKHJK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#0#0 +]); +LazarusResources.Add('TDABINDATASTREAMER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#142']' + +'Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y' + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#225#189#255#221#181#255#217#172#255 + +#213#165#255#211#157#255#207#151#255#203#145#255#201#140#255#199#135#128'PK' + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0 + +#0#255#231#203#255#227#194#255#224#187#255#220#178#255#216#171#0#0#0#0#0#0 + +#255#206#149#255#203#143#128'PK'#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0 + +#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0'@'#0#0#255#238#217#255#233#208#255#230#199#255#226#191#255#221#182#0 + +#0#0#255#215#166#0#0#0#255#207#152#128'PK'#128#0#0#255#255#255#128#0#0#255 + +#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255 + +#255#255#128#0#0'@'#0#0#255#243#229#255#240#222#255#235#213#255#233#204#255 + +#229#197#0#0#0#0#0#0#255#216#171#255#213#165#128'PK'#128#0#0#255#255#255#128 + +#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0'@'#0#0#7'9z'#255#246#233#255#242#225#255#238 + +#218#255#234#209#0#0#0#255#227#193#0#0#0#255#218#176#128'PK'#128#0#0#255#255 + +#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#128 + +#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#255#254#250#255#250#244#255#248 + +#239#255#244#231#255#240#222#0#0#0#0#0#0#255#229#198#255#225#189#128'PK'#128 + +#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0 + +#255#255#255#255#254#252#255#252#247#255#250#242#255#246#235#255#243#227#255 + +#239#220#255#235#211#255#231#203#128'PK'#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#254#250#255#251#246#255#248#239 + +#255#244#231#255#242#225#255#238#217#128'PKHJK'#201#194#201#7'9z'#7'9z'#7'9z' + +'='#154#242'5'#149#239'-'#140#239#7'9z'#7'9z'#7'9zyyy'#194#140'm'#255#255#255 + +#255#255#255#255#255#255#137#167#199#7'9z'#137#167#199#255#252#248#247#240 + +#235#226#218#209#226#216#204'{MIHJK'#206#199#204#191#184#192#7'9z@'#157#242 + +'@'#157#242'@'#157#242'9'#152#240'2'#145#239#7'9zE_{yyy'#203#147'o'#255#255 + +#255#255#255#255#137#167#199#7'9z'#15's'#233#7'9z'#137#167#199#234#233#230 + +#182#180#176#182#177#171'uIEHJK'#209#202#209#194#188#194'h'#129#163#7'9z@' + +#157#242'@'#157#242'@'#157#242#7'9zE_{{{{yyy'#209#153'r'#255#255#255#137#167 + +#199#7'9z'#15's'#233#15's'#233#15's'#233#7'9zURf'#160'g['#160'g['#149'\KHJK' + +#213#207#213#197#191#197#194#188#194'Qk'#138#7'9z@'#157#242#7'9zId'#128'yzzy' + +'yyyyy'#216#159'u'#137#167#199#7'9z'#27'}'#235#22'y'#234#18'u'#233#15's'#233 + +#15's'#233#7'9z'#254#176'J'#240#145','#225#132'.HJK'#217#213#217#201#196#202 + +#199#192#198#150#146#152'0Kf'#7'9z,D^'#137#137#137#127#127#127#130#130#131'y' + +'yy'#220#163'v'#7'9z'#7'9z'#7'9z'#31#130#235#27'}'#235#22'y'#234#7'9z'#7'9z' + +#7'9z'#218#152'c'#255#0#255'HJK'#225#218#224#207#201#206#199#192#198#151#150 + +#153'UWX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132#127#127#127 + +#220#163'v'#209#146'm'#209#146'm'#7'9z-'#140#239'%'#135#238#31#130#237#7'9zX' + +'Th'#212#154's'#255#0#255#255#0#255'HJK'#231#226#230#212#207#211#225#218#224 + +#152#149#152'UWX'#176#175#177'LNO'#150#149#149#132#131#131'vvvyyy'#143#143 + +#143#131#132#132'*C]'#7'9z7'#150#240'2'#146#240#7'9z'#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255'HJK'#239#235#239#235#233#235#198#197#199#160#157 + +#161'UWX'#164#165#167';=>'#130#130#131#137#137#137#143#143#143#137#137#137 + +#147#147#147'Id'#128#7'9z@'#157#242'@'#157#242'='#154#242#7'9z'#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255'HJK'#238#237#238#178#177#180#156#153#156 + +#159#158#161'RTU'#235#235#237'ossY[Z'#7'9z'#7'9z'#7'9z'#7'9z'#7'9z@'#157#242 + +'@'#157#242#7'9z'#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255'HJK'#237#235#237#129#129#130#213#209#212#207#207#208'`cdprrxy{'#138 + +#142#140#171#172#172'Xt'#146#7'9z'#7'9z'#7'9z'#7'9z'#7'9z'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#251#251 + +#252#204#204#204#254#254#254#227#227#230#186#184#188#151#149#152#136#134#137 + +'xy{rssfihehi'#150#152#153#150#152#153'HJK'#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#255#255#255#251 + +#251#252#238#238#242#237#238#240#231#230#233#217#213#217#196#192#196#172#170 + +#172#151#145#151#136#131#136#150#142#146#136#129#131'HJK'#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + ,#255'HJK'#255#255#255#255#255#255#246#246#248#248#247#251#237#237#239#226#226 + +#229#209#207#212#194#191#196#193#187#193#167#159#165'HJKHJK'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255'HJKHJK'#255#255#255#255#255#255#255#255#255 + +#240#239#243#229#225#230#203#197#203'HJKHJK'#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'LNOHJKHJKHJKHJKHJK' + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDABUSINESSPROCESSOR','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0 + +'@'#0#0#255#0#255#1#3#132#1#1'z'#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255 + +#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128 + +#0#0'@'#0#0#1#6#140#3#19#202#2#10#171#1#1'z'#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128 + +#0#0'@'#0#0#2#29#218#2#25#216#3#20#207#2#10#171#1#1'z'#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255 + +#255#128#0#0'@'#0#0#1'%'#234#2#31#225#2#25#216#3#20#207#2#10#171#1#1'z'#255#0 + +#255#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0 + +#0#255#255#255#255#255#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255 + +#255#128#0#0'@'#0#0#128#149#248'1N'#237#2#31#225#2#25#216#3#20#207#2#10#171#1 + +#1'z'#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#128#0#0'@'#0#0#255#255#255#144#162#248#1'%'#234#2#31 + +#225#2#25#216#3#20#207#2#10#171#1#1'z'#255#0#255#255#0#255#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#255#255#255#225#231#255#239#242#254#17'8'#243#1'%'#234#2#31#225 + +#2#25#216#3#20#207#2#10#171#1#1'z'#255#0#255#255#0#255#7#141#187'v'#223#233 + +#131#248#254'`'#236#254'<'#224#254#27#210#251'+'#203#239#14#22#147'7d'#247'2' + +'b'#255')Z'#255#159#181#255'n'#141#255'Lr'#255#255#255#255#175#190#253#1'+' + +#243#1'%'#234#2#31#225#2#25#216#3#20#207#2#10#171#1#1'z'#255#0#255#7#141#187 + +'v'#223#233#151#249#254#147#242#254#149#238#254#157#235#253#176#233#247#23'&' + +#164'Ds'#255';k'#255'2b'#255')Z'#255' Q'#255#23'I'#255#151#173#255#255#255 + +#255'`}'#252#1'+'#243#1'%'#234#2#31#225#2#25#216#3#19#202#1#3#132#255#0#255#7 + +#141#187#180#238#243#188#242#248#138#218#235'Y'#194#221'2'#170#206'"'#154#192 + +#28'I'#158#28'.'#172'Ds'#255';k'#255'2b'#255')Z'#255' Q'#255'&U'#255#211#220 + +#255#255#255#255#175#190#253'@`'#245#1'%'#234#2#29#218#1#6#140#255#0#255#255 + +#0#255#9#138#183'o'#194#214'?'#176#203'='#189#218'/'#198#231#25#199#241',' + +#210#248'S'#220#251'CO'#157#28'.'#172'Ds'#255';k'#255'2b'#255')Z'#255' Q'#255 + +'&U'#255#151#173#255#255#255#255#207#216#254#1')'#235#1#8#143#255#0#255#255#0 + +#255#255#0#255#11#134#178'Y'#196#215#128#245#252'`'#236#254'<'#224#254#27#212 + +#254'.'#216#254'U'#223#254'z'#229#252#28'9'#141#28'.'#172'Ds'#255';k'#255'2b' + +#255')Z'#255' Q'#255#23'I'#255'-Y'#255'5Z'#247#1#10#146#255#0#255#255#0#255 + +#255#0#255#255#0#255#7#140#186'v'#223#233#131#248#254'`'#236#254'<'#224#254 + +#27#212#254'.'#216#254'U'#224#255'{'#231#254'v'#200#220#27'<'#145#28'.'#172 + +'Ds'#255';k'#255'2b'#255')Z'#255' Q'#255#22'E'#247#4#13#147#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#7#141#187'v'#223#233#131#248#254'`'#236 + +#254'<'#224#254#27#212#254'.'#216#254'U'#224#255'{'#232#255#144#227#244'c' + +#194#217#19';'#146#28'.'#172'Ds'#255';k'#255'2b'#255'''T'#247#7#16#147#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7#141#187'v'#223#233 + +#131#248#254'`'#236#254'<'#224#254#27#212#254'.'#216#254'U'#224#255'{'#232 + +#255#149#235#253'h'#205#230'4'#168#203#4'3'#142#28'.'#172'Ds'#255'7d'#247#10 + +#19#147#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#7#141#187'v'#223#233#131#248#254'`'#236#254'<'#224#254#27#212#254'.'#216#254 + +'U'#224#255'{'#232#255#149#235#253'l'#212#238'7'#178#214#9#145#190#2'0'#139 + +#23'&'#164#14#22#147#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#7#141#187'v'#223#233#131#248#254'`'#236#254'<'#224 + +#254#27#212#254'.'#216#254'U'#224#255'{'#232#255#149#235#253'l'#212#238'9' + +#184#222#10#153#201#4#138#184#13'v'#157#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7#141#187'}'#223#233 + +#173#251#254#179#249#255#168#249#254#170#255#254#154#255#254#153#255#254#153 + +#255#254#153#255#254#143#246#251'k'#227#244')'#187#224#4#145#194#14'}'#167 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + ,#255#255#0#255#7#141#187#195#223#234#250#255#255#229#255#255#207#255#255#185 + +#255#254#164#255#254#153#255#254#153#255#254#153#255#254#153#255#254#148#253 + +#254'q'#242#254'>'#205#233#14#128#170#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7#141#187'h'#176#202#240 + +#247#250#245#255#255#223#255#255#201#255#254#179#255#254#158#255#254#153#255 + +#254#153#255#254#153#255#254#153#255#254#132#243#249'0'#170#202#14#128#170 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#7#141#187#14#145#190'|'#192#213'|'#192#213#164#223 + +#234#148#223#233#131#223#233'w'#223#233'v'#223#233'T'#192#212'T'#192#212#23 + +#136#175#14#128#170#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7 + +#141#187#7#141#187#7#141#187#7#141#187#7#141#187#7#141#187#7#141#187#7#141 + +#187#7#141#187#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDACACHE','BMP',[ + 'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0 + +#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#0#255#0#254 + +#252#252#0#136']O'#0#150'5'#17#0#254#251#250#0#165'N+'#0#172'[9'#0#180'iI'#0 + +#254#252#251#0#152'D'#16#0#254#248#244#0#189'X'#12#0#254#247#242#0#254#248 + +#243#0#233#127#30#0#254#244#235#0#254#221#187#0#254#230#206#0#254#246#238#0 + +#254#247#240#0#254#248#242#0#254#250#246#0#254#251#248#0#254#252#250#0#202'h' + +#0#0#254#211#165#0#254#215#171#0#254#217#176#0#254#217#177#0#254#217#178#0 + +#254#218#180#0#254#220#184#0#254#221#184#0#254#222#188#0#254#224#191#0#254 + +#224#192#0#254#224#193#0#254#225#193#0#254#226#196#0#254#227#197#0#254#227 + +#198#0#254#229#202#0#254#234#213#0#254#235#215#0#254#238#220#0#254#244#233#0 + +#206'r'#8#0#207'u'#11#0#208'z'#17#0#209'}'#21#0#211#127#24#0#212#130#28#0#254 + +#226#194#0#254#229#199#0#254#233#208#0#254#239#222#0#254#243#230#0#254#247 + +#239#0#215#138'('#0#216#140'+'#0#217#146'4'#0#254#242#226#0#254#242#227#0#254 + +#247#238#0#254#251#247#0#254#246#235#0#254#250#244#0#192#182#165#0#147'x@'#0 + +#128'pC'#0#254#254#251#0#254#254#252#0#192#193#187#0#164#166#159#0'=TS'#0'g' + +#255#252#0'd'#254#254#0'e'#254#254#0'f'#255#254#0'g'#255#254#0'j'#255#254#0 + +#172#182#182#0'\'#250#254#0'['#238#243#0'`'#251#254#0'b'#251#254#0'T'#246#254 + +#0'T'#221#227#0'K'#240#254#0'P'#243#254#0#135#149#150#0'?'#234#254#0'G'#238 + +#254#0'6'#229#254#0';'#231#254#0','#222#254#0'/'#224#254#0'%'#217#254#0')' + +#218#254#0'('#207#243#0'/'#182#211#0'-'#173#201#0#31#212#254#0#20#203#255#0 + +#21#204#255#0#25#207#255#0'%'#149#181#0'.MV'#0#135#150#154#0#5#187#255#0#10 + +#192#255#0#12#194#255#0#12#186#244#0#25#142#181#0#31#136#171#0#3#183#255#0#9 + +#171#233#0#11#156#212#0#24'z'#163#0'u'#138#146#0#0#175#255#0#0#176#255#0#1 + +#176#255#0#1#177#255#0#1#167#244#0#2#177#255#0#0#171#255#0#0#173#255#0#0#164 + +#244#0#0#156#233#0#1#165#244#0#1#157#233#0#1#140#212#0#3#144#212#0#6'u'#173#0 + +#12'c'#144#0#0#136#212#0#0#137#212#0#0#138#212#0#2'v'#182#0#3'p'#173#0#6'd' + +#154#0#10'Ow'#0'6z'#160#0#135#158#171#0#0'p'#182#0#3'V'#138#0#4'W'#138#0#10 + +'\'#143#0#18'\'#137#0')r'#157#0#0'h'#173#0#1'S'#138#0#1'Q'#137#0#1'R'#137#0#2 + +'T'#138#0#3'Iz'#0#4'P'#132#0#8'Q'#132#0#9'S'#134#0#10'X'#138#0#12'V'#136#0#14 + +'Y'#139#0#16'Z'#138#0#19'^'#143#0'.m'#150#0'Uw'#143#0'u'#146#165#0#0'Y'#154#0 + +#0'R'#145#0#0'N'#134#0#0'J'#130#0#0'K'#130#0#0'L'#130#0#0'F{'#0#1'L'#129#0#2 + +'N'#132#0#2'J}'#0#8'R'#135#0#128#161#186#0#8'Dw'#0#6'Au'#0#0'2h'#0'7G['#0'GL' + +'X'#0#254#254#254#0#220#220#220#0#255#255#255#0#0#0#0#0#0#1#0#0#151' '#206#2 + +#22#0#0#0#0#255#255#255#0#0#0#0#1#0#0#0#165'D'#203#2#244#2#0#0#0#255#255#255 + +#1#0#0#0'#'#228#201#2#12'\'#18#0#0#255#255#255#1#0#0#0#0#0#0#0#128'4'#233#2 + +'dm'#18#0#0#133#230#0#176#0#0#0'>'#0#0#0#0#0#174#1#200'X'#18#0#0#0#0#0#24'[' + +#18#0#24#238#144'|'#240#6#145'|'#255#255#255#255#235#6#145'|'#201#195#194'w' + +#0#0#174#1#0#0#0#0#206#195#194'w'#18#0#0#16#20'y'#23#0#24'y'#23#0#0#0#255#255 + +#255#0#255#0#252'Z'#18#0#252#0#136']Xm'#18#0#148'\'#195'w'#136' '#193'w'#255 + +#255#255#255#206#195#194'w'#231#195#194'w'#168#0#0#0'D['#18#0'.'#196#194'w' + +#168#0#0#0#15'"'#206#2#16#131#23#0#172#207#203#2#16#131#23#0#172'['#18#0'`' + +#154#174#1'dm'#18#0#0#0#0#0'('#181#232#2#2#0#0#0#2#232#201#2#18#0#0#16#20#0#0 + +#0#156#237#227#2'}'#4#0#0'`'#154#174#1#2#210#210#210#210#210#210#210#210#210 + +#210#210#210#210#174#174#174#174#174#174#174#2#2#2#254#254#254#254#254#254 + +#254#254#254#254#254#254#254#210#129#129#127#127#127#127#134#174#2#2#254#1#1 + +#1#1#1#1#1#1#1#1#1#254#210#140#140#140#140#131#127#127#132#174#2#254#1#254 + +#254#254#1#1#254#1#1#254#1#254#210#184#184#180#184#184#170#127#127#134#174 + +#254#1#254#1#1#254#1#254#254#254#254#1#254#210#4#176#180#8#9#186#147#127#127 + +#174#254#1#254#1#1#254#1#254#1#1#254#1#254#210#174'r'#180'3'#27'E'#171#127 + +#127#174#254#1#254#254#254#1#1#1#254#254#1#1#254#210'rr'#180'5 \'#153#129#129 + +#174#254#1#1#1#1#1#1#1#1#1#1#1#254#210'kk'#180'Fy'#183#132#129#131#174#254 + +#254#254#254#254#254#254#254#254#254#254#254#254'_dd'#136#142#141#132#128#129 + +#174#2#5#187#187#187#6'L'#178'RQQQQTZ`ahjqo'#127#159#185#2#5#187#187#187#187 + +'>'#181#167#150#149#149'WQW[W'#149#154#154#154#166'K'#9#2#5#187#187#187#187 + +'3'#187#23#23#14';'#158'WQOW'#180'>(($#'#7#2#5#26#26#26#26#26#26'001=>'#158 + +'WQW'#144'5000'#26#5#2#5#187#187#187#187#26#187#187#187#23#23'<;'#180'WW'#163 + +'3(# '#28#5#2#5#187#187#187#187#26#187#187#187#187#187#26#23#14#164'W'#165'3' + +'7(# '#5#2#5#187#187#187#187#26#187#187#187#187#187#26#23#23#14#166#145'38+(' + +'#'#5#2#5#26#26#26#26#26#26#26#26#26#26#26#26#26'1222'#26#26#26#26#5#2#5#187 + +#187#187#187#26#187#187#187#187#187#26#187'I'#24#12';'#26'?.,'#19#5#2#5#187 + +#187#187#187#26#187#187#187#187#187#26#187#187#187#25#23#26#17'@9-'#5#2#5#188 + +#188#188#188#26#188#188#188#188#188#26#188#188#188#188#188#26#188#188#188#188 + +#5#2#5#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#11#5#2#13 + +#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#16#13#2#2#13#13 + ,#13#13#13#13#13#13#13#13#13#13#13#13#13#13#13#13#13#13#13#2#2#2#2#2#2#2#2#2#2 + +#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2 +]); +LazarusResources.Add('TDACONNECTIONMANAGER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'M'#194#11 + +'c'#221#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#0'M'#194#0'M'#194#3'S'#202#7'\'#213#0'M'#194#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#0'M'#194#12'e'#217#17'n'#217#0'M'#194#0'M' + +#194#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0 + +#255#0#255#255#0#255#255#0#255#0'M'#194#10'c'#217'9'#166#255','#147#255#7'\' + +#213#0'M'#194#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#255#0#255#255#0#255#0'M'#194#10'c'#217#29#128#231'0'#154#255#24'w'#243#1 + +'P'#198#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0'@'#0#0#0'M'#194#0'M'#194#10'c'#217'&'#140#243'0'#154#255#13'h'#225#1 + +'P'#198#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128 + +#0#0#255#255#255#255#255#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255 + +#255#128#0#0'@'#0#0'C'#178#255'A'#177#255'4'#159#255#0'M'#194#24'w'#243#0'M' + +#194#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#128#0#0'@'#0#0'C'#180#255'6'#161#255'('#143 + +#255#31#130#255#0'M'#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0#3'S'#198'+'#146#243'*'#146#255' '#131#255#31#129 + +#255#0'M'#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3'Z'#5#8's'#21#3'^'#8#0'Lh'#2 + +'Q'#198'-'#150#243'F'#183#255' '#131#231#2'Q'#198#25'y'#243#31#129#255#31#129 + +#255#0'M'#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#3'Z'#5#5'e'#12#31#189'M%'#196'R'#6'e'#12 + +#0'Lc'#3'S'#198'.'#152#243'.'#152#255#19'p'#231#1'P'#198#19'p'#235#31#129#255 + +#0'M'#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#3'Z'#5#3'Z'#5#22#153'08'#227'l?'#233'o'#6 + +'e'#10#0'L9'#2'Q'#198#28'}'#243#31#129#255#17'm'#231#0'M'#194#17'm'#231#0'M' + +#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#3'Z'#5#7#138#19#3'Z'#5'$'#175'A7'#226'_'#31 + +#188'7'#2'['#3#0'L5'#1'P'#198#24'w'#243#31#129#255#17'm'#231#0'M'#194#0'M' + +#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#3'Z'#5#18#169'.'#19#160'2'#3'Z'#5#17#146#31#15 + +#165#27#3#135#5#0'U'#0#0'L5'#1'P'#198#24'w'#243#28'~'#251#3'S'#202#0'M'#194 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'Z'#5#27#182'C'#24#175'='#13#140'!'#3'Z'#5#1'r'#2#0 + +#129#0#0'~'#0#0'U'#0#0'L5'#1'P'#198#4'V'#206#0'M'#194#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#3'Z'#5#24#172';'#17#156')'#11#139#25#4'r'#9#3'Z'#5#0'i'#0#0#129#0 + +#0'~'#0#0'['#0#0'L5'#0'M'#194#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3 + +'Z'#5#16#154'('#10#137#24#5'y'#10#1'l'#2#1'd'#1#3'Z'#5#0'^'#0#0'~'#0#0'U'#0#0 + +'K'#0#255#0#255#0#189#255#0#189#255#0#189#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3'Z'#5#12#137#29#0'K'#0#4 + +'w'#9#1'l'#2#1'j'#1#1'j'#1#1'd'#1#0'K'#0#0'N'#0#0'K'#0#255#0#255#7#233#231#7 + +#233#231#7#233#231#0#189#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'Z'#5#15#128#29'-'#212'N'#3'm'#6#0'K'#0#0'K'#0#0'K' + +#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#7#233 + +#231#0#189#255#0#189#255#0#189#255#255#0#255#255#0#255#255#0#255#255#0#255#3 + +'Z'#5#31#166':-'#212'N'#3'v'#5#0'M'#0#0'K'#0#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#7#233 + +#231#7#233#231#7#233#231#255#0#255#255#0#255#255#0#255#255#0#255#3'Z'#5#9'n' + +#17'('#206'G'#3#140#6#0'^'#0#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#0#0'K' + ,#0#0'`'#1#0'^'#0#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3'Z'#5#6'l'#16#2'X'#5#0'K' + +#0#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#10'y'#25#3'Z'#5 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDADBSESSIONMANAGER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@@@@@@@@@@@@@@@@@@@' + +'@@@@@@@@@@@@@@@@@'#0'Z'#0#0'Z'#0#0'Z'#0#0'Z'#0#0'Z'#0#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255'@'#0#192'@'#0#192'@'#0#192'@'#0#192 + +'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@@@' + +#3#143#10#17#172'.'#22#175'2'#13#146#15#0#127#0#0'Z'#0#0'Z'#0#255#0#255#255#0 + +#255#255#0#255#255#0#255'@'#0#192#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +'@'#0#192'@@@'#31#189'L'#23#186'K'#15#147#19#140#226#140#17#144#19#0'z'#0#0 + +']'#0'n-'#19'n-'#19#255#0#255#255#0#255'@'#0#192#255#255#255'@'#0#192#255#255 + +#255'@'#0#192#255#255#255#255#255#255'@'#0#192'@'#0#192#255#255#255#255#255 + +#255'@'#0#192'@@@"'#202'Y'#15#147#19'p'#211'j'#255#240#239#30#157'"'#7#147#24 + +#0'\'#0#244'[A'#248'J6n-'#19'n-'#19'@'#0#192#255#255#255'@'#0#192'@'#0#192 + +#255#255#255#255#255#255'@'#0#192#255#255#255#255#255#255'@'#0#192#255#255 + +#255'@'#0#192'@@@'#23#178'='#15#147#19#160#199#188#251#252#252#25#164'$'#12 + +#150'%'#0'Z'#1#237#156#136#234#136't'#225'@#n-'#19'@'#0#192#255#255#255'@'#0 + +#192#255#255#255'@'#0#192#255#255#255'@'#0#192#255#255#255#255#255#255'@'#0 + +#192#255#255#255'@'#0#192'@@@'#12')'#24'1X~.X'#146'5i'#130#17#135'8'#0'Z'#0 + +#184'A'#23#255#240#239#226#176#154#212'C'#31'n-'#19'@'#0#192#255#255#255'@'#0 + +#192'@'#0#192'@'#0#192#255#255#255#255#255#255'@'#0#192'@'#0#192#255#255#255 + +#255#255#255'@'#0#192'@@@'#9#17'?'#7')'#154#5'('#149#2#29#143#2#29#143#184'A' + +#23#233#161#140#251#252#252#229#160#136#226'U-n-'#19'@'#0#192#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255'@'#0#192'@@@'#14'?'#167#13'A'#181#13'?'#172#14 + +'@'#175#2#28#145#134'wwZ'#135#153'W'#131#143#149'hR'#181'2'#21#255#0#255'@'#0 + +#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192'@'#0#192 + +'@'#0#192'@'#0#192'@'#0#192#10#28'='#18'T'#213#16'M'#198#17'M'#197#17'M'#197 + +#17'L'#203#17'W'#139#9'_'#194#4'W'#193#11'n'#154#13#13#13'uuu~~~YYYEuM*'#194 + +'?;a?BBBBBB========='#3#3#4#0#0#0#10#26'1'#24'j'#229#22'g'#229#22'c'#221#22 + +'c'#221#23'e'#231#17'W'#139' '#129#251#30'{'#247#22'k'#239#11'n'#154'===dddY' + +'YYE'#145'S1'#202'KCiIIIIBBBBBB======'#5#5#6#10#9#7#24#27#31#28'['#169#31#139 + +#255#31#138#255#31#139#255#31#138#255#17'W'#139')'#145#250'&'#142#250'!'#132 + +#250#26'p'#235#11'n'#154'^^^YYYJ'#150'Z9'#209'VHnNIIIIIIBBBBBB======%%%USP+2' + +':'#17'5]'#19'K'#135#23'W'#154#22'Cx('#142#230'0'#157#251'-'#152#250'('#144 + +#251#31#130#247#11'n'#154'^^^^^^P'#156'aA'#217'aKzTYYYIIIIIIBBBBBBBBB'#5#5#6 + +'AABNKJ865'#22#19#19#5#3#3#5#2#1#2'7\5'#166#255'1'#157#251','#150#251'#'#137 + +#246#11'n'#154'hhh^^^U'#161'iH'#224'mB'#209'aA'#132'LHnNJSKIIIBBBBBB====== ' + +#31'"'#29#28#28#20#20#20#12#12#12#2'Bm'#29'x'#189'9'#172#255'7'#167#255'4' + +#160#255#11'n'#154#23#30#23#138#138#138'bbb\'#139'iP'#232'xH'#224'mA'#217'a9' + +#209'V1'#202'K;'#135'FIIIBBBBBB=========&I&'#19'i'#156'R'#152#188#21'c'#146#3 + +'>h'#3'>h'#0''#148'MIIIIIIBBBBBB======''V'''#0#147#0'#w'#166#22'i'#151#7'P' + +'~'#0''#213#254'U'#220 + +#255'n'#225#255#3'_'#150#140'&'#0#149','#0#149'6'#15#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#0'S'#139#3#129#187#28#137#181#144#213 + +#234#186#242#255#167#238#255#0'K'#130#255#0#255#0'K'#130#2'f'#156#18#169#220 + +'*'#208#254'@'#213#254#3'_'#150#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#130#3 + +#139#197#12'~'#173#171#233#248#186#242#255#131#211#234#0'K'#130#3'j'#157#13 + +#139#188#12#198#254#24#202#254#26#166#213#0'K'#130#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#0'K'#130#5#147#201#144#213#234#186#242#255#184#242#255 + +#159#237#255'n'#225#255'B'#215#254#28#203#254#12#198#254#0'K'#130#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#130#6#139#191#186#242#255 + +#186#242#255#186#242#255#184#242#255#154#235#255'j'#225#255'>'#213#254#25#203 + +#254#0'K'#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + ,#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2'}'#182#0 + +'K'#130#0'K'#130'0'#153#193':'#157#193#186#242#255#183#242#255'j'#198#227#0 + +'K'#130#0'K'#130#9'y'#170#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#0'\'#149#6#169#225'\'#177#207#171#233#248 + +#0'K'#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#130#0'K' + +#130#0'K'#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDAHETDRIVER','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#129#30#0'w'#23#0'w'#23#0#255#0#255#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#129#30 + +#0#129#30#0#129#30#0#252#154'*'#184':'#0#184':'#0#128'*'#3#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#130#24#0#129#30#0#248'w'#0#255#129#0#255#149#19#255#170'4'#255#189'Z' + +#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0#5'f'#149#130#24#0'y'#16#0#255#158' '#252'w'#0#143#30#0#213'g'#10#255#171 + +'8'#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#130#24#0#130#24#0#221#152'Z'#255#191']'#186'M'#5#255#0#255'v'#12#0#242#134 + +#20#252#160'4'#138#31#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#0'R'#143#0'6o ' + +' Q6'#24#171'3'#0#233#171'n'#255#215#146#193'e%'#255#0#255'v'#12#0#242'w'#1 + +#255#150#25#138#31#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#255#255#255#128#0#0#0'R'#143#0'R'#143#0'R'#143#6#140#194',Xb ' + +' HF:'#255#218#154#233#170'j'#145'%'#0#193'M'#0#255'~'#0#138#31#0#255#0#255 + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#0'6p'#0'j'#161#2#199#255#9#202#255'"NY.YbAks ' + +#255#218#154#255#218#154#255#211#137#255#177'C'#255#138#7#138#31#0#255#0#255 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0'9' + +'u'#4'v'#170'('#212#255#0#158#218#0'N'#138#22#163#212'R'#224#255#0'v'#186#196 + +'f#'#203'g'#25#255#218#154#184':'#0#184':'#0#184':'#0#255#0#255#255#0#255#2 + +'t'#169'['#213#226'i'#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254#0 + +';v'#11#128#176#156#233#254'h'#230#255'#'#165#212#0'A~'#0'F'#129'0'#215#255 + +'M'#215#254'%_p'#184':'#0#184':'#0#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#2't'#169'['#213#226#127#247#254'z'#238#254'}'#233#254#135#231#255 + +#163#237#255#0';v'#3'{'#176#165#235#254#167#243#255'^'#193#226#0'L'#138#0'N' + +#138#19#204#255'-'#206#252#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#2't'#169#160#233#239#170#238#246'p'#207#229'?' + +#177#211#29#149#192#17#131#177#15'{'#170#0'@z'#24#150#196#182#246#255'~'#212 + +#238#3'g'#157#13#182#235#1#198#255#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#3'p'#164'T'#177#202'('#156 + +#188'&'#171#207#27#182#224#12#183#237#24#198#247':'#213#254#0'A~'#27#153#196 + +#181#244#255#182#246#255#154#240#255'N'#222#255#13#202#255#13'b'#145#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4 + +'l'#158'?'#180#203'f'#242#251'E'#230#254'%'#215#254#13#199#254#26#204#254';' + +#215#255'`'#225#255#0'Ay'#0'E~;'#175#213#182#246#255#13'b'#145#13'b'#145#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#2's'#167'['#213#226'i'#246#254'E'#230#254'%'#215#254#13#199#254#26 + +#204#254';'#215#255'`'#225#255'}'#229#252'Q'#199#233#0'A{'#0'E{'#1'z'#180#5 + +'f'#149#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#2't'#169'['#213#226'i'#246#254'E'#230#254#128#128#128#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#2't'#169'['#213#226'i'#246#254 + +'E'#230#254#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0 + +#255#255#0#255#2't'#169'['#213#226'i'#246#254'E'#230#254#128#128#128#255#255 + +#255#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0 + +#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#255#255 + +#255#0#0#0#255#0#255#255#0#255#2't'#169'['#213#226'i'#246#254'E'#230#254#128 + +#128#128#255#255#255#128#0#0#192#220#192#255#255#255#192#220#192#128#0#0#255 + +#255#255#128#0#0#192#220#192#255#255#255#255#255#255#255#255#255#128#0#0#255 + +#255#255#255#255#255#255#255#255#0#0#0#255#0#255#255#0#255#2't'#169'c'#213 + +#226#152#250#254#159#247#255#128#128#128#255#255#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#192#220#192#255#255#255 + +#128#0#0#255#255#255#255#255#255#255#255#255#0#0#0#255#0#255#255#0#255#2't' + +#169#178#213#227#248#255#255#221#255#255#128#128#128#255#255#255#128#0#0#192 + ,#220#192#255#255#255#192#220#192#128#0#0#255#255#255#128#0#0#192#220#192#255 + +#255#255#255#255#255#192#220#192#128#0#0#192#220#192#255#255#255#255#255#255 + +#0#0#0#255#0#255#255#0#255#2't'#169'M'#156#187#235#244#248#242#255#255#128 + +#128#128#255#255#255#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#255 + +#255#255#128#0#0#128#0#0#192#220#192#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#255#255#255#0#0#0#255#0#255#255#0#255#255#0#255#2't'#169#5'x'#172'b'#175#201 + +#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#2't'#169#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#255#0#255#0#0 +]); +LazarusResources.Add('TDAJSONDATASTREAMER','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#142']' + +'Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y' + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#225#189#255#221#181#255#217#172#255 + +#213#165#255#211#157#255#207#151#255#203#145#255#201#140#255#199#135#128'PK' + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0 + +#0#255#231#203#255#227#194#255#224#187#255#220#178#255#216#171#0#0#0#0#0#0 + +#255#206#149#255#203#143#128'PK'#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0 + +#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0'@'#0#0#255#238#217#255#233#208#255#230#199#255#226#191#0#0#0#255#216 + +#171#255#216#171#0#0#0#255#207#152#128'PK'#128#0#0#255#255#255#128#0#0#255 + +#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255 + +#255#255#128#0#0'@'#0#0#255#243#229#255#240#222#255#235#213#255#233#204#255 + +#229#197#255#221#182#255#221#182#0#0#0#255#213#165#128'PK'#128#0#0#255#255 + +#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#7'9z'#255#246#233#255#242#225 + +#255#238#218#255#234#209#255#229#197#255#229#197#0#0#0#255#218#176#128'PK' + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255 + +#255#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#255#254#250#255 + +#250#244#255#248#239#255#244#231#255#240#222#255#234#209#255#234#209#0#0#0 + +#255#225#189#128'PK'#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#128#0#0'@'#0#0#255#255#255#255#254#252#255#252#247#255#250#242#255 + +#246#235#0#0#0#0#0#0#0#0#0#255#231#203#128'PK'#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#254#250#255#251#246#255 + +#248#239#255#244#231#255#240#222#255#238#217#128'PKHJK'#201#194#201#7'9z'#7 + +'9z'#7'9z='#154#242'5'#149#239'-'#140#239#7'9z'#7'9z'#7'9zyyy'#194#140'm'#255 + +#255#255#255#255#255#255#255#255#137#167#199#7'9z'#137#167#199#255#252#248 + +#247#240#235#226#218#209#226#216#204'{MIHJK'#206#199#204#191#184#192#7'9z@' + +#157#242'@'#157#242'@'#157#242'9'#152#240'2'#145#239#7'9zE_{yyy'#203#147'o' + +#255#255#255#255#255#255#137#167#199#7'9z'#15's'#233#7'9z'#137#167#199#234 + +#233#230#182#180#176#182#177#171'uIEHJK'#209#202#209#194#188#194'h'#129#163#7 + +'9z@'#157#242'@'#157#242'@'#157#242#7'9zE_{{{{yyy'#209#153'r'#255#255#255#137 + +#167#199#7'9z'#15's'#233#15's'#233#15's'#233#7'9zURf'#160'g['#160'g['#149'\K' + +'HJK'#213#207#213#197#191#197#194#188#194'Qk'#138#7'9z@'#157#242#7'9zId'#128 + +'yzzyyyyyy'#216#159'u'#137#167#199#7'9z'#27'}'#235#22'y'#234#18'u'#233#15's' + +#233#15's'#233#7'9z'#254#176'J'#240#145','#225#132'.HJK'#217#213#217#201#196 + +#202#199#192#198#150#146#152'0Kf'#7'9z,D^'#137#137#137#127#127#127#130#130 + +#131'yyy'#220#163'v'#7'9z'#7'9z'#7'9z'#31#130#235#27'}'#235#22'y'#234#7'9z'#7 + +'9z'#7'9z'#218#152'c'#255#0#255'HJK'#225#218#224#207#201#206#199#192#198#151 + +#150#153'UWX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132#127#127 + +#127#220#163'v'#209#146'm'#209#146'm'#7'9z-'#140#239'%'#135#238#31#130#237#7 + +'9zXTh'#212#154's'#255#0#255#255#0#255'HJK'#231#226#230#212#207#211#225#218 + +#224#152#149#152'UWX'#176#175#177'LNO'#150#149#149#132#131#131'vvvyyy'#143 + +#143#143#131#132#132'*C]'#7'9z7'#150#240'2'#146#240#7'9z'#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255'HJK'#239#235#239#235#233#235#198#197#199#160 + +#157#161'UWX'#164#165#167';=>'#130#130#131#137#137#137#143#143#143#137#137 + +#137#147#147#147'Id'#128#7'9z@'#157#242'@'#157#242'='#154#242#7'9z'#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#238#237#238#178#177#180#156#153 + +#156#159#158#161'RTU'#235#235#237'ossY[Z'#7'9z'#7'9z'#7'9z'#7'9z'#7'9z@'#157 + +#242'@'#157#242#7'9z'#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255'HJK'#237#235#237#129#129#130#213#209#212#207#207#208'`cdprrxy{' + +#138#142#140#171#172#172'Xt'#146#7'9z'#7'9z'#7'9z'#7'9z'#7'9z'#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#251 + +#251#252#204#204#204#254#254#254#227#227#230#186#184#188#151#149#152#136#134 + +#137'xy{rssfihehi'#150#152#153#150#152#153'HJK'#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#255#255#255 + +#251#251#252#238#238#242#237#238#240#231#230#233#217#213#217#196#192#196#172 + +#170#172#151#145#151#136#131#136#150#142#146#136#129#131'HJK'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + ,#255#0#255'HJK'#255#255#255#255#255#255#246#246#248#248#247#251#237#237#239 + +#226#226#229#209#207#212#194#191#196#193#187#193#167#159#165'HJKHJK'#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255'HJKHJK'#255#255#255#255#255#255#255 + +#255#255#240#239#243#229#225#230#203#197#203'HJKHJK'#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'LNOHJKHJKHJKHJK' + +'HJK'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#0#0 +]); +LazarusResources.Add('TDAMEMDATATABLE','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#5'f'#149#5'f'#149#5'f'#149#5'f'#149#5'f'#149#5'f'#149#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#2't'#169'0'#201 + +#233#18#203#254' '#206#254'T'#222#255't'#224#248','#167#211#5'f'#149#255#0 + +#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0 + +'@'#0#0#2't'#169's'#250#254'?'#227#254#18#203#254' '#206#254'T'#222#255't' + +#224#248'0'#176#218#3#134#193#5'f'#149#128#0#0#255#255#255#128#0#0#128#0#0 + +#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255 + +#255#255#128#0#0'@'#0#0#2't'#169's'#250#254'?'#227#254#18#203#254' '#206#254 + +'T'#222#255't'#224#248'0'#176#218#3#134#193#5'f'#149#128#0#0#255#255#255#128 + +#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128 + +#0#0#255#255#255#128#0#0'@'#0#0#2't'#169's'#250#254'?'#227#254#18#203#254' ' + +#206#254'T'#222#255't'#224#248'0'#176#218#3#134#193#5'f'#149#128#0#0#255#255 + +#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#2't'#169#159#251#254#163#243 + +#255#182#242#255#218#248#255#229#250#255#216#247#254#154#220#239'A'#172#213#5 + +'f'#149#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255 + +#255#255#255#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#2't'#169 + +#167#233#243#28#170#211#7#145#197#7#136#188#16#139#188#31#145#191#20'y'#173 + +'y'#192#220#5'g'#150#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#128#0#0'@'#0#0#2't'#169'1'#181#211'?'#227#254#18#203#254' '#206#254 + +'T'#222#255't'#224#248'0'#176#218#2'h'#163#3'h'#154#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0'4'#144'4'#2't'#169's'#250#254'?'#227#254#18#203#254' '#206#254'T'#222 + +#255't'#224#248'0'#176#218#3#134#193#5'f'#149#150'5'#17#254#254#254#254#254 + +#254#254#254#251#254#250#247#0'e'#0#254#246#237#254#243#230#254#240#225#254 + +#237#218#254#233#211#0'e'#0#254#226#197#254#233#208#2't'#169's'#250#254'?' + +#227#254#18#203#254' '#206#254'T'#222#255't'#224#248'0'#176#218#3#134#193#5 + +'f'#149#150'5'#17#254#254#254#254#254#254#254#254#254#254#254#252#0'e'#0#254 + +#248#243#254#246#239#254#244#233#254#242#226#254#238#221#0'e'#0#254#230#206 + +#254#235#216#2't'#169's'#250#254'?'#227#254#18#203#254' '#206#254'T'#222#255 + +'t'#224#248'0'#176#218#3#134#193#5'f'#149#150'5'#17#254#254#254#254#254#254 + +#254#254#254#254#254#254#0'e'#0#254#251#250#254#250#244#254#247#240#254#244 + +#234#254#242#227#0'e'#0#254#235#215#254#238#222#2't'#169'x'#251#254'h'#246 + +#255'T'#246#255'_'#254#255#127#254#255#137#251#254'H'#207#242#5#139#199#5'f' + +#149#150'5'#17#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0#0'e'#0 + +#0'e'#0#0'e'#0#0'e'#0'4'#144'4'#2't'#169#251#255#255#240#255#255#198#255#255 + +#160#255#255#152#255#255#152#255#255#147#255#255'W'#247#254#5'f'#149#150'5' + +#17#254#254#254#254#254#254#254#254#254#254#254#254#0'e'#0#254#254#254#254 + +#254#254#254#252#252#254#251#247#254#248#243#0'e'#0#254#243#233#254#240#225 + +#254#243#230#4'y'#175#237#250#252#220#255#255#183#255#255#153#255#255#146#255 + +#255#131#250#251#8'k'#154#255#0#255#150'5'#17#254#254#254#254#254#254#254#254 + +#254#254#254#254#0'e'#0#254#254#254#254#254#254#254#254#254#254#254#254#254 + +#252#250#0'e'#0#254#247#239#254#244#234#254#242#227#254#244#231#2't'#169#2't' + +#169#2't'#169#2't'#169#2't'#169#2't'#169#150'5'#17#255#0#255#150'5'#17#254 + +#254#254#254#254#254#254#254#254#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#255#0#255#150'5'#17#0'e'#0#0'e'#0#0'e'#0#128#128#128#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#0#0#0#255#0#255#150'5'#17#254#254#254#254#254 + +#254#254#254#254#128#128#128#255#255#255#128#0#0#255#255#255#255#255#255#255 + +#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#255 + +#255#255#255#255#255#255#255#255#128#0#0#255#255#255#0#0#0#255#0#255#150'5' + +#17#254#254#254#254#254#254#254#254#254#128#128#128#255#255#255#128#0#0#255 + +#255#255#192#220#192#255#255#255#128#0#0#255#255#255#128#0#0#192#220#192#255 + +#255#255#255#255#255#128#0#0#255#255#255#192#220#192#255#255#255#128#0#0#255 + +#255#255#0#0#0#255#0#255#150'5'#17#220#220#220#220#220#220#220#220#220#128 + +#128#128#255#255#255#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#255#255 + ,#255#128#0#0#128#0#0#192#220#192#255#255#255#128#0#0#192#220#192#128#0#0#192 + +#220#192#128#0#0#255#255#255#0#0#0#255#0#255#150'5'#17#152'D'#16#152'D'#16 + +#152'D'#16#128#128#128#255#255#255#128#0#0#128#0#0#192#220#192#128#0#0#128#0 + +#0#255#255#255#128#0#0#192#220#192#255#255#255#255#255#255#128#0#0#128#0#0 + +#192#220#192#128#0#0#128#0#0#255#255#255#0#0#0#255#0#255#189'X'#12#233#127#30 + +#233#127#30#233#127#30#128#128#128#255#255#255#128#0#0#192#220#192#255#255 + +#255#192#220#192#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#128 + +#0#0#192#220#192#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0#255#0#255 + +#255#0#255#189'X'#12#189'X'#12#189'X'#12#128#128#128#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#0#0#0#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#255#0#255#0#0 +]); +LazarusResources.Add('TDAPOWEREDBYDATAABSTRACTBUTTON','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#135'L*'#135'N.'#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0 + +#0#142'V5'#135'N.'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0 + +'@'#0#0#169'vR'#135'N.'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0 + +'@'#0#0#173'}Y'#135'N.'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0'@'#0#0#166'tU'#137'P2'#134'L-'#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0 + +#0#255#255#255#255#255#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255 + +#255#128#0#0'@'#0#0#182#138'j'#156'hI'#144'Z:'#139'R2'#135'N.'#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#128#0#0'@'#0#0#237#207#177#211#172#142#180#132'g' + +#153'eE'#142'T5'#136'P/'#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#254#233#209#255#235#207#255#231#202#239#208#178#203#163#130 + +#165'rQ'#144'W8'#137'P2'#135'M-'#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#208#183#169#207#182#164#224#201#181#247#229#209#255#240#221#255#240 + +#221#254#238#218#254#237#216#254#235#213#254#234#212#254#233#209#254#233#207 + +#255#234#206#255#235#207#251#225#196#220#183#151#170'xX'#143'Y:'#138'R3'#255 + +#0#255#255#0#255#255#0#255#255#0#255#218#198#187#216#192#180#224#203#187#246 + +#230#212#255#243#225#255#240#221#254#239#222#254#239#222#254#237#220#254#238 + +#218#254#237#216#254#234#212#254#233#209#254#231#207#255#231#202#255#234#206 + +#255#230#198#215#177#144#161'oP'#143'Y:'#139'T4'#255#0#255#255#0#255#255#0 + +#255#225#208#197#226#206#194#240#224#209#254#240#226#255#243#227#254#240#226 + +#254#240#226#254#240#226#254#240#224#254#239#222#254#237#220#254#237#216#254 + +#234#212#254#233#209#254#231#206#255#231#202#255#234#202#247#217#184#193#150 + +'v'#151'dD'#143'Y:'#255#0#255#255#0#255#235#225#218#231#218#208#235#221#208 + +#250#237#224#254#242#231#254#242#231#254#243#230#254#243#230#254#243#230#255 + +#243#227#254#239#225#254#239#222#254#237#220#254#237#216#254#234#212#254#233 + +#209#254#231#206#255#231#201#255#230#198#222#184#153#164'tU'#147'_A'#145'[<' + +#255#0#255#240#235#230#237#227#220#242#230#220#252#242#230#254#244#237#254 + +#244#237#254#244#237#254#244#237#254#244#237#254#242#231#254#242#229#254#239 + +#225#254#239#221#254#238#218#254#235#213#254#233#209#254#231#207#255#231#202 + +#255#231#201#234#202#170#176#129'e'#153'gH'#150'bC'#255#0#255#247#243#242#243 + +#235#230#246#237#227#252#243#234#254#247#239#254#247#240#254#247#239#254#247 + +#240#254#247#239#254#244#237#254#242#231#254#242#229#254#240#224#254#237#220 + +#254#237#216#254#234#212#254#233#207#255#231#202#255#231#202#237#204#173#180 + +#136'k'#158'mP'#154'iJ'#255#0#255#254#252#252#250#246#243#247#240#234#252#244 + +#235#254#248#240#254#250#244#254#250#244#254#250#244#254#248#240#254#244#237 + +#254#244#234#254#243#230#254#240#226#254#239#221#254#237#217#254#235#213#254 + +#233#207#254#231#206#255#231#202#229#197#166#178#137'l'#161'tX'#159'oR'#255#0 + +#255#255#255#255#255#254#254#252#248#246#252#246#239#254#250#244#254#251#247 + +#254#251#248#254#251#247#254#250#244#254#247#239#254#246#235#254#243#230#254 + +#240#226#254#239#222#254#237#217#254#235#213#254#233#209#254#233#207#252#226 + +#197#213#180#151#177#136'm'#167'z`'#164'wZ'#255#0#255#255#0#255#255#255#255 + +#255#255#255#254#250#247#254#250#244#254#251#248#254#252#252#254#251#248#254 + +#250#244#254#248#240#254#244#237#254#243#230#254#240#226#254#239#222#254#237 + +#217#254#235#213#254#233#209#255#234#206#235#208#181#197#160#136#178#138'r' + +#172#130'i'#255#0#255#255#0#255#255#0#255#255#255#255#255#255#255#255#255#252 + +#254#250#247#254#250#247#254#251#247#254#251#247#254#250#244#252#246#239#254 + +#246#234#254#243#230#254#240#226#254#239#221#254#237#217#254#237#216#254#233 + ,#209#242#218#192#211#181#157#189#154#131#182#144'z'#178#138't'#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#255#255#255#255#255#255#254#254#254#251#248 + +#254#250#244#254#247#240#254#247#240#254#244#237#254#244#234#254#243#230#254 + +#240#226#255#240#221#254#237#216#251#231#208#239#216#193#217#191#171#198#167 + +#149#192#159#139#187#153#132#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#255#255#255#255#255#255#255#255#254#251#248#254#250#244 + +#252#246#239#252#243#234#252#240#229#251#239#226#250#235#220#248#231#215#242 + +#224#206#230#211#193#218#194#178#208#181#164#202#173#156#198#167#149#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#255#255#255#255#255#255#255#255#255#254#254#252#252#248#250#247#240#247 + +#239#233#244#234#225#239#227#217#235#220#209#229#212#201#221#203#191#216#196 + +#182#213#189#175#208#183#166#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#255#255 + +#255#255#255#255#255#255#255#254#254#251#247#246#246#239#235#242#233#227#237 + +#225#220#231#218#211#227#212#202#221#204#193#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#255#255#255#254 + +#254#251#247#246#246#240#237#242#233#227#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDAREMOTECOMMAND','BMP',[ + 'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0 + +#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#255#0#255#0#153'3'#0#0#154'4'#0#0#156'6'#0 + +#0#158'8'#0#0#162'<'#0#0#165'?'#0#0#166'@'#0#0#169'C'#0#0#170'D'#0#0#175'I'#0 + +#0#175'M'#11#0#172'L'#13#0#176'J'#0#0#179'M'#0#0#180'N'#0#0#182'P'#0#0#185'S' + +#0#0#185'V'#7#0#183'V'#11#0#181'T'#12#0#185'Y'#15#0#179'W'#25#0#191'd'#26#0 + +#139'Q$'#0#138'Z+'#0#179'\&'#0#183'i$'#0#199'a'#0#0#201'c'#0#0#203'e'#0#0#204 + +'f'#0#0#198'd'#10#0#209'k'#0#0#220'v'#0#0#229#127#0#0#197'v9'#0#204#127'>'#0 + +#144'kG'#0#183'uD'#0#198'{D'#0#247#145#0#0#255#157#11#0#249#152#12#0#255#158 + +#12#0#242#148#20#0#249#156#24#0#255#161#19#0#255#163#25#0#255#166#31#0#217 + +#137'6'#0#230#146'-'#0#242#155'%'#0#236#159'>'#0#255#166'!'#0#255#169')'#0 + +#255#172'.'#0#255#175'7'#0#255#176'8'#0#255#178'>'#0#138#141#127#0#210#136'E' + +#0#204#139'['#0#255#179'@'#0#249#178'M'#0#255#184'N'#0#236#167'S'#0#255#186 + +'Q'#0#255#187'T'#0#255#188'W'#0#210#149'f'#0#223#170'y'#0#255#193'c'#0#255 + +#194'e'#0#255#195'i'#0#255#196'j'#0#255#197'l'#0#249#193'r'#0#255#202'x'#0 + +#255#203'|'#0#255#204'~'#0'(r'#138#0' '#129#159#0#14#128#170#0#23#136#175#0 + +#11#134#178#0#9#138#183#0#7#140#186#0#14#145#190#0#30#148#188#0'('#152#186#0 + +'g'#145#154#0'p'#159#166#0#4#147#196#0#9#151#199#0#10#157#206#0'"'#155#194#0 + +#21#175#217#0'!'#170#207#0'5'#160#195#0'0'#170#202#0'2'#170#206#0'?'#176#203 + +#0'='#189#218#0'9'#184#222#0')'#187#224#0'h'#176#202#0#25#199#241#0#27#212 + +#254#0'/'#198#231#0'&'#194#233#0'>'#205#233#0','#211#249#0'.'#216#254#0'<' + +#224#254#0'T'#192#212#0'Y'#196#215#0'Y'#194#221#0'o'#194#214#0'|'#192#213#0 + +'C'#200#233#0'T'#223#254#0'`'#206#234#0'l'#212#238#0'd'#217#233#0'v'#223#233 + +#0'}'#223#233#0'U'#224#255#0'k'#227#244#0'`'#236#254#0'u'#226#250#0'{'#232 + +#255#0'q'#242#254#0#136#153#143#0#151#166#158#0#150#177#174#0#236#187#133#0 + +#230#182#136#0#255#205#130#0#255#210#141#0#236#193#147#0#255#212#147#0#249 + +#212#162#0#255#220#166#0#249#215#170#0#255#221#169#0#255#223#173#0#255#224 + +#175#0#255#226#181#0#134#187#196#0#131#223#233#0#138#218#235#0#148#223#233#0 + +#149#223#237#0#164#223#234#0#149#235#253#0#149#238#254#0#158#237#255#0#132 + +#243#249#0#128#245#252#0#143#246#251#0#131#248#254#0#147#242#254#0#151#249 + +#254#0#148#253#254#0#153#255#254#0#158#255#254#0#180#238#243#0#164#255#254#0 + +#168#249#254#0#173#251#254#0#170#255#254#0#182#241#255#0#188#242#248#0#179 + +#249#255#0#179#255#254#0#185#255#254#0#195#223#234#0#206#234#238#0#204#246 + +#255#0#201#255#254#0#207#255#255#0#209#247#255#0#223#255#255#0#229#255#255#0 + +#240#247#250#0#245#255#255#0#250#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#1#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#22'N'#1#0#0#0#0#0 + +#0#0#0#0'SSSSSSQ'#1#1#1#18#21'5HM'#1#1#1#0#0#0#0'SSbbanxz\'#7#4'.*19AHN'#141 + +#1#0#0#0'SZ|'#129'rlq'#127#131#153#7#9'31*6:CJN'#1#0#0#0'W}'#161#129'rlq'#127 + +#131#135#10#9'B:-'#7#1#12'@J='#1#0#0'W}'#161#129'rlq'#127#133#16#12'G'#141'H' + +#27#0#1#4#23'CJ%'#1#0'W}'#161#129'rlq'#127#15'!F'#148#147#139'&'#0#1#9#20'?C' + +'J'#1#0'W}'#161#129'rlq'#127'<'#29#20#137#148#146''''#0#4#15' 7?2'#1#0'W}' + +#161#129'rlq'#127#131#134#29#18#140#148#142#26#9#20'*/4'#1#0#0'W}'#163#162 + +#156#157#172#179#182#178#29'"'#137#148#148#146'NE7*'#1#0#0#0'W'#167#173#151 + +'ue`Yc[#'#29#144#148#148#148#146'NC7'#1#0#0#0'Vvfgmkpy'#130#149#18#15'>$$' + +#144#148#136#1#1#1#0#0#0'Ut'#159#129'rlq'#127#131#156'{g_'#24')('#148#1#0#0#0 + +#0#0#0'W}'#161#129'rlq'#127#131#156'{h_R'#25#4#1#0#0#0#0#0#0#0'W}'#161#129'r' + +'lq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#127#131#156'{g_]S' + +#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W}' + +#161#129'rlq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W~'#170#174#170#170#165 + +#165#165#165#160#128'i^S'#0#0#0#0#0#0#0#0#0'W'#177#187#184#181#174#168#165 + +#165#165#165#163#132'oS'#0#0#0#0#0#0#0#0#0'Wj'#185#186#183#181#174#165#165 + +#165#165#165#159'eS'#0#0#0#0#0#0#0#0#0#0'WXww'#154#153#150'~}ssTS'#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'WWWWWWWWW'#0#0#0#0#0#0#0#0#0#0#0 +]); +LazarusResources.Add('TDALOCALCOMMAND','BMP',[ + 'BMv'#6#0#0#0#0#0#0'6'#4#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#8#0#0#0#0#0'@'#2#0 + +#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#255#0#255#0#153'3'#0#0#154'4'#0#0#156'6'#0 + +#0#158'8'#0#0#162'<'#0#0#165'?'#0#0#166'@'#0#0#169'C'#0#0#170'D'#0#0#175'I'#0 + +#0#175'M'#11#0#172'L'#13#0#176'J'#0#0#179'M'#0#0#180'N'#0#0#182'P'#0#0#185'S' + +#0#0#185'V'#7#0#183'V'#11#0#181'T'#12#0#185'Y'#15#0#179'W'#25#0#191'd'#26#0 + +#139'Q$'#0#138'Z+'#0#179'\&'#0#183'i$'#0#199'a'#0#0#201'c'#0#0#203'e'#0#0#204 + +'f'#0#0#198'd'#10#0#209'k'#0#0#220'v'#0#0#229#127#0#0#197'v9'#0#204#127'>'#0 + +#144'kG'#0#183'uD'#0#198'{D'#0#247#145#0#0#255#157#11#0#249#152#12#0#255#158 + +#12#0#242#148#20#0#249#156#24#0#255#161#19#0#255#163#25#0#255#166#31#0#217 + +#137'6'#0#230#146'-'#0#242#155'%'#0#236#159'>'#0#255#166'!'#0#255#169')'#0 + +#255#172'.'#0#255#175'7'#0#255#176'8'#0#255#178'>'#0#138#141#127#0#210#136'E' + +#0#204#139'['#0#255#179'@'#0#249#178'M'#0#255#184'N'#0#236#167'S'#0#255#186 + +'Q'#0#255#187'T'#0#255#188'W'#0#210#149'f'#0#223#170'y'#0#255#193'c'#0#255 + +#194'e'#0#255#195'i'#0#255#196'j'#0#255#197'l'#0#249#193'r'#0#255#202'x'#0 + +#255#203'|'#0#255#204'~'#0'(r'#138#0' '#129#159#0#14#128#170#0#23#136#175#0 + +#11#134#178#0#9#138#183#0#7#140#186#0#14#145#190#0#30#148#188#0'('#152#186#0 + +'g'#145#154#0'p'#159#166#0#4#147#196#0#9#151#199#0#10#157#206#0'"'#155#194#0 + +#21#175#217#0'!'#170#207#0'5'#160#195#0'0'#170#202#0'2'#170#206#0'?'#176#203 + +#0'='#189#218#0'9'#184#222#0')'#187#224#0'h'#176#202#0#25#199#241#0#27#212 + +#254#0'/'#198#231#0'&'#194#233#0'>'#205#233#0','#211#249#0'.'#216#254#0'<' + +#224#254#0'T'#192#212#0'Y'#196#215#0'Y'#194#221#0'o'#194#214#0'|'#192#213#0 + +'C'#200#233#0'T'#223#254#0'`'#206#234#0'l'#212#238#0'd'#217#233#0'v'#223#233 + +#0'}'#223#233#0'U'#224#255#0'k'#227#244#0'`'#236#254#0'u'#226#250#0'{'#232 + +#255#0'q'#242#254#0#136#153#143#0#151#166#158#0#150#177#174#0#236#187#133#0 + +#230#182#136#0#255#205#130#0#255#210#141#0#236#193#147#0#255#212#147#0#249 + +#212#162#0#255#220#166#0#249#215#170#0#255#221#169#0#255#223#173#0#255#224 + +#175#0#255#226#181#0#134#187#196#0#131#223#233#0#138#218#235#0#148#223#233#0 + +#149#223#237#0#164#223#234#0#149#235#253#0#149#238#254#0#158#237#255#0#132 + +#243#249#0#128#245#252#0#143#246#251#0#131#248#254#0#147#242#254#0#151#249 + +#254#0#148#253#254#0#153#255#254#0#158#255#254#0#180#238#243#0#164#255#254#0 + +#168#249#254#0#173#251#254#0#170#255#254#0#182#241#255#0#188#242#248#0#179 + +#249#255#0#179#255#254#0#185#255#254#0#195#223#234#0#206#234#238#0#204#246 + +#255#0#201#255#254#0#207#255#255#0#209#247#255#0#223#255#255#0#229#255#255#0 + +#240#247#250#0#245#255#255#0#250#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#1#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#22'N'#1#0#0#0#0#0 + +#0#0#0#0'SSSSSSQ'#1#1#1#18#21'5HM'#1#1#1#0#0#0#0'SSbbanxz\'#7#4'.*19AHN'#141 + +#1#0#0#0'SZ|'#129'rlq'#127#131#153#7#9'31*6:CJN'#1#0#0#0'W}'#161#129'rlq'#127 + +#131#135#10#9'B:-'#7#1#12'@J='#1#0#0'W}'#161#129'rlq'#127#133#16#12'G'#141'H' + +#27#0#1#4#23'CJ%'#1#0'W}'#161#129'rlq'#127#15'!F'#148#147#139'&'#0#1#9#20'?C' + +'J'#1#0'W}'#161#129'rlq'#127'<'#29#20#137#148#146''''#0#4#15' 7?2'#1#0'W}' + +#161#129'rlq'#127#131#134#29#18#140#148#142#26#9#20'*/4'#1#0#0'W}'#163#162 + +#156#157#172#179#182#178#29'"'#137#148#148#146'NE7*'#1#0#0#0'W'#167#173#151 + +'ue`Yc[#'#29#144#148#148#148#146'NC7'#1#0#0#0'Vvfgmkpy'#130#149#18#15'>$$' + +#144#148#136#1#1#1#0#0#0'Ut'#159#129'rlq'#127#131#156'{g_'#24')('#148#1#0#0#0 + +#0#0#0'W}'#161#129'rlq'#127#131#156'{h_R'#25#4#1#0#0#0#0#0#0#0'W}'#161#129'r' + +'lq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#127#131#156'{g_]S' + +#0#0#0#0#0#0#0#0#0'W}'#161#129'rlq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W}' + +#161#129'rlq'#127#131#156'{h_]S'#0#0#0#0#0#0#0#0#0'W~'#170#174#170#170#165 + +#165#165#165#160#128'i^S'#0#0#0#0#0#0#0#0#0'W'#177#187#184#181#174#168#165 + +#165#165#165#163#132'oS'#0#0#0#0#0#0#0#0#0'Wj'#185#186#183#181#174#165#165 + +#165#165#165#159'eS'#0#0#0#0#0#0#0#0#0#0'WXww'#154#153#150'~}ssTS'#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'WWWWWWWWW'#0#0#0#0#0#0#0#0#0#0#0 +]); +LazarusResources.Add('TDALOCALDATAADAPTER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#17#128#169#17#128#169 + +#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#255#0#255#255#0#255 + +#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#128#0#0'@'#0#0'$}'#145#25#149#178'%'#183#215'Q'#210#235'~'#229#245#130#218 + +#234'J'#179#210#17#128#169#17#128#169#255#0#255#128#0#0#255#255#255#128#0#0 + +#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128 + +#0#0#255#255#255#128#0#0'@'#0#0'aTA'#29'u'#133#29#144#168'I'#188#211'|'#225 + +#240#145#230#243'b'#201#228'0'#169#212#21#148#197#17#128#169#128#0#0#255#255 + +#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128 + +#0#0#128#0#0#255#255#255#128#0#0'@'#0#0#174'L'#8#158'='#12'JfaH'#186#209'}' + +#227#242#145#230#243'b'#201#228'0'#169#212#22#153#204#17#128#169#128#0#0#255 + +#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255 + +#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#216#140';'#168'N'#31'5' + +#130#140'M'#200#225#127#230#246#145#230#243'b'#201#228'0'#169#212#22#153#204 + +#17#128#169#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255 + +#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#203 + +#130'F|M."'#168#197'R'#213#238#128#232#248#145#230#243'b'#201#228'0'#169#212 + +#22#153#204#17#128#169#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#128#0#0'@'#0#0#177']-Jok&'#187#220'U'#220#247#128#232#248#145 + +#230#243'b'#201#228'0'#169#212#22#153#204#17#128#169#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#159'N"'#152'R+a'#188#202's'#217#233#143#236#247#164#240#247#172#239#244 + +#129#215#233'A'#178#216#22#153#204#17#128#169#17#128#169#150#248#247'u'#239 + +#249'N'#227#250'&'#215#252'2'#203#234#154'I'#30#199#136'Z'#169'S&'#139'X9Trw' + +#16'z'#161#163#230#233#137'pZdib0'#142#172#17'}'#166#17#128#169#17#128#169'3' + +#151#183'?'#158#188'x'#196#212#133#209#225#17#128#169#17#128#169#150#248#247 + +'u'#239#249'N'#227#250'&'#215#252'+'#214#251'x'#138'~'#140#127'j'#139#196#201 + +'_'#195#222'0'#168#211#17#128#169#25#135#174'H'#159#178'C'#191#213'$'#207#244 + +'+'#213#250'V'#223#250#128#232#248#138#225#238'N'#182#213' '#147#188#17#130 + +#171#17#128#169#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252'+' + +#214#251'V'#223#250#128#232#248#145#230#243'b'#201#228'0'#168#210#17'~'#167 + +#141#239#240'u'#239#249'N'#227#250'&'#214#251'*'#208#244'Q'#210#235'y'#219 + +#234#142#225#238'b'#201#228'0'#169#212#22#151#202#17#128#169#17#128#169#150 + +#248#247#129#240#248'u'#234#248'w'#231#248'z'#231#248#143#236#247#164#240#247 + +#172#239#244#127#212#230'='#168#204#16'v'#156#145#239#238's'#235#245'J'#215 + +#237'"'#193#226'$'#177#208'A'#170#190'f'#185#197#134#213#225'b'#200#227'0' + +#169#212#22#153#204#17#128#169#17#128#169#165#233#236'x'#196#212'?'#158#188 + +'3'#151#183#17#128#169#17#128#169#17#128#169'3'#151#183'<'#150#178'l'#140#141 + +#13'c'#131#128#211#210'd'#205#214'<'#175#193'*'#135#150'aVDkT>R'#149#159'z' + +#193#204'`'#196#223'0'#169#212#22#153#204#17#128#169#17#128#169#25#135#174'<' + +#176#204'>'#202#230'$'#209#246'+'#214#251'V'#223#250#128#232#248#136#222#235 + +'exuhE0'#10'Mfe'#155#152'hsc'#133'B'#27#156'7'#0#175'J'#1#153'3'#0'Rxzm'#172 + +#182'\'#188#214'0'#169#212#22#153#204#17#128#169#17#128#169#142#241#242'u' + +#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#128#232#248#139#220#233 + +#144'A'#23#153'3'#0'c9!'#148'8'#8#172'L'#14#192'd'#20#207'q'#17#205'k'#7#172 + +'G'#1'oWAb'#156#165'X'#180#204'0'#168#211#22#153#204#17#128#169#17#128#169 + +#150#248#247'u'#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#127#230 + +#246#137#158#150#162'@'#10#188'i*'#193'q1'#212#140'A'#217#143'<'#215#138'6' + +#215#137'7'#213#132'1'#200'r('#150'I'#31'o'#181#181'z'#214#219'Q'#201#228#30 + +#162#210#17#128#169#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252 + +'+'#214#251'V'#223#250'}'#227#242#145'W3'#200#127'A'#229#179'q'#230#179'q' + +#227#173'j'#226#170'g'#225#165'b'#211#141'K'#191'n5'#168'N'#31#151'W/'#141 + +#204#196#148#240#238#136#243#247'a'#230#250#17#128#169#17#128#169#150#248#247 + +'u'#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#129#193#196#158';'#7 + +#234#192#134#239#208#158#241#212#166#234#197#148#210#151'd'#178'_/'#161'J'#30 + +#158#127'c'#151#209#201#149#242#240#152#248#246#153#249#247#17#128#169#17#128 + +#169#255#0#255#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252'+'#214 + ,#251'V'#223#250#134#173#168#160'N#'#191'{P'#229#197#160#225#190#154#164'H'#27 + +'oA''Qbe'#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#17#128#169#163#249#248#174#246#251#172#246#251 + +#160#246#249#156#249#247#153#249#247#153#249#247#150#233#230#141#152#133#150 + +'Q*'#172'Y.'#144'4'#6#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#255#255 + +#244#254#254#219#253#252#194#251#250#168#250#248#154#249#247#153#249#247#153 + +#249#247#153#249#247#137#244#248'r'#172#170#144'4'#6#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#17#128#169#17#128#169#236#254#254#211#252#252#186#251 + +#250#162#250#248#153#249#247#153#249#247#153#249#247#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#17 + +#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDAREMOTEDATAADAPTER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#17#128#169#17#128#169 + +#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#255#0#255#255#0#255 + +#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#128#0#0'@'#0#0'$}'#145#25#149#178'%'#183#215'Q'#210#235'~'#229#245#130#218 + +#234'J'#179#210#17#128#169#17#128#169#255#0#255#128#0#0#255#255#255#128#0#0 + +#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128 + +#0#0#255#255#255#128#0#0'@'#0#0'aTA'#29'u'#133#29#144#168'I'#188#211'|'#225 + +#240#145#230#243'b'#201#228'0'#169#212#21#148#197#17#128#169#128#0#0#255#255 + +#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128 + +#0#0#128#0#0#255#255#255#128#0#0'@'#0#0#174'L'#8#158'='#12'JfaH'#186#209'}' + +#227#242#145#230#243'b'#201#228'0'#169#212#22#153#204#17#128#169#128#0#0#255 + +#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255 + +#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#216#140';'#168'N'#31'5' + +#130#140'M'#200#225#127#230#246#145#230#243'b'#201#228'0'#169#212#22#153#204 + +#17#128#169#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255 + +#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#203 + +#130'F|M."'#168#197'R'#213#238#128#232#248#145#230#243'b'#201#228'0'#169#212 + +#22#153#204#17#128#169#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#128#0#0'@'#0#0#177']-Jok&'#187#220'U'#220#247#128#232#248#145 + +#230#243'b'#201#228'0'#169#212#22#153#204#17#128#169#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#159'N"'#152'R+a'#188#202's'#217#233#143#236#247#164#240#247#172#239#244 + +#129#215#233'A'#178#216#22#153#204#17#128#169#17#128#169#150#248#247'u'#239 + +#249'N'#227#250'&'#215#252'2'#203#234#154'I'#30#199#136'Z'#169'S&'#139'X9Trw' + +#16'z'#161#163#230#233#137'pZdib0'#142#172#17'}'#166#17#128#169#17#128#169'3' + +#151#183'?'#158#188'x'#196#212#133#209#225#17#128#169#17#128#169#150#248#247 + +'u'#239#249'N'#227#250'&'#215#252'+'#214#251'x'#138'~'#140#127'j'#139#196#201 + +'_'#195#222'0'#168#211#17#128#169#25#135#174'H'#159#178'C'#191#213'$'#207#244 + +'+'#213#250'V'#223#250#128#232#248#138#225#238'N'#182#213' '#147#188#17#130 + +#171#17#128#169#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252'+' + +#214#251'V'#223#250#128#232#248#145#230#243'b'#201#228'0'#168#210#17'~'#167 + +#141#239#240'u'#239#249'N'#227#250'&'#214#251'*'#208#244'Q'#210#235'y'#219 + +#234#142#225#238'b'#201#228'0'#169#212#22#151#202#17#128#169#17#128#169#150 + +#248#247#129#240#248'u'#234#248'w'#231#248'z'#231#248#143#236#247#164#240#247 + +#172#239#244#127#212#230'='#168#204#16'v'#156#145#239#238's'#235#245'J'#215 + +#237'"'#193#226'$'#177#208'A'#170#190'f'#185#197#134#213#225'b'#200#227'0' + +#169#212#22#153#204#17#128#169#17#128#169#165#233#236'x'#196#212'?'#158#188 + +'3'#151#183#17#128#169#17#128#169#17#128#169'3'#151#183'<'#150#178'l'#140#141 + +#13'c'#131#128#211#210'd'#205#214'<'#175#193'*'#135#150'aVDkT>R'#149#159'z' + +#193#204'`'#196#223'0'#169#212#22#153#204#17#128#169#17#128#169#25#135#174'<' + +#176#204'>'#202#230'$'#209#246'+'#214#251'V'#223#250#128#232#248#136#222#235 + +'exuhE0'#10'Mfe'#155#152'hsc'#133'B'#27#156'7'#0#175'J'#1#153'3'#0'Rxzm'#172 + +#182'\'#188#214'0'#169#212#22#153#204#17#128#169#17#128#169#142#241#242'u' + +#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#128#232#248#139#220#233 + +#144'A'#23#153'3'#0'c9!'#148'8'#8#172'L'#14#192'd'#20#207'q'#17#205'k'#7#172 + +'G'#1'oWAb'#156#165'X'#180#204'0'#168#211#22#153#204#17#128#169#17#128#169 + +#150#248#247'u'#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#127#230 + +#246#137#158#150#162'@'#10#188'i*'#193'q1'#212#140'A'#217#143'<'#215#138'6' + +#215#137'7'#213#132'1'#200'r('#150'I'#31'o'#181#181'z'#214#219'Q'#201#228#30 + +#162#210#17#128#169#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252 + +'+'#214#251'V'#223#250'}'#227#242#145'W3'#200#127'A'#229#179'q'#230#179'q' + +#227#173'j'#226#170'g'#225#165'b'#211#141'K'#191'n5'#168'N'#31#151'W/'#141 + +#204#196#148#240#238#136#243#247'a'#230#250#17#128#169#17#128#169#150#248#247 + +'u'#239#249'N'#227#250'&'#215#252'+'#214#251'V'#223#250#129#193#196#158';'#7 + +#234#192#134#239#208#158#241#212#166#234#197#148#210#151'd'#178'_/'#161'J'#30 + +#158#127'c'#151#209#201#149#242#240#152#248#246#153#249#247#17#128#169#17#128 + +#169#255#0#255#17#128#169#150#248#247'u'#239#249'N'#227#250'&'#215#252'+'#214 + ,#251'V'#223#250#134#173#168#160'N#'#191'{P'#229#197#160#225#190#154#164'H'#27 + +'oA''Qbe'#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#17#128#169#163#249#248#174#246#251#172#246#251 + +#160#246#249#156#249#247#153#249#247#153#249#247#150#233#230#141#152#133#150 + +'Q*'#172'Y.'#144'4'#6#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#255#255 + +#244#254#254#219#253#252#194#251#250#168#250#248#154#249#247#153#249#247#153 + +#249#247#153#249#247#137#244#248'r'#172#170#144'4'#6#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#17#128#169#17#128#169#236#254#254#211#252#252#186#251 + +#250#162#250#248#153#249#247#153#249#247#153#249#247#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#17 + +#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169#17#128#169 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); +LazarusResources.Add('TDASCHEMA','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#0'K'#0 + +#12#152#25#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#0'K'#0#24#169'-'#17#160'#'#12#152#25#0'K'#0#255#0#255#255#0#255#255#0 + +#255#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#0 + +'K'#0'&'#186'D'#31#177'8'#24#169'-'#17#160'#'#12#152#25#0'K'#0#255#0#255#255 + +#0#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0 + +#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0#0'4' + +#203'\,'#193'N&'#186'D'#31#177'8'#23#167','#17#159'!'#12#151#24#0'K'#0#255#0 + +#255#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0'>'#215'm4'#203'\,'#193'N&'#186'D'#29#176'6'#23#167','#17#159'!'#9#138#19#0 + +'K'#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#255 + +#255#255#255#255#255#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0'@'#0#0 + +'>'#215'm9'#209'f4'#203'\,'#193'N&'#186'D'#29#176'6'#17#151'"'#0'K'#0#255#0 + +#255#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#128#0#0'@'#0#0#0'K'#0'>'#215'm9'#209'f4'#203'\,'#193'N'#28#164'3'#0'K'#0 + +#255#0#255#255#0#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#255#0#255#255#0 + +#255#0'K'#0'>'#215'm9'#209'f&'#177'E'#0'K'#0#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#0'/'#188'T'#0'K'#0 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0'K'#0'/'#188'T'#0'K'#0#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#0 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#0'K'#0#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0 + +'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0'K'#0#0 + +'K'#0#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#0'K'#0#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#0'K'#0#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0 + +#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#0#0#130#3'('#255#0#30#254#0#24#243#0#18#225#0#13#204#1#10#182#3#7#164#0 + +#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#0#0#130#12'5'#255#3'('#255#0'!'#255#0#24#243#0#18#225#0#15#212#1#10#187 + +#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#0#0#130#24'C'#255#12'5'#255#3'('#255#0'!'#255#0#30#254#0#20#234#0 + +#15#212#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0#0#130'&R'#255#24'C'#255#18'='#255#3'('#255#0'!'#255#0#30#254 + +#0#20#234#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0#0#130'/]'#255'&R'#255#24'C'#255#22'A'#255#12'5'#255#0'!'#255 + +#0#30#254#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + ,#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0#0#130'1^'#255'1^'#255'1^'#255#24'C'#255#22'A'#255#12'5'#255 + +#3'('#255#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0#0#130'1^'#255'1^'#255'/]'#255'1^'#255#24'C'#255#22'A'#255#12 + +'5'#255#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0#130#0#0 + +#130#0#0#130#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255 +]); +LazarusResources.Add('TDASERVERLOG','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#194#30#0#0#194#30#0#0#0#0#0#0#0#0#0#0#255#0#255'>'#0#0'>'#0#0'>'#0 + +#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0'>'#0#0#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0 + +'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'>'#0#0#183#129#131#183#129#131#183#129 + +#131#183#129#131#183#129#131#183#129#131#183#129#131#183#129#131#183#129#131 + +#255#0#255'}'#4#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'}'#4 + +#0'>'#0#0#254#220#182#254#216#173#254#220#182#254#215#171#254#215#171#254#215 + +#171#254#215#171#254#215#171#179#137'{'#255#0#255'}'#4#0#255#255#255'}'#4#0 + +'}'#4#0'}'#4#0#255#255#255#255#255#255'}'#4#0#255#255#255#255#255#255'}'#4#0 + +#255#255#255'}'#4#0'>'#0#0#254#220#182#254#220#182#254#215#171#254#220#182 + +#254#216#173#254#216#173#254#215#171#254#215#171#179#137'{'#255#0#255'}'#4#0 + +#255#255#255'}'#4#0#255#255#255#255#255#255'}'#4#0#255#255#255'}'#4#0'}'#4#0 + +'}'#4#0'}'#4#0#255#255#255'}'#4#0'>'#0#0#254#220#182#254#220#182#0#153#0#254 + +#216#173#254#220#182#254#216#173#254#216#173#254#216#173#179#137'{'#255#0#255 + +'}'#4#0#255#255#255'}'#4#0#255#255#255#255#255#255'}'#4#0#255#255#255'}'#4#0 + +#255#255#255#255#255#255'}'#4#0#255#255#255'}'#4#0'>'#0#0#254#222#185#0#153#0 + +#0#153#0#0#153#0#254#220#182#254#216#173#254#216#173#254#216#173#179#137'{' + +#255#0#255'}'#4#0#255#255#255'}'#4#0'}'#4#0'}'#4#0#255#255#255#255#255#255 + +#255#255#255'}'#4#0'}'#4#0#255#255#255#255#255#255'}'#4#0'>'#0#0#0#153#0'K' + +#144'<~'#164'^'#0#153#0'o'#156'Q'#254#220#182#254#216#173#254#216#173#179#137 + +'{'#255#0#255'}'#4#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +'}'#4#0'>'#0#0#0#153#0#254#222#185#254#222#185#192#194#141#0#153#0#0#153#0 + +#254#220#182#254#216#173#179#137'{'#255#0#255'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}' + +#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0'}'#4#0#254#228#198#254 + +#228#198#254#228#198#254#222#185#254#222#185#242#217#178#0#153#0#0#153#0#254 + +#220#182#179#137'{'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#179#137 + +'{'#254#240#225#254#240#222#254#238#220#254#238#220#254#233#209#254#233#209 + +#254#233#209#254#231#204#254#231#204#254#228#198#254#228#198#254#228#198#254 + +#228#198#254#220#182#254#222#185#254#222#185#254#220#182#179#137'{'#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#182#139#128#254#240#225#254#240#225 + +#254#240#222#254#238#220#254#238#220#254#238#220#254#233#209#254#233#209#254 + +#232#206#254#231#204#254#228#198#0#153#0#254#228#198#254#228#198#254#222#185 + +#254#222#185#254#222#185#179#137'{'#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#186#142#130#254#244#233#254#240#225#254#240#225#254#240#225#254 + +#238#220#254#238#220#254#233#209#254#233#209#254#233#209#254#232#206#0#153#0 + +#0#153#0#0#153#0#254#228#198#254#228#198#254#222#185#254#222#185#179#137'{' + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#190#146#131#254#244#233 + +#254#244#233#223#153'>'#223#153'>'#223#153'>'#223#153'>'#223#153'>'#223#153 + +'>'#254#233#209#0#153#0'K'#147'A~'#169'g'#0#153#0'o'#160'X'#254#228#198#254 + +#228#198#254#228#198#179#137'{'#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#194#150#133#255#248#239#254#244#233#254#244#233#254#244#233#254#240#225 + +#254#240#225#254#240#225#254#238#220#254#238#220#0#153#0#254#231#204#254#233 + +#209#192#201#156#0#153#0#0#153#0#254#228#198#254#224#190#179#137'{'#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#198#153#134#254#248#241#254#248#241 + +#254#244#233#254#244#233#254#244#233#254#240#225#254#240#225#254#240#225#254 + +#238#220#254#238#220#254#233#209#254#233#209#254#233#209#242#226#197#0#153#0 + +#0#153#0#254#228#198#182#139#128#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#202#156#136#254#248#241#254#248#241#254#248#241#255#248#239#254#244 + +#233#254#244#233#254#244#233#254#240#225#254#240#225#254#240#222#254#238#220 + +#254#238#220#254#233#209#254#233#209#254#233#209#254#231#204#254#231#204#156 + +#131'~'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#206#160#137#254#248 + +#241#254#248#241#254#248#241#254#248#241#254#244#233#254#244#233#254#244#233 + +#254#240#225#254#240#225#254#240#225#254#240#222#0#153#0#254#238#220#254#233 + +#209#254#233#209#254#233#209#254#231#204#156#131'~'#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#210#163#138#255#252#249#255#252#249#254#248#241#254 + +#248#241#254#248#241#254#248#241#255#248#239#254#244#233#254#244#233#254#240 + +#225#0#153#0#0#153#0#0#153#0#254#238#220#254#238#220#254#233#209#254#232#206 + +#156#131'~'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#210#163#138#254 + +#248#241#255#252#249#223#153'>'#223#153'>'#223#153'>'#223#153'>'#223#153'>' + +#223#153'>'#254#244#233#0#153#0'K'#147'A~'#174'q'#0#153#0'o'#165'b'#254#238 + ,#220#254#233#209#254#233#209#173#130't'#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#222#173#142#255#252#249#255#252#249#255#252#249#255#252#249 + +#254#248#241#254#248#241#254#248#241#254#248#241#254#244#233#0#153#0#254#240 + +#225#254#244#233#192#209#172#0#153#0#0#153#0#254#238#220#254#238#220#184#130 + +#133#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#222#173#142#254#248 + +#241#255#252#249#254#248#241#255#252#249#255#252#249#255#252#249#254#248#241 + +#254#248#241#254#248#241#254#248#241#254#248#241#254#244#233#254#240#225#243 + +#236#218#0#153#0#0#153#0#254#238#220#156#131'~'#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#222#173#142#255#252#249#255#252#249#255#252#249#255#252 + +#249#255#252#249#255#252#249#255#252#249#255#252#249#254#248#241#254#248#241 + +#255#248#239#254#244#233#254#244#233#254#244#233#254#240#225#254#240#225#254 + +#240#222#156#131'~'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#222#173 + +#142#254#248#241#255#252#249#254#248#241#255#252#249#254#248#241#255#252#249 + +#254#248#241#255#252#249#254#248#241#254#248#241#254#248#241#254#248#241#255 + +#248#239#254#244#233#254#244#233#254#240#225#254#240#225#156#131'~'#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#218#164#130#218#171#141#218#164#130 + +#218#171#141#218#164#130#218#171#141#218#164#130#218#171#141#218#164#130#218 + +#164#130#218#164#130#218#164#130#218#164#130#218#164#130#218#164#130#218#164 + +#130#218#164#130#218#164#130#156#131'~'#255#0#255 +]); +LazarusResources.Add('TDAXMLDATASTREAMER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#142']' + +'Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y'#142']Y' + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#225#189#255#221#181#255#217#172#255 + +#213#165#255#211#157#255#207#151#255#203#145#255#201#140#255#199#135#128'PK' + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0 + +#0#255#231#203#255#227#194#255#224#187#255#220#178#0#0#0#255#212#161#255#208 + +#156#0#0#0#255#203#143#128'PK'#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0 + +#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0'@'#0#0#255#238#217#255#233#208#255#230#199#255#226#191#0#0#0#255#218 + +#175#255#215#166#0#0#0#255#207#152#128'PK'#128#0#0#255#255#255#128#0#0#255 + +#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255 + +#255#255#128#0#0'@'#0#0#255#243#229#255#240#222#255#235#213#255#233#204#255 + +#229#197#0#0#0#0#0#0#255#216#171#255#213#165#128'PK'#128#0#0#255#255#255#128 + +#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0'@'#0#0#7'9z'#255#246#233#255#242#225#255#238 + +#218#0#0#0#255#231#203#255#227#193#0#0#0#255#218#176#128'PK'#128#0#0#255#255 + +#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#128 + +#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#255#254#250#255#250#244#255#248 + +#239#255#244#231#0#0#0#255#238#215#255#233#206#0#0#0#255#225#189#128'PK'#128 + +#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0 + +#255#255#255#255#254#252#255#252#247#255#250#242#255#246#235#255#243#227#255 + +#239#220#255#235#211#255#231#203#128'PK'#128#0#0#128#0#0#128#0#0#128#0#0#128 + +#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#254#250#255#251#246#255#248#239 + +#255#244#231#255#242#225#255#238#217#128'PKHJK'#201#194#201#7'9z'#7'9z'#7'9z' + +'='#154#242'5'#149#239'-'#140#239#7'9z'#7'9z'#7'9zyyy'#194#140'm'#255#255#255 + +#255#255#255#255#255#255#137#167#199#7'9z'#137#167#199#255#252#248#247#240 + +#235#226#218#209#226#216#204'{MIHJK'#206#199#204#191#184#192#7'9z@'#157#242 + +'@'#157#242'@'#157#242'9'#152#240'2'#145#239#7'9zE_{yyy'#203#147'o'#255#255 + +#255#255#255#255#137#167#199#7'9z'#15's'#233#7'9z'#137#167#199#234#233#230 + +#182#180#176#182#177#171'uIEHJK'#209#202#209#194#188#194'h'#129#163#7'9z@' + +#157#242'@'#157#242'@'#157#242#7'9zE_{{{{yyy'#209#153'r'#255#255#255#137#167 + +#199#7'9z'#15's'#233#15's'#233#15's'#233#7'9zURf'#160'g['#160'g['#149'\KHJK' + +#213#207#213#197#191#197#194#188#194'Qk'#138#7'9z@'#157#242#7'9zId'#128'yzzy' + +'yyyyy'#216#159'u'#137#167#199#7'9z'#27'}'#235#22'y'#234#18'u'#233#15's'#233 + +#15's'#233#7'9z'#254#176'J'#240#145','#225#132'.HJK'#217#213#217#201#196#202 + +#199#192#198#150#146#152'0Kf'#7'9z,D^'#137#137#137#127#127#127#130#130#131'y' + +'yy'#220#163'v'#7'9z'#7'9z'#7'9z'#31#130#235#27'}'#235#22'y'#234#7'9z'#7'9z' + +#7'9z'#218#152'c'#255#0#255'HJK'#225#218#224#207#201#206#199#192#198#151#150 + +#153'UWX'#175#175#177'JLM'#137#137#137#128#128#128#132#132#132#127#127#127 + +#220#163'v'#209#146'm'#209#146'm'#7'9z-'#140#239'%'#135#238#31#130#237#7'9zX' + +'Th'#212#154's'#255#0#255#255#0#255'HJK'#231#226#230#212#207#211#225#218#224 + +#152#149#152'UWX'#176#175#177'LNO'#150#149#149#132#131#131'vvvyyy'#143#143 + +#143#131#132#132'*C]'#7'9z7'#150#240'2'#146#240#7'9z'#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255'HJK'#239#235#239#235#233#235#198#197#199#160#157 + +#161'UWX'#164#165#167';=>'#130#130#131#137#137#137#143#143#143#137#137#137 + +#147#147#147'Id'#128#7'9z@'#157#242'@'#157#242'='#154#242#7'9z'#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255'HJK'#238#237#238#178#177#180#156#153#156 + +#159#158#161'RTU'#235#235#237'ossY[Z'#7'9z'#7'9z'#7'9z'#7'9z'#7'9z@'#157#242 + +'@'#157#242#7'9z'#7'9z'#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255'HJK'#237#235#237#129#129#130#213#209#212#207#207#208'`cdprrxy{'#138 + +#142#140#171#172#172'Xt'#146#7'9z'#7'9z'#7'9z'#7'9z'#7'9z'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#251#251 + +#252#204#204#204#254#254#254#227#227#230#186#184#188#151#149#152#136#134#137 + +'xy{rssfihehi'#150#152#153#150#152#153'HJK'#255#0#255#255#0#255#255#0#255#255 + +#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'HJK'#255#255#255#251 + +#251#252#238#238#242#237#238#240#231#230#233#217#213#217#196#192#196#172#170 + +#172#151#145#151#136#131#136#150#142#146#136#129#131'HJK'#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + ,#255'HJK'#255#255#255#255#255#255#246#246#248#248#247#251#237#237#239#226#226 + +#229#209#207#212#194#191#196#193#187#193#167#159#165'HJKHJK'#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255'HJKHJK'#255#255#255#255#255#255#255#255#255 + +#240#239#243#229#225#230#203#197#203'HJKHJK'#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255'LNOHJKHJKHJKHJKHJK' + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res new file mode 100644 index 0000000..f6af17a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Mac.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Mac.lpk new file mode 100644 index 0000000..82ed795 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Mac.lpk @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk new file mode 100644 index 0000000..4cde31d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Unix.lpk @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk new file mode 100644 index 0000000..35d24ac --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Lazarus_Windows.lpk @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas new file mode 100644 index 0000000..a3d833e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Core_Reg.pas @@ -0,0 +1,80 @@ +unit DataAbstract_Core_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +procedure Register; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + Classes, + uDARes, uDAInterfaces, uDAClasses, uDADriverManager, + uDABinAdapter, uDAXMLAdapter, uDADataTable, uDADesigntimeCall,uDABin2DataStreamer, + uDAJSONDataStreamer, + {$IFNDEF FPC}uDACDSDataTable,uDADatasetProvider,uDACache,{$ENDIF FPC} + uDARemoteDataAdapter,uDALocalDataAdapter, + {$IFDEF MSWINDOWS} + {$IFNDEF FPC} + uDAADODataTable, + {$ENDIF} + {$ENDIF MSWINDOWS} + uDABusinessProcessor, + uDADBSessionManager, + uDAServerLog, + uDAMemDataTable, + uDARemoteCommand, uDALocalCommand, + uDAPoweredByDataAbstractButton; + +{$IFNDEF FPC} + {$R DataAbstract_Core_Glyphs.res} +{$ENDIF} + +procedure Register; +begin + RegisterComponents(DAPalettePageName, + [TDAPoweredByDataAbstractButton, + TDADriverManager, + TDAConnectionManager, + TDASchema, + TDADiagrams, + TDADataDictionary, + TDABin2DataStreamer, + TDAXMLDataStreamer, + TDAJSONDataStreamer, + TDARemoteDataAdapter, TDALocalDataAdapter, + {$IFNDEF FPC} + TDADatasetProvider, + {$ENDIF FPC} + TDAMemDataTable, + TDABusinessProcessor, + TDADesigntimeCall, + TDADataSource, + TDARemoteCommand, TDALocalCommand, + TDAServerLog]); +{$WARN SYMBOL_DEPRECATED OFF} + RegisterComponents('RemObjects Data Abstract (Legacy)', [TDABinAdapter,TDABinDataStreamer + {$IFNDEF FPC},TDACDSDataTable, TDAADODataTable, TDAXMLAdapter,TDACache{$ENDIF}]); +{$WARN SYMBOL_DEPRECATED ON} + RegisterComponents('RemObjects SDK', [TDADBSessionManager]); +end; + +{$IFDEF FPC} +initialization + {$I DataAbstract_Core_Glyphs.lrs} +{$ENDIF} +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj new file mode 100644 index 0000000..81d84c2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_Scripting_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Scripting Integration Library False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10;..\..\Pascal Script\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + + $00000000 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg new file mode 100644 index 0000000..6d65c2e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.cfg @@ -0,0 +1,52 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-U"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-O"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-I"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-R"..\Dcu\D10;..\..\Pascal Script\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk new file mode 100644 index 0000000..14457eb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D10, + DataAbstract_Core_D10, + PascalScript_Core_D10; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk new file mode 100644 index 0000000..2e5cb89 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dpk @@ -0,0 +1,42 @@ +package DataAbstract_Scripting_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D11, + DataAbstract_Core_D11, + PascalScript_Core_D11; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj new file mode 100644 index 0000000..9a099a4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.dproj @@ -0,0 +1,560 @@ + + + {3fb27763-9440-44c3-bb51-17969172e8fe} + DataAbstract_Scripting_D11.dpk + Release + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Scripting_D11.bpl + + + 7.0 + False + False + True + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + False + False + + + 7.0 + True + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + ..\Dcu\D11;..\..\Pascal Script for Delphi\Dcu\D11 + False + False + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Scripting Integration LibraryFalseFalseFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_Scripting_D11.dpk + + + + + MainSource + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dpk new file mode 100644 index 0000000..aa68349 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_Scripting_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + RemObjects_Core_D12, + DataAbstract_Core_D12, + PascalScript_Core_D12; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dproj new file mode 100644 index 0000000..a58aede --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.dproj @@ -0,0 +1,90 @@ + + + {3fb27763-9440-44c3-bb51-17969172e8fe} + DataAbstract_Scripting_D12.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Scripting_D11.bpl + 11.1 + Base + + + true + + + 1 + ..\Dcu\D12 + ..\Dcu\D12 + ..\Dcu\D12;..\..\Pascal Script for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + ..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\Dcu\D12\DataAbstract_Scripting_D12.bpl + RemObjects Data Abstract - Scripting Integration Library + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_Scripting_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dpk new file mode 100644 index 0000000..e6f3cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_Scripting_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + RemObjects_Core_D14, + DataAbstract_Core_D14, + PascalScript_Core_D14; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dproj new file mode 100644 index 0000000..3fb2d6e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.dproj @@ -0,0 +1,90 @@ + + + {3fb27763-9440-44c3-bb51-17969172e8fe} + DataAbstract_Scripting_D14.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_Scripting_D11.bpl + 11.1 + Base + + + true + + + 1 + ..\Dcu\D14 + ..\Dcu\D14 + ..\Dcu\D14;..\..\Pascal Script for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + ..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\Dcu\D14\DataAbstract_Scripting_D14.bpl + RemObjects Data Abstract - Scripting Integration Library + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_Scripting_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg new file mode 100644 index 0000000..d94514b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-U"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof new file mode 100644 index 0000000..75f52a1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Scripting Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath=..\Dcu\D6;..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk new file mode 100644 index 0000000..4c39879 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_Scripting_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D6, + DataAbstract_Core_D6, + PascalScript_Core_D6; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res new file mode 100644 index 0000000..5f31444 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof new file mode 100644 index 0000000..97dc0fb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Scripting Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk new file mode 100644 index 0000000..34f8513 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.dpk @@ -0,0 +1,43 @@ +package DataAbstract_Scripting_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Scripting Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + RemObjects_Core_D7, + DataAbstract_Core_D7, + PascalScript_Core_D7, + dsnap, + adortl; + +contains + uDAPascalScript in 'uDAPascalScript.pas', + uDAPSScriptingProvider in 'uDAPSScriptingProvider.pas', + DataAbstract_Scripting_Reg in 'DataAbstract_Scripting_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs new file mode 100644 index 0000000..ad57b0f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.lrs @@ -0,0 +1,79 @@ +LazarusResources.Add('TDAPSSCRIPTINGPROVIDER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#19#11#0#0#19#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#1'>'#3#1'='#3#1'<'#3#1';'#3#255#0#255#255#0#255#255#0#255#255#0#255#255 + +#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#1'='#3#3#151#11#3#137#10#3#128#9#2 + +'z'#9#1'.'#2#1'4'#3#255#0#255#255#0#255#255#0#255#128#0#0#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#4#158#15#3#151#11#3#149 + +#11#3#149#11#3#145#10#3#132#10#2't'#9#1'-'#2'111'#255#0#255#128#0#0#255#255 + +#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#128#0#0'@'#0#0#7#163#24#5#160#16#3#158#12#3#158 + +#12#3#158#12#3#158#12#3#151#11#3'~'#9#1'.'#2#255#0#255#128#0#0#255#255#255 + +#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#255#255#255#128#0#0'@'#0#0#12#166'#'#8#163#26#255#255#255#3#158#12#3 + +#158#12#3#158#12#3#158#12#3#154#12#1'0'#3#255#0#255#128#0#0#255#255#255#128#0 + +#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#128#0#0#255#255#255#128#0#0'@'#0#0#15#170'.'#12#166'%'#255#255#255#255 + +#255#255#3#159#13#3#158#12#3#158#12#3#158#12#3#146#11#2'V'#5#128#0#0#255#255 + +#255#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#128 + +#0#0#255#255#255#255#255#255#128#0#0'@'#0#0#20#173':'#17#170'0'#255#255#255 + +#255#255#255#255#255#255#4#159#15#3#158#12#3#158#12#3#156#12#2'_'#6#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#24 + +#177'G'#21#173'='#255#255#255#255#255#255#255#255#255#7#163#24#4#160#16#3#158 + +#12#3#158#12#2'g'#6#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#28#178'N'#28#178'N'#26#177 + +'I'#255#255#255#255#255#255#15#169','#11#166'#'#8#163#25#5#160#17#3#158#12#2 + +'g'#6#255#0#255'KKK'#217#217#217#177#176#176#166#165#165#152#152#152#145#145 + +#145#137#137#137#255#255#255#255#255#255'D'#173'Mb'#206#137#137#218#167'&' + +#183'W'#28#178'N'#28#178'N'#255#255#255#23#175'A'#19#172'7'#15#170'-'#12#166 + +'$'#9#164#28#6#161#19#2'P'#5#255#0#255'KKK'#226#226#226#193#193#193#177#177 + +#177#159#159#159#153#153#153#144#144#144#209#209#209#255#255#255#177#215#163 + +#10#143#22#154#225#181#131#217#164'.'#187'^'#28#178'N'#28#178'N'#27#178'L'#24 + +#176'D'#20#173':'#16#170'0'#13#167''''#7#135#16#255#0#255#255#0#255'KKK'#234 + +#233#233#209#208#208#189#188#188#167#167#167#163#163#163#151#151#151#194#193 + +#193#240#240#240#206#206#206'O'#180'T'#11#144#24#165#227#188#173#230#196'i' + +#208#143'A'#193'n5'#189'e6'#189'f-'#184'Y'#24#175'@'#9#139#19'5='#10#255#0 + +#255#255#0#255'KKK'#238#238#238#218#218#218#198#198#198#176#175#175#171#170 + +#170#158#158#158#177#177#177#226#226#226#208#208#208#166#166#166'_'#187'c'#10 + +#143#22'o'#211#149#153#224#180#149#222#176'}'#215#158'Z'#203#131'/'#187'`'#11 + +#140#22'K'#128':111'#255#0#255#255#0#255'KKK'#240#240#240#225#225#225#206#204 + +#204#182#182#182#199#199#199#191#190#190#153#152#152#227#227#227#226#226#226 + +#136#136#136#255#255#255#177#217#167'D'#178'O'#9#142#20#10#143#22#10#142#22#9 + +#139#19'B'#153'C'#176#186#132'~ee111'#255#0#255#255#0#255'KKK'#242#242#242 + +#230#230#230#212#211#211#191#189#189#204#204#204#234#234#234#218#218#218#229 + +#229#229#228#228#228#142#142#142#255#255#255#255#255#255#130#129#129#132#127 + +#127#138#127'~'#143#127#127#147'~~'#152'~~'#158'~}zee111'#255#0#255#255#0#255 + +'KKK'#243#242#242#233#233#233#218#218#218#196#196#196#197#196#196#228#227#227 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#187#185#185#137#127'~'#143#127#127#146'~~'#152'~~wfe111' + +#255#0#255#255#0#255'KKK'#243#243#243#235#235#235#224#224#224#206#204#204#207 + +#207#207#199#199#199#188#188#188#180#178#178#171#171#171#163#161#161#156#156 + +#156#147#147#147#140#140#140#134#134#134#130#129#129#131#127#127#137'~~'#143 + +#127'~'#146'~~uff111'#255#0#255#255#0#255'KKK'#243#243#243#238#238#238#230 + +#230#230#208#207#207#211#211#211#204#204#204#197#196#196#189#188#188#181#181 + +#181#173#172#172#170#169#169#159#159#159#151#151#151#142#142#142#134#134#134 + +#130#130#130#131#127#127#136#127#127#142#127'~pgg111'#255#0#255#255#0#255'KK' + +'K'#243#243#243#240#239#239#238#238#238#220#218#218#216#216#216#213#213#213 + +#206#204#204#199#198#198#191#189#189#183#182#182#182#182#182#171#171#171#159 + +#158#158#150#149#149#143#143#143#135#135#135#130#130#130#130#127#127#135#127 + +#127'mgf111'#255#0#255#255#0#255'KKK'#242#242#242#238#238#238#243#242#242#240 + +#239#239#238#238#238#235#235#235#231#231#231#226#226#226#218#218#218#208#208 + +#208#198#198#198#183#182#182#170#170#170#157#157#157#149#147#147#140#140#140 + ,#136#136#136#131#131#131#130#127#127'kgg111'#255#0#255#255#0#255'KKK'#239#239 + +#239#233#233#233#238#238#238#242#240#240#242#240#240#239#239#239#237#237#237 + +#234#234#234#227#227#227#218#218#218#206#206#206#193#193#193#177#177#177#165 + +#164#164#156#156#156#149#149#149#140#140#140#137#136#136#131#131#131'hgg111' + +#255#0#255#255#0#255'KKK'#216#216#216#239#239#239#242#242#242#243#243#243#244 + +#244#244#243#243#243#243#242#242#242#240#240#239#239#239#235#235#235#230#230 + +#230#225#224#224#217#217#217#211#211#211#207#207#207#203#202#202#199#199#199 + +#197#197#197#194#194#194'hgg111'#255#0#255#255#0#255#255#0#255'QQQQQQQQQQQQQ' + +'QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSSQQQQQQQQQQQQ'#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255 + +#255#0#255 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res new file mode 100644 index 0000000..fa5cad1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk new file mode 100644 index 0000000..35f6313 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Unix.lpk @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk new file mode 100644 index 0000000..b7fb091 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Lazarus_Windows.lpk @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas new file mode 100644 index 0000000..f71baf2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_Scripting_Reg.pas @@ -0,0 +1,40 @@ +unit DataAbstract_Scripting_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +procedure Register; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + Classes, uDAPSScriptingProvider, uDARes; + +{$IFNDEF FPC} + {$R DataAbstract_Scripting_Glyphs.res} +{$ENDIF FPC} + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAPSScriptingProvider]); +end; + +{$IFDEF FPC} +initialization + {$I DataAbstract_Scripting_Glyphs.lrs} +{$ENDIF} +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj new file mode 100644 index 0000000..ddab013 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.bdsproj @@ -0,0 +1,177 @@ + + + + + + + + + + + + DataAbstract_SimpleQuery_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Korzh SimpleQuery Integration Library False + + + + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10 + ..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg new file mode 100644 index 0000000..c44bc25 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\Dcu\D10" +-LE"..\Dcu\D10" +-LN"..\Dcu\D10" +-U"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-O"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-I"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-R"..\Dcu\D10;..\..\RemObjects SDK for Dephi\Dcu\D10" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk new file mode 100644 index 0000000..9f33f70 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D10, + dbrtl, + vcl, + DataAbstract_Core_D10, + PascalScript_Core_D10, + sq7, + kprocs7; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk new file mode 100644 index 0000000..795f67f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D11, + dbrtl, + vcl, + DataAbstract_Core_D11, + PascalScript_Core_D11, + sq11, + kprocs11; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj new file mode 100644 index 0000000..58bef6e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.dproj @@ -0,0 +1,71 @@ + + + {12feb998-13fa-45f9-8ee6-f5ab6077ef8e} + DataAbstract_SimpleQuery_D11.dpk + Debug + AnyCPU + DCC32 + ..\Dcu\D11\DataAbstract_SimpleQuery_D11.bpl + + + 7.0 + False + False + True + 0 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D10 + RELEASE + + + 7.0 + True + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + ..\Dcu\D11;..\..\RemObjects SDK for Dephi\Dcu\D11 + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Korzh SimpleQuery Integration LibraryFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0DataAbstract_SimpleQuery_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res new file mode 100644 index 0000000..c73b102 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg new file mode 100644 index 0000000..e2a8294 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.cfg @@ -0,0 +1,47 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"s:\exe" +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof new file mode 100644 index 0000000..29abd6f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dof @@ -0,0 +1,114 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Korzh SimpleQuery Integration Library + +[Directories] +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk new file mode 100644 index 0000000..b8c2834 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD OFF} + +requires + rtl, + RemObjects_Core_D6, + dbrtl, + vcl, + DataAbstract_Core_D6, + PascalScript_Core_D6, + sq6, + kprocs6; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg new file mode 100644 index 0000000..b26eab1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof new file mode 100644 index 0000000..7e2dfdc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Korzh SimpleQuery Integration Library + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription=ROServiceTester +FileVersion=3.0.0.257 +InternalName=ROServiceTester +LegalCopyright=Copyright RemObjects Software 2002 +LegalTrademarks=RemObjects Software 2002 +OriginalFilename=ROServiceTester.exe +ProductName=RemObjects SDK +ProductVersion=3.0.0.0 +Compile Date=Sunday, March 21, 2004 5:55 PM + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk new file mode 100644 index 0000000..63ff17e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.dpk @@ -0,0 +1,42 @@ +package DataAbstract_SimpleQuery_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Korzh SimpleQuery Integration Library'} +{$IMPLICITBUILD ON} + +requires + rtl, + RemObjects_Core_D7, + dbrtl, + vcl, + DataAbstract_Core_D7, + PascalScript_Core_D7, + sq7, + kprocs7; + +contains + uDAKDBInfo in 'uDAKDBInfo.pas', + DataAbstract_SimpleQuery_Reg in 'DataAbstract_SimpleQuery_Reg.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res new file mode 100644 index 0000000..fff68a1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res new file mode 100644 index 0000000..4a5d497 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas new file mode 100644 index 0000000..5a9be83 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/DataAbstract_SimpleQuery_Reg.pas @@ -0,0 +1,33 @@ +unit DataAbstract_SimpleQuery_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +{$R DataAbstract_SimpleQuery_Glyphs.res} + +interface + +procedure Register; + +implementation + +uses + Classes, uDAKDBInfo; + +procedure Register; +begin + RegisterComponents('Data Abstract', [TDAKDBConnectionInfo, TDAKDBSchemaInfo]); +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas new file mode 100644 index 0000000..6382a1b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/ASGRout3.pas @@ -0,0 +1,424 @@ +{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +Author: Albert Drent +Description: ASGRout parser routines +Creation: Januari 1998 +Version: 1.2.B +EMail: a.drent@aducom.com (www.aducom.com) +Support: support@aducom.com (www.aducom.com) +Legal issues: Copyright (C) 2003 by Aducom Software + + Aducom Software + Eckhartstr 61 + 9746 BN Groningen + Netherlands + + This software is provided 'as-is', without any express or + implied warranty. In no event will the author be held liable + for any damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it + and redistribute it freely, subject to the following + restrictions: + + 1. The origin of this software must not be misrepresented, + you must not claim that you wrote the original software. + If you use this software in a product, an acknowledgment + in the product documentation would be appreciated but is + not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. If you make changes which improves the component you must + mail these to aducom as the moderator of the components + complete with documentation for the benefits of the community. + + 4. You are not allowed to create commercial available components + using this software. If you use this source in any way to create + your own components, your source should be free of charge, + available to anyone. It's a far better idea to distribute your + changes through Aducom Software. + + 5. This notice may not be removed or altered from any source + distribution. + + 6. You must register this software by entering the support forum. + I like to keep track about where the components are used, so + sending a picture postcard to the author would be appreciated. + Use a nice stamp and mention your name, street + address, EMail address and any comment you like to say. + +Modifications + 26/5/2004 Function YYYYMMDDParser by JPierce, necessary for + locale independent datehandling in SQLite components. + 1/9/2005 Changes to the StrToFloatX routine, now depending on + decimalseparator. + +*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } + +unit ASGRout3; + +interface + +uses SysUtils; + +const + vtcIdentifier = 1; + vtcNumber = 2; + vtcAssignment = 3; + vtcQString = 4; + vtcDString = 5; + vtcRelOp = 6; + vtcFloat = 7; + vtcDelimiter = 8; + vtcEof = 9; + +procedure FindErrorPos(InString: string; ErrPos: integer; + var TheLine, TheCol: integer); +function GetWord(var InString: string; var StartPos: integer; + var VarType: integer): string; +function GetWordByDelim(var InString: string; var StartPos: integer; + var Delim: string): string; +function PeekWord(var InString: string; StartPos: integer; + var VarType: integer): string; +function Recover(var InString: string; var StartPos: integer): boolean; +function StrToIntX(StrIn: string): integer; +function StrToFloatX(StrIn : string) : extended; +function StrToDateX(TheDate: string): TDateTime; +function StrToDateTimeX(const S: string): TDateTime; +function YYYYMMDDParser(Str: PChar): TDateTime; +function FloatParser(Str: string): string;// jordi march + +implementation + +function FloatParser(Str: string): string;// jordi march +var + Point: Byte; +begin + if DecimalSeparator <> '.' then begin + Point := Pos ('.', Str); + if Point <> 0 + then Str[Point] := DecimalSeparator; + end; + Result := Str; +end; + + //============================================================================== + // Convert dates to a correct datetime notation. Try several notations, + // starting with the system defaults + //============================================================================== + +function StrToDateTimeX(const S: string): TDateTime; +begin + if S = '' then + StrToDateTimeX := 0 + else begin + try + StrToDateTimeX := StrToDateTime(S); + except + StrToDateTimeX := StrToDateX(s); + end; + end; +end; + +function StrToDateX(TheDate: string): TDateTime; +var + DateFormat: string; + DateSep: char; +begin + DateFormat := ShortDateFormat; // save current settings + DateSep := DateSeparator; + try + try + StrToDateX := StrToDate(TheDate) + except + DateSeparator := '-'; + ShortDateFormat := 'dd-mm-yyyy'; + try + StrToDateX := StrToDate(TheDate) + except + ShortDateFormat := 'yyyy-mm-dd'; + try + StrToDateX := StrToDate(TheDate) + except + StrToDateX := StrToDateX('01-01-1900'); + raise; + end; + end; + end; + finally + ShortDateFormat := DateFormat; + DateSeparator := DateSep; + end; +end; + +// Routine submitted by jpierce, modified to accept more types +// It requires that the date be in strict yyyy-mm-dd [hh:nn:[ss[:mmm]]] + +function YYYYMMDDParser(Str: PChar): TDateTime; +var + Year, Month, Day, Hour, Min, Sec, MSec: Word; +begin + Result := 0; + + try + if Length(Str) >= 10 then // 10 = Length of YYYY-MM-DD + begin + Year := StrToInt(Copy(Str, 1, 4)); + Month := StrToInt(Copy(Str, 6, 2)); + Day := StrToInt(Copy(Str, 9, 2)); + + Result := EncodeDate(Year, Month, Day); + end; + + if Length(Str) > 10 then // it has a time + begin + Hour := StrToInt(Copy(Str, 12, 2)); + Min := StrToInt(Copy(Str, 15, 2)); + Sec := 0; + MSec := 0; + if Length(Str) > 16 then Sec := StrToInt(Copy(Str, 18, 2)); + if Length(Str) > 19 then Msec := StrToInt(Copy(Str, 21, 3)); + Result := Result + EncodeTime(Hour, Min, Sec, MSec); + end; + except + Result := 0; + end; +end; + +function StrToIntX(StrIn: string): integer; +var +E: Integer; +begin + Val(StrIn, Result, E); + if E <> 0 then Result := 0; +end; + +function StrToFloatX(StrIn : string) : extended; +begin + if not TextToFloat(PChar(StrIn), Result, fvExtended) then + Result := 0; +end; + +procedure FindErrorPos(InString: string; ErrPos: integer; + var TheLine, TheCol: integer); +var + i: integer; +begin + TheLine := 1; + TheCol := 1; + i := 1; + while i < ErrPos do + begin + if InString[i] in [ #10, #13] then + begin + Inc(TheLine); + TheCol := 1; + Inc(i); + Inc(i); + end + else + begin + Inc(TheCol); + Inc(i); + end; + end; +end; + +function Recover(var InString: string; + var StartPos: integer): boolean; +begin + if (StartPos > Length(InString)) then + begin + Recover := false; + exit; + end; + + while (Startpos < Length(InString)) and + ( not (InString[StartPos] in [ #10, #13])) do + Inc(StartPos); + Recover := true; +end; + +function PeekWord(var InString: string; StartPos: integer; + var VarType: integer): string; +begin + PeekWord := GetWord(InString, StartPos, VarType); +end; + +function GetWordByDelim(var InString: string; + var StartPos: integer; + var Delim: string): string; +var + Ret: string; +begin + Ret := ''; + while (StartPos <= Length(InString)) and (InString[StartPos] = ' ') do + Inc(StartPos); + while (StartPos <= Length(InString)) and (Pos(InString[StartPos], Delim) = 0) do + begin + Ret := Ret + InString[StartPos]; + Inc(StartPos); + end; + GetWordByDelim := Trim(Ret); +end; + +function GetWord(var InString: string; var StartPos: integer; + var VarType: integer): string; +var + TheChar: char; + Rv: string; +begin + if (StartPos > Length(InString)) then + begin + GetWord := ''; + VarType := vtcEof; + exit; + end; + + while (StartPos <= Length(InString)) and (InString[StartPos] <= #32) do + Inc(StartPos); + + TheChar := InString[StartPos]; + Rv := ''; + + if TheChar in ['a'..'z', 'A'..'Z'] then + VarType := vtcIdentifier + else if TheChar in ['0'..'9', '-'] then + VarType := vtcNumber + else if TheChar = ':' then + VarType := vtcAssignment + else if TheChar = '"' then + VarType := vtcDString + else if TheChar = '''' then + VarType := vtcQString + else if TheChar in ['>', '=', '<'] then + VarType := vtcRelOp + else + begin + Inc(StartPos); + if TheChar = '!' then + begin + Recover(InString, StartPos); + Rv := GetWord(InString, StartPos, VarType); + GetWord := Rv; + end + else + begin + GetWord := TheChar; + end; + exit; + end; + + case VarType of + vtcIdentifier: + begin + while InString[StartPos] in ['a'..'z', 'A'..'Z', '_','0'..'9'] do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + end; + vtcNumber: + begin + while InString[StartPos] in ['-', '0'..'9', '.'] do + begin + if InString[StartPos] = '.' then + VarType := vtcFloat; + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + if VarType = vtcFloat then + Rv := FloatToStr(StrToFloat(Rv)) + else + Rv := IntToStr(StrToInt(Rv)); + end; + vtcAssignment: + begin + Rv := InString[StartPos]; + Inc(StartPos); + if InString[StartPos] = '=' then + begin + Inc(StartPos); + Rv := ':='; + end + else + begin + VarType := vtcDelimiter; + Rv := ':'; + end; + end; + vtcQString: + begin + Inc(StartPos); + while InString[StartPos] <> '''' do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + Inc(StartPos); + end; + vtcDString: + begin + Inc(StartPos); + while InString[StartPos] <> '"' do + begin + Rv := Rv + InString[StartPos]; + Inc(StartPos); + end; + Inc(StartPos); + end; + vtcRelOp: + begin + Rv := InString[StartPos]; + if Rv = '<' then + begin + if InString[StartPos + 1] in ['=', '>'] then + begin + Rv := Rv + InString[StartPos + 1]; + StartPos := StartPos + 2; + end + else + begin + Inc(StartPos); + end; + end + else if Rv = '>' then + begin + if InString[StartPos + 1] in ['=', '<'] then + begin + Rv := Rv + InString[StartPos + 1]; + StartPos := StartPos + 2; + end + else + begin + Inc(StartPos); + end; + end + else + begin + Inc(StartPos); + end; + end; + end; + GetWord := Rv; +end; + +{$IFDEF SQLite_Static} +Var + TZInfo :_TIME_ZONE_INFORMATION; + TZRes :Integer; + +initialization + PInteger(@__timezone)^:=0; + PInteger(@__daylight)^:=0; + TZRes:=GetTimezoneInformation(TZInfo); + if TZRes>=0 Then + PInteger(@__timezone)^:=TZInfo.Bias*60; + if TZRes=TIME_ZONE_ID_DAYLIGHT Then + PInteger(@__daylight)^:=1; +{$ENDIF} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res new file mode 100644 index 0000000..98b7c6e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg new file mode 100644 index 0000000..fbc8cdc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.287 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr new file mode 100644 index 0000000..7d130a8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.dpr @@ -0,0 +1,13 @@ +library DAADODrv; + +uses + ShareMem, + uDAADODriver in 'uDAADODriver.pas', + uDAADOInterfaces in '..\uDAADOInterfaces.pas'; + +{$E dad} + +{$R *.res} +{$R DAADODriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAADODrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriver.html b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriver.html new file mode 100644 index 0000000..9f0be67 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriver.html @@ -0,0 +1,20 @@ +

AbsoluteDB Driver

+

+This driver allows you to connect to data sources accessible via AbsoluteDB. +

+

Step 2: Database

+

+Specify the complete path to your database (including the file name and extension) +

+

Step 3: Custom parameters

+

+You can specify additional AbsoluteDB specific options as a semicolon separated list of name/value pairs. Please address the AbsoluteDB specification for additional information on the available parameter options. +

+

Important Note

+

+You will need to adopt the following naming convention for your Autoinc column's GeneratorName property to enable the driver to obtain and return the LastAutoInc value. +

+<TableName>*<ColumnName> +

+e.g. 'Orders*OrderID' +

diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.rc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.rc new file mode 100644 index 0000000..fbfd5a3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.rc @@ -0,0 +1 @@ +DRIVER_HELP 2110 "DAAbsoluteDBDriver.html" diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.res new file mode 100644 index 0000000..30a5da7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.bdsproj new file mode 100644 index 0000000..ed9cd3e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.bdsproj @@ -0,0 +1,174 @@ + + + + + + + + + + + + DAAbsoluteDBDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\bin + + + + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 + + + False + + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + + False + + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.cfg new file mode 100644 index 0000000..63f903b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-GD +-cg +-vn +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dof new file mode 100644 index 0000000..64a663b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dof @@ -0,0 +1,120 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=1 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=$(DELPHI)\Lib\Debug +Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;dbexpress;dbxcds;indy;vclie;RemObjects_WebBroker_D6;inet;RemObjects_Indy_D6;RemObjects_RODX_D6;RemObjects_BPDX_D6;RemObjects_Synapse_D6;Jcl;JclVcl;JvCoreD6R;JvSystemD6R;JvStdCtrlsD6R;JvAppFrmD6R;JvBandsD6R;JvDBD6R;JvDlgsD6R;JvBDED6R;JvCmpD6R;JvCryptD6R;JvCtrlsD6R;JvCustomD6R;JvDockingD6R;JvDotNetCtrlsD6R;JvEDID6R;JvGlobusD6R;JvHMID6R;JvInterpreterD6R;JvJansD6R;JvManagedThreadsD6R;JvMMD6R;JvNetD6R;JvPageCompsD6R;JvPluginD6R;JvPrintPreviewD6R;JvRuntimeDesignD6R;JvTimeFrameworkD6R;JvUIBD6R;JvValidatorsD6R;JvWizardD6R;JvXPCtrlsD6R;mySQLDAC6;IBO40FTS_D6;IBO40TRT_D6;IBO40CRT_D6;IBO40RPL_D6;IBO40VRT_D6;IBO40FRT_D6;IBO40XRT_D6;IBO40WRT_D6;IBO40WXDT_D6;IBO40WXRT_D6;inetdb;webdsnap;websnap; +Conditionals= +DebugSourceDirs= +UsePackages=0 +Launcher= +UseLauncher=0 +DebugCWD= + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dpr new file mode 100644 index 0000000..93bd8c4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dpr @@ -0,0 +1,12 @@ +library DAAbsoluteDBDrv; + +uses + ShareMem, + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAAbsoluteDBDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dproj new file mode 100644 index 0000000..18a5047 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.dproj @@ -0,0 +1,112 @@ + + + {9B98595C-7A8A-4139-9638-98A40A460278} + DAAbsoluteDBDrv.dpr + Debug + DCC32 + 12.0 + + + true + + + true + Base + true + + + true + Base + true + + + ..\..\bin\DAAbsoluteDBDrv.dad + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;$(DCC_UnitSearchPath) + 3 + 00400000 + false + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias) + ..\..\bin + x86 + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 + true + false + true + false + 1 + true + false + false + + + false + RELEASE;$(DCC_Define) + 0 + false + + + DEBUG;$(DCC_Define) + + + + MainSource + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + VCLApplication + + + + DAAbsoluteDBDrv.dpr + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + False + True + False + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAbsoluteDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res new file mode 100644 index 0000000..93f013e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg new file mode 100644 index 0000000..9f8c69f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.cfg @@ -0,0 +1,37 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof new file mode 100644 index 0000000..b542147 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=5.0.5.25 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr new file mode 100644 index 0000000..ab5ec53 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.dpr @@ -0,0 +1,12 @@ +library DAAnyDACDrv; + +uses + ShareMem, + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAAnyDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res new file mode 100644 index 0000000..84f461e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAAnyDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res new file mode 100644 index 0000000..57e2373 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj new file mode 100644 index 0000000..720c571 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.bdsproj @@ -0,0 +1,173 @@ + + + + + + + + + + + + DABDEDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\bin + + + + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10 + + + False + + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + + False + + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg new file mode 100644 index 0000000..695c614 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-vn +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof new file mode 100644 index 0000000..593b787 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dof @@ -0,0 +1,94 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr new file mode 100644 index 0000000..f00c885 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.dpr @@ -0,0 +1,12 @@ +library DABDEDrv; + +uses + ShareMem, + uDABDEDriver in 'uDABDEDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DABDEDriverHtml.res} +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DABDEDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Purposesoft HtmlEdit 2.0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;CDKSmp;EaglWk;ESGraphUtils;ESBase;CDKDesignTimeSupport;ESVsCp;ESSampleCompositeEditors7;ESSampleComposites70;SynEdit_D7;dxsbD7;dxComnD7;dxExELD7;dxGrEdD7;ECQDBCD7;EQTLD7;dxEdtrD7;EQDBTLD7;EQGridD7;dxMasterViewD7;dxmdsd7;dxObjInsD7;dxPSCoreD7;Rz252N70;Rz252D70;madBasic_;madHelp_;madDisAsm_;madExcept_;EzSpecials_D7;sq7;kprocs7;dxDockingD7;dxLayoutControlD7;dxPageControlD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;Phoenix_Core_D7;cxPageControlVCLD7;dxELibD7;dxExRwD7;dxDBEdD7;dxInsD7;dxNavBarD7;Phoenix_IDE_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;cxWebD7;cxWebPascalScriptD7;cxWebTeeChartD7;cxWebSnapD7;SchemaModelerUtils_d7;Ani95_D7;DataAbstract_IDE_D7;DataAbstract_DiskDriver_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=3.0.0.50 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr new file mode 100644 index 0000000..8efca9c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.dpr @@ -0,0 +1,18 @@ +library DADBISAM3Drv; + +uses + ShareMem, + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +{$E dad} + +{$I dbisamvr.inc} +{$IFDEF DBISAM_V4} +Please only build this driver dpr with DBISAM3 +{$ENDIF DBISAM_V4} + +{$R *.res} +{$R DADBISAMDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM3Drv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg new file mode 100644 index 0000000..4a853d2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof new file mode 100644 index 0000000..af7d0f6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Purposesoft HtmlEdit 2.0 + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;CDKSmp;EaglWk;ESGraphUtils;ESBase;CDKDesignTimeSupport;ESVsCp;ESSampleCompositeEditors7;ESSampleComposites70;SynEdit_D7;dxsbD7;dxComnD7;dxExELD7;dxGrEdD7;ECQDBCD7;EQTLD7;dxEdtrD7;EQDBTLD7;EQGridD7;dxMasterViewD7;dxmdsd7;dxObjInsD7;dxPSCoreD7;Rz252N70;Rz252D70;madBasic_;madHelp_;madDisAsm_;madExcept_;EzSpecials_D7;sq7;kprocs7;dxDockingD7;dxLayoutControlD7;dxPageControlD7;cxEditorsVCLD7;cxLibraryVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;Phoenix_Core_D7;cxPageControlVCLD7;dxELibD7;dxExRwD7;dxDBEdD7;dxInsD7;dxNavBarD7;Phoenix_IDE_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;cxWebD7;cxWebPascalScriptD7;cxWebTeeChartD7;cxWebSnapD7;SchemaModelerUtils_d7;Ani95_D7;DataAbstract_IDE_D7;DataAbstract_DiskDriver_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=3.0.0.50 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr new file mode 100644 index 0000000..c81ef35 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.dpr @@ -0,0 +1,18 @@ +library DADBISAM4Drv; + +uses + ShareMem, + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +{$E dad} + +{$I dbisamvr.inc} +{$IFNDEF DBISAM_V4} +Please only build this driver dpr with DBISAM4 +{$ENDIF DBISAM_V4} + +{$R *.res} +{$R DADBISAMDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAM4Drv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res new file mode 100644 index 0000000..449e052 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBISAMDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res new file mode 100644 index 0000000..a6590c9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr new file mode 100644 index 0000000..4c68283 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.dpr @@ -0,0 +1,13 @@ +library DADBXDrv; + +uses + ShareMem, + uDADBXDriver in 'uDADBXDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DADBXDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADBXDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res new file mode 100644 index 0000000..077daa2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.cfg new file mode 100644 index 0000000..ce504fe --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J+ +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-LN"D:\Program files.all\Winsys\borland\DCP_70" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.dpr new file mode 100644 index 0000000..6282793 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.dpr @@ -0,0 +1,15 @@ +library DADOADrv; + +uses + ShareMem, + Forms, + SysUtils, + Classes, + uDADOADriver in 'uDADOADriver.pas'; + +{$E dad} + +{$R *.res} +{$R DADOADriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DADOADrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res new file mode 100644 index 0000000..e0b8925 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg new file mode 100644 index 0000000..a0ce1dc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-U"d:\program files.all\borland\delphi7\Lib\Debug;" +-O"d:\program files.all\borland\delphi7\Lib\Debug;" +-I"d:\program files.all\borland\delphi7\Lib\Debug;" +-R"d:\program files.all\borland\delphi7\Lib\Debug;" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr new file mode 100644 index 0000000..7f7050b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.dpr @@ -0,0 +1,12 @@ +library DAElevateDBDrv; + +uses + ShareMem, + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAElevateDBDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res new file mode 100644 index 0000000..08ba56e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAElevateDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res new file mode 100644 index 0000000..d12ca9d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg new file mode 100644 index 0000000..a17abb2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof new file mode 100644 index 0000000..1a2d3d6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsD7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.287 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr new file mode 100644 index 0000000..1373b9a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.dpr @@ -0,0 +1,12 @@ +library DAFIBDrv; + +uses + ShareMem, + uDAFIBDriver in 'uDAFIBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAFIBDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAFIBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res new file mode 100644 index 0000000..4732a47 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr new file mode 100644 index 0000000..5c46278 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.dpr @@ -0,0 +1,12 @@ +library DAIBDACDrv; + +uses + ShareMem, + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res new file mode 100644 index 0000000..32c06f3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr new file mode 100644 index 0000000..152fbe5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.dpr @@ -0,0 +1,13 @@ +library DAIBODrv; + +uses + ShareMem, + uDAIBODriver in 'uDAIBODriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBODriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBODrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res new file mode 100644 index 0000000..790cda2 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg new file mode 100644 index 0000000..b0ec5d7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr new file mode 100644 index 0000000..39dde39 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.dpr @@ -0,0 +1,13 @@ +library DAIBXDrv; + +uses + ShareMem, + uDAIBXDriver in 'uDAIBXDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAIBXDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAIBXDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res new file mode 100644 index 0000000..e1fa180 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr new file mode 100644 index 0000000..971e17b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.dpr @@ -0,0 +1,12 @@ +library DAMyDACDrv; + +uses + ShareMem, + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAMyDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMyDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr new file mode 100644 index 0000000..3a48d91 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.dpr @@ -0,0 +1,12 @@ +library DAMySQLDACDrv; + +uses + ShareMem, + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAMySQLDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAMySQLDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res new file mode 100644 index 0000000..46b9c33 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg new file mode 100644 index 0000000..7caebcd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Data Abstract\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr new file mode 100644 index 0000000..5d47e04 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.dpr @@ -0,0 +1,12 @@ +library DANexusDBDrv; + +uses + ShareMem, + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DANexusDBDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DANexusDBDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res new file mode 100644 index 0000000..a096da3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof new file mode 100644 index 0000000..daabfcd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr new file mode 100644 index 0000000..b2aa1e2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.dpr @@ -0,0 +1,13 @@ +library DAODACDrv; + +uses + ShareMem, + uDAODACDriver in 'uDAODACDriver.pas', + uDAOracleInterfaces in '..\uDAOracleInterfaces.pas'; + +{$E dad} + +{$R *.res} +{$R DAODACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAODACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.dpr new file mode 100644 index 0000000..25f9404 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.dpr @@ -0,0 +1,12 @@ +library DAPGDACDrv; + +uses + ShareMem, + uDAPGDACDriver in 'uDAPGDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAPGDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPGDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPgDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPgDACDriverHtml.res new file mode 100644 index 0000000..1b66d75 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPgDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res new file mode 100644 index 0000000..c7f7a82 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg new file mode 100644 index 0000000..40c80d0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof new file mode 100644 index 0000000..dd86d8f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dof @@ -0,0 +1,115 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.178 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr new file mode 100644 index 0000000..700c0aa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.dpr @@ -0,0 +1,12 @@ +library DAPostgresDACDrv; + +uses + ShareMem, + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAPostgresDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAPostgresDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res new file mode 100644 index 0000000..2ca3ed1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg new file mode 100644 index 0000000..301d58f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof new file mode 100644 index 0000000..8c8eb5f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.1.196 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr new file mode 100644 index 0000000..615439d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.dpr @@ -0,0 +1,12 @@ +library DASDACDrv; + +uses + ShareMem, + uDASDACDriver in 'uDASDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DASDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res new file mode 100644 index 0000000..316f711 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj new file mode 100644 index 0000000..584582a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.bdsproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + DASQLiteDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + D:\Program Files\RemObjects Software\Data Abstract + + + + $(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;$(DELPHI)\Lib\Debug + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 + + + False + + + + D:\Program Files\RemObjects Software\Data Abstract\DASchemaModeler.exe + + False + + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + RemObjects Data Abstract - FIBPlus Driver + RemObjects Hydra - Core Library + RemObjects Hydra - IDE Integration + RemObjects Hydra - RemObjects SDK Integration Library + RemObjects Hydra - RemObjects SDK IDE Integration + RemObjects NexusDB Pack - Library + RemObjects NexusDB Pack - IDE Integration + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg new file mode 100644 index 0000000..8549342 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.cfg @@ -0,0 +1,34 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr new file mode 100644 index 0000000..dafaf13 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.dpr @@ -0,0 +1,13 @@ +library DASQLiteDrv; + +uses + ShareMem, + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DASQLiteDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLiteDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDriver.html b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDriver.html new file mode 100644 index 0000000..a97ff77 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDriver.html @@ -0,0 +1,15 @@ +

SQLite Driver

+

+ This Driver allows you to connect to data sources accessible via SQLite Pass. +

+ +

Step 1: Database

+

+ Specify the database to which you wish to connect. This a complete path and filename (e.g. "c:\test.db3"). +

+ +

Step 2: Custom parameters

+

+ You can specify additional SQLite-driver specific options as a semicolon separated list of name/value pairs. + Please consult the SQLite Pass documentation for details on the options available. +

diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.bdsproj new file mode 100644 index 0000000..04695df --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.bdsproj @@ -0,0 +1,169 @@ + + + + + + + + + + + + DASQLitePassDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\bin + + + + + vcl;rtl;indy;vcldb;dbrtl;dsnap;vclx;VclSmp;dbexpress;dbxcds;vclie;inet;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;RemObjects_Synapse_D7;Jcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;TntUnicodeVcl_R70;acat70;dsnapcon;adortl;ibxpress;IBO40FTS_D7;IBO40RPL_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;DataAbstract_IDE_D7;xmlrtl;dxBarD7;IndyCore70;IndySystem70;vclactnband;IndyProtocols70;bdertl;DataAbstract_DBISAMDriver_D7;DataAbstract_SQLiteDriver_D7;cxLibraryVCLD7;dxThemeD7;cxEditorsVCLD7;cxTreeListVCLD7;Hydra_Core_D7;dxComnD7;Hydra_DX_D7;Hydra_RO_D7;PascalScript_RO_D7;DataAbstract_Scripting_D7 + + + False + + + + + + False + + + True + False + + + True + False + 5 + 0 + 31 + 701 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 5.0.31.701 + + RemObjects Software 2002-2008. All rights reserved. + + + Data Abstract + 5.0.31.701 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.cfg new file mode 100644 index 0000000..8b0d25d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\bin" +-LE"C:\Documents and Settings\Administrator\My Documents\Borland Studio Projects\Bpl" +-LN"C:\Documents and Settings\Administrator\My Documents\Borland Studio Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dof new file mode 100644 index 0000000..1d774c2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;indy;vcldb;dbrtl;dsnap;vclx;VclSmp;dbexpress;dbxcds;vclie;inet;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;RemObjects_Synapse_D7;Jcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;TntUnicodeVcl_R70;acat70;dsnapcon;adortl;ibxpress;IBO40FTS_D7;IBO40RPL_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;DataAbstract_IDE_D7;xmlrtl;dxBarD7;IndyCore70;IndySystem70;vclactnband;IndyProtocols70;bdertl;DataAbstract_DBISAMDriver_D7;DataAbstract_SQLiteDriver_D7;cxLibraryVCLD7;dxThemeD7;cxEditorsVCLD7;cxTreeListVCLD7;Hydra_Core_D7;dxComnD7;Hydra_DX_D7;Hydra_RO_D7;PascalScript_RO_D7;DataAbstract_Scripting_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=5.0.31.701 +InternalName= +LegalCopyright=RemObjects Software 2002-2008. All rights reserved. +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=5.0.31.701 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dpr new file mode 100644 index 0000000..84c3df2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dpr @@ -0,0 +1,13 @@ +library DASQLitePassDrv; + +uses + ShareMem, + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DASQLitePassDriverHtml.res} + +begin +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dproj new file mode 100644 index 0000000..8613d6d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.dproj @@ -0,0 +1,106 @@ + + + {5149a29c-143c-4239-9195-63df58f7a57a} + DASQLitePassDrv.dpr + Debug + AnyCPU + DCC32 + ..\..\bin\DASQLitePassDrv.dad + 12.0 + Debug + + + true + + + true + Base + true + + + true + Base + true + + + DASQLitePassDrv.dad + true + + + ..\..\bin\DASQLitePassDrv.dad + 7.0 + False + False + 0 + ..\..\bin + RELEASE;$(DCC_Define) + + + ..\..\bin\DASQLitePassDrv.dad + 7.0 + ..\..\bin + DEBUG;$(DCC_Define) + + + Delphi.Personality.12 + VCLApplication + + + + False + True + False + + + True + False + 5 + 0 + 31 + 701 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 5.0.31.701 + + RemObjects Software 2002-2009. All rights reserved. + + + Data Abstract + 5.0.31.701 + + + DASQLitePassDrv.dpr + + + + 12 + + + + MainSource + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DASQLitePassDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriver.html b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriver.html new file mode 100644 index 0000000..7670401 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriver.html @@ -0,0 +1,4 @@ +

UniDAC Driver

+

+ No specific help for the UniDAC driver is available, yet. Please consult the Devart's UniDAC documentation for details. +

\ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriverHtml.res new file mode 100644 index 0000000..ab9fe22 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.bdsproj new file mode 100644 index 0000000..06073c9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.bdsproj @@ -0,0 +1,174 @@ + + + + + + + + + + + + DAUniDACDrv.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\Bin + + + + + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + RemObjects Software + + 2.0.0.142 + + + + + Data Abstract + 2.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.cfg new file mode 100644 index 0000000..4168799 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Bin" +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dof new file mode 100644 index 0000000..d27c0ad --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= + +[Directories] +OutputDir=..\..\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=$(DELPHI)\Lib\Debug;D:\Jenya\DLIB\jcl\lib\d7\debug;D:\PROGRA~1.ALL\Borland\DLIB\jcl\lib\d7\debug +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.290 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Data Abstract +ProductVersion=2.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dpr new file mode 100644 index 0000000..391d393 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dpr @@ -0,0 +1,12 @@ +library DAUniDACDrv; + +uses + ShareMem, + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAUniDACDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dproj new file mode 100644 index 0000000..953fafb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.dproj @@ -0,0 +1,110 @@ + + + {39820DD8-A8F5-47C9-AE78-338D8AEA630F} + DAUniDACDrv.dpr + Debug + DCC32 + 12.0 + + + true + + + true + Base + true + + + true + Base + true + + + vcl;rtl;vclx;vclimg;vclactnband;dbrtl;vcldb;vcldbx;bdertl;vcltouch;xmlrtl;dsnap;dsnapcon;TeeUI;TeeDB;Tee;vclib;ibxpress;adortl;IndyCore;IndySystem;IndyProtocols;inet;intrawebdb_100_140;Intraweb_100_140;VclSmp;vclie;websnap;webdsnap;inetdb;inetdbbde;inetdbxpress;soaprtl;vclribbon;dbexpress;DbxCommonDriver;DataSnapIndy10ServerTransport;DataSnapProviderClient;DbxClientDriver;DataSnapServer;DBXInterBaseDriver;DBXMySQLDriver;dbxcds;DBXFirebirdDriver;DBXSybaseASEDriver;DBXSybaseASADriver;DBXOracleDriver;DBXMSSQLDriver;DBXInformixDriver;DBXDb2Driver;RemObjects_RODX_D14;RemObjects_BPDX_D14;RemObjects_Indy_D14;RemObjects_WebBroker_D14;Jcl;JclVcl;JvCoreD14R;JvStdCtrlsD14R;JvSystemD14R;RemObjects_Synapse_D14;DataAbstract_Core_D14;DataAbstract_DBXDriver_D14;DataAbstract_Scripting_D14;DataAbstract_IDE_D14;AnyDAC_PhysSQLite_D14;AnyDAC_Phys_D14;AnyDAC_ComI_D14;AnyDAC_PhysPg_D14;AnyDAC_PhysIB_D14;AnyDAC_PhysTDBX_D14;AnyDAC_PhysADS_D14;AnyDAC_PhysODBC_D14;AnyDAC_PhysASA_D14;AnyDAC_PhysOracl_D14;AnyDAC_PhysMySQL_D14;AnyDAC_PhysDb2_D14;AnyDAC_PhysMSSQL_D14;AnyDAC_PhysMSAcc_D14;AnyDAC_GUIxForms_D14;AnyDAC_Comp_D14;localizer14 + 00400000 + false + DAUniDACDrv.dad + WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias) + x86 + false + true + false + false + false + + + false + RELEASE;$(DCC_Define) + 0 + false + + + DEBUG;$(DCC_Define) + + + + MainSource + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + VCLApplication + + + + DAUniDACDrv.dpr + + + False + True + False + + + True + False + 3 + 0 + 0 + 290 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.0.290 + + + + + Data Abstract + 2.0.0.0 + + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.res new file mode 100644 index 0000000..2aba20c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAUniDACDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res new file mode 100644 index 0000000..f3000f5 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDriverHtml.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg new file mode 100644 index 0000000..96a1b9a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"D:\Program Files\RemObjects Software\Data Abstract" +-U"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-O"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-I"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-R"d:\program files.all\borland\delphi7\Lib\Debug;J:\Products\ACAT\Source" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr new file mode 100644 index 0000000..a566487 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.dpr @@ -0,0 +1,12 @@ +library DAZeosDrv; + +uses + ShareMem, + uDAZeosDriver in 'uDAZeosDriver.pas'; + +{$E dad} + +{$R *.res} +{$R DAZeosDriverHtml.res} + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res new file mode 100644 index 0000000..c7afdf1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DAZeosDrv.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj new file mode 100644 index 0000000..1e97716 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ADODriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - ADOExpress/dbGo Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk new file mode 100644 index 0000000..501b019 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk new file mode 100644 index 0000000..7a5a6d9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_ADODriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj new file mode 100644 index 0000000..cf28353 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.dproj @@ -0,0 +1,552 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_ADODriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ADODriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - ADOExpress/dbGo DriverFalseTrueFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_ADODriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dpk new file mode 100644 index 0000000..9bd8e7c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + adortl, + DataAbstract_Core_D12; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dproj new file mode 100644 index 0000000..149460f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.dproj @@ -0,0 +1,95 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_ADODriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ADODriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_ADODriver_D12.bpl + RemObjects Data Abstract - ADOExpress/dbGo Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_ADODriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dpk new file mode 100644 index 0000000..448f41a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + adortl, + DataAbstract_Core_D14; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dproj new file mode 100644 index 0000000..910a5d4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.dproj @@ -0,0 +1,95 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_ADODriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ADODriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_ADODriver_D14.bpl + RemObjects Data Abstract - ADOExpress/dbGo Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_ADODriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk new file mode 100644 index 0000000..9a608cd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk new file mode 100644 index 0000000..a1427e8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ADODriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ADOExpress/dbGo Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + adortl; + +contains + uDAADODriver in 'uDAADODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res new file mode 100644 index 0000000..067c6a6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ADODriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.bdsproj new file mode 100644 index 0000000..28dc1b5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_AbsoluteDBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - AbsoluteDB Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dpk new file mode 100644 index 0000000..0570873 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + dclAbsDBd10; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dproj new file mode 100644 index 0000000..7ba10f7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.dproj @@ -0,0 +1,110 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AbsoluteDBDriver_D10.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D10\DataAbstract_AbsoluteDBDriver_D10.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + DEBUG + False + False + False + False + False + False + + + Delphi.Personality + Package + + + False + True + False + + + RemObjects Data Abstract - AbsoluteDB Driver + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_AbsoluteDBDriver_D10.dpk + + + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dpk new file mode 100644 index 0000000..b057f5b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_AbsoluteDBDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + dclAbsDBd11; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dproj new file mode 100644 index 0000000..3287315 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.dproj @@ -0,0 +1,552 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AbsoluteDBDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_AbsoluteDBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - AbsoluteDB DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_AbsoluteDBDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dpk new file mode 100644 index 0000000..a5f0feb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + dclAbsDBd12; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dproj new file mode 100644 index 0000000..aa7fc58 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AbsoluteDBDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_AbsoluteDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_AbsoluteDBDriver_D12.bpl + RemObjects Data Abstract - AbsoluteDB Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_AbsoluteDBDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dpk new file mode 100644 index 0000000..4342e5c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + dclAbsDBd14; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dproj new file mode 100644 index 0000000..4ff22e0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.dproj @@ -0,0 +1,95 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AbsoluteDBDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_AbsoluteDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_AbsoluteDBDriver_D14.bpl + RemObjects Data Abstract - AbsoluteDB Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_AbsoluteDBDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dof new file mode 100644 index 0000000..91ad15c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - AbsoluteDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dpk new file mode 100644 index 0000000..2c71a2e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + dclAbsDBd6; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.cfg new file mode 100644 index 0000000..8e0bad7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dof new file mode 100644 index 0000000..a5f0893 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - AbsoluteDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dpk new file mode 100644 index 0000000..abcb4ea --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + dclAbsDBd7; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.res new file mode 100644 index 0000000..77a3fad Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.bdsproj new file mode 100644 index 0000000..55d25b6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.bdsproj @@ -0,0 +1,172 @@ + + + + + + + + + + + + DataAbstract_AbsoluteDBDriver_D9.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - AbsoluteDB Driver + + + + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9 + + + + False + + + + + + False + + + + + + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.cfg new file mode 100644 index 0000000..4e5bf0e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D9" +-LE"..\..\Dcu\D9" +-LN"..\..\Dcu\D9" +-U"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-O"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-I"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-R"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.dpk new file mode 100644 index 0000000..31dc35a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.dpk @@ -0,0 +1,39 @@ +package DataAbstract_AbsoluteDBDriver_D9; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AbsoluteDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D9, + dclAbsDBd8; + +contains + uDAAbsoluteDBDriver in 'uDAAbsoluteDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.res new file mode 100644 index 0000000..b7c9b4e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_D9.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.RES b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.RES new file mode 100644 index 0000000..19121c3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.RES differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.rc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.rc new file mode 100644 index 0000000..5b44b65 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AbsoluteDBDriver_Glyphs.rc @@ -0,0 +1,3 @@ +TDAAbsoluteDBDriver BITMAP DISCARDABLE "..\Glyphs\TDAAbsoluteDBDriver.bmp" +TDAAbsoluteDBDriver16 BITMAP DISCARDABLE "..\Glyphs\TDADriver16.bmp" +TDAAbsoluteDBDriver32 BITMAP DISCARDABLE "..\Glyphs\TDAAbsoluteDBDriver32.bmp" \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj new file mode 100644 index 0000000..a34aa65 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_AnyDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - AnyDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk new file mode 100644 index 0000000..ba12aac --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.dpk @@ -0,0 +1,55 @@ +package DataAbstract_AnyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D10, + AnyDAC_Phys_D10, + AnyDAC_ComI_D10, + AnyDAC_PhysADS_D10, + AnyDAC_PhysODBC_D10, + AnyDAC_PhysDBExp_D10, + AnyDAC_PhysASA_D10, + AnyDAC_PhysOracl_D10, + AnyDAC_PhysMySQL_D10, + AnyDAC_PhysDb2_D10, + AnyDAC_PhysMSSQL_D10, + AnyDAC_PhysMSAcc_D10, + AnyDAC_PhysPg_D10, + AnyDAC_PhysSQLite_D10, + AnyDAC_Comp_D10; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk new file mode 100644 index 0000000..ca82d02 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dpk @@ -0,0 +1,54 @@ +package DataAbstract_AnyDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + AnyDAC_PhysIB_D11, + AnyDAC_Phys_D11, + AnyDAC_ComI_D11, + AnyDAC_PhysADS_D11, + AnyDAC_PhysODBC_D11, + AnyDAC_PhysASA_D11, + AnyDAC_PhysOracl_D11, + AnyDAC_PhysMySQL_D11, + AnyDAC_PhysDb2_D11, + AnyDAC_PhysMSSQL_D11, + AnyDAC_PhysMSAcc_D11, + AnyDAC_PhysPg_D11, + AnyDAC_PhysSQLite_D11, + AnyDAC_Comp_D11, + AnyDAC_PhysTDBX_D11; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj new file mode 100644 index 0000000..1ca57a1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.dproj @@ -0,0 +1,566 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AnyDACDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_AnyDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - AnyDAC DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_AnyDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk new file mode 100644 index 0000000..ac76284 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + AnyDAC_PhysIB_D12, + AnyDAC_Phys_D12, + AnyDAC_ComI_D12, + AnyDAC_PhysADS_D12, + AnyDAC_PhysODBC_D12, + AnyDAC_PhysASA_D12, + AnyDAC_PhysOracl_D12, + AnyDAC_PhysMySQL_D12, + AnyDAC_PhysDb2_D12, + AnyDAC_PhysMSSQL_D12, + AnyDAC_PhysMSAcc_D12, + AnyDAC_Comp_D12, + AnyDAC_PhysPg_D12, + AnyDAC_PhysSQLite_D12, + AnyDAC_PhysTDBX_D12; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj new file mode 100644 index 0000000..29141cc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.dproj @@ -0,0 +1,159 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AnyDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D12\DataAbstract_AnyDACDriver_D12.bpl + 11.1 + Debug + + + true + + + true + Base + true + + + true + Base + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_AnyDACDriver_D12.bpl + RemObjects Data Abstract - AnyDAC Driver + + + ..\..\Dcu\D12 + 7.0 + False + 0 + False + False + False + False + False + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ObjPath) + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ResourcePath) + RELEASE;$(DCC_Define) + False + ..\..\Dcu\D12 + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_IncludePath) + False + + + ..\..\Dcu\D12 + 7.0 + False + False + False + False + False + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ObjPath) + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ResourcePath) + ..\..\Dcu\D12 + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_IncludePath) + False + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + Base + + + Cfg_Release + Base + + + Cfg_Debug + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_AnyDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dpk new file mode 100644 index 0000000..c56c07e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dpk @@ -0,0 +1,53 @@ +package DataAbstract_AnyDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + AnyDAC_PhysIB_D14, + AnyDAC_Phys_D14, + AnyDAC_ComI_D14, + AnyDAC_PhysADS_D14, + AnyDAC_PhysODBC_D14, + AnyDAC_PhysASA_D14, + AnyDAC_PhysOracl_D14, + AnyDAC_PhysMySQL_D14, + AnyDAC_PhysDb2_D14, + AnyDAC_PhysMSSQL_D14, + AnyDAC_PhysMSAcc_D14, + AnyDAC_Comp_D14, + AnyDAC_PhysPg_D14, + AnyDAC_PhysSQLite_D14, + AnyDAC_PhysTDBX_D14; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dproj new file mode 100644 index 0000000..599588b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.dproj @@ -0,0 +1,159 @@ + + + {6843d8de-6ab6-4222-a3c5-282e7cc611df} + DataAbstract_AnyDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D12\DataAbstract_AnyDACDriver_D12.bpl + 11.1 + Debug + + + true + + + true + Base + true + + + true + Base + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_AnyDACDriver_D14.bpl + RemObjects Data Abstract - AnyDAC Driver + + + ..\..\Dcu\D12 + 7.0 + False + 0 + False + False + False + False + False + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ObjPath) + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ResourcePath) + RELEASE;$(DCC_Define) + False + ..\..\Dcu\D12 + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_IncludePath) + False + + + ..\..\Dcu\D12 + 7.0 + False + False + False + False + False + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ObjPath) + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_ResourcePath) + ..\..\Dcu\D12 + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_IncludePath) + False + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + Base + + + Cfg_Release + Base + + + Cfg_Debug + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_AnyDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof new file mode 100644 index 0000000..70f2fea --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - AnyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk new file mode 100644 index 0000000..1136d5c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.dpk @@ -0,0 +1,55 @@ +package DataAbstract_AnyDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D6, + AnyDAC_Phys_D6, + AnyDAC_ComI_D6, + AnyDAC_PhysADS_D6, + AnyDAC_PhysODBC_D6, + AnyDAC_PhysDBExp_D6, + AnyDAC_PhysASA_D6, + AnyDAC_PhysOracl_D6, + AnyDAC_PhysMySQL_D6, + AnyDAC_PhysDb2_D6, + AnyDAC_PhysMSSQL_D6, + AnyDAC_PhysMSAcc_D6, + AnyDAC_PhysPg_D6, + AnyDAC_PhysSQLite_D6, + AnyDAC_Comp_D6; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg new file mode 100644 index 0000000..f33a910 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof new file mode 100644 index 0000000..f8327e9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - AnyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.289 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk new file mode 100644 index 0000000..1cfbdcf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.dpk @@ -0,0 +1,55 @@ +package DataAbstract_AnyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - AnyDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + dbexpress, + xmlrtl, + AnyDAC_PhysIB_D7, + AnyDAC_Phys_D7, + AnyDAC_ComI_D7, + AnyDAC_PhysADS_D7, + AnyDAC_PhysODBC_D7, + AnyDAC_PhysDBExp_D7, + AnyDAC_PhysASA_D7, + AnyDAC_PhysOracl_D7, + AnyDAC_PhysMySQL_D7, + AnyDAC_PhysDb2_D7, + AnyDAC_PhysMSSQL_D7, + AnyDAC_PhysMSAcc_D7, + AnyDAC_PhysPg_D7, + AnyDAC_PhysSQLite_D7, + AnyDAC_Comp_D7; + +contains + uDAAnyDACDriver in 'uDAAnyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res new file mode 100644 index 0000000..b40eccd Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.lrs new file mode 100644 index 0000000..73491f3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.lrs @@ -0,0 +1,80 @@ +LazarusResources.Add('TDAANYDACDriver','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#129#30#0'w'#23#0'w'#23#0#255#0#255#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#129#30 + +#0#129#30#0#129#30#0#252#154'*'#184':'#0#184':'#0#128'*'#3#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#130#24#0#129#30#0#248'w'#0#255#129#0#255#149#19#255#170'4'#255#189'Z' + +#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0#5'f'#149#130#24#0'y'#16#0#255#158' '#252'w'#0#143#30#0#213'g'#10#255#171 + +'8'#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#130#24#0#130#24#0#221#152'Z'#255#191']'#186'M'#5#255#0#255'v'#12#0#242#134 + +#20#252#160'4'#138#31#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#0'R'#143#0'6o'#9 + +'o'#164'W9'#23#171'3'#0#233#171'n'#255#215#146#193'e%'#255#0#255'v'#12#0#242 + +'w'#1#255#150#25#138#31#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#128#0#0#0'R'#143#0'R'#143#0'R'#143#6#140#194'I' + +#221#255#0'v'#186#0'v'#186'YVE'#255#218#154#233#170'j'#145'%'#0#193'M'#0#255 + +'~'#0#138#31#0#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0'6p'#0'j'#161#2#199#255 + +#9#202#255''''#212#255'N'#222#255'y'#233#255#0'v'#186#255#218#154#255#218#154 + +#255#211#137#255#177'C'#255#138#7#138#31#0#255#0#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0'9u'#4'v'#170'('#212#255#0 + +#158#218#0'N'#138#22#163#212'R'#224#255#0'v'#186#196'f#'#203'g'#25#255#218 + +#154#184':'#0#184':'#0#184':'#0#255#0#255#255#0#255#2't'#169'['#213#226'i' + +#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254#0';v'#11#128#176#156#233 + +#254'h'#230#255'#'#165#212#0'A~'#0'F'#129'0'#215#255'M'#215#254'%_p'#184':'#0 + +#184':'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2't'#169'['#213 + +#226#127#247#254'z'#238#254'}'#233#254#135#231#255#163#237#255#0';v'#3'{'#176 + +#165#235#254#167#243#255'^'#193#226#0'L'#138#0'N'#138#19#204#255'-'#206#252 + +#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#2't'#169#160#233#239#170#238#246'p'#207#229'?'#177#211#29#149#192#17#131 + +#177#15'{'#170#0'@z'#24#150#196#182#246#255'~'#212#238#3'g'#157#13#182#235#1 + +#198#255#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'p'#164'T'#177#202'('#156#188'&'#171#207#27#182#224 + +#12#183#237#24#198#247':'#213#254#0'A~'#27#153#196#181#244#255#182#246#255 + +#154#240#255'N'#222#255#13#202#255#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'l'#158'?'#180#203'f'#242 + +#251'E'#230#254'%'#215#254#0#0#0#0#0#0#0#0#0#0#0#0#0'Ay'#0'E~;'#175#213#182 + +#246#255#13'b'#145#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#2's'#167'['#213#226'i'#246#254 + +'E'#230#254#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#0#0#0'Q' + +#199#233#0'A{'#0'E{'#1'z'#180#5'f'#149#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#128#0#0#128#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#254#254#254#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#0#0#0#128#128#128#255#255#255#128#0#0#255#255 + +#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255 + +#255#255#128#0#0#128#0#0#192#220#192#255#255#255#128#0#0#255#255#255#128#0#0 + +#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0#128#128#128#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255 + +#255#128#0#0#255#255#255#128#0#0#192#220#192#128#0#0#255#255#255#128#0#0#255 + +#255#255#128#0#0#255#255#255#128#0#0#192#220#192#255#255#255#0#0#0#128#128 + +#128#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0 + +#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128 + +#0#0#128#0#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#0#0#0#128 + +#128#128#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#255 + ,#255#255#254#254#254#255#255#255#255#255#255#255#255#255#128#0#0#192#220#192 + +#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#192#220 + +#192#255#255#255#0#0#0#128#128#128#255#255#255#192#220#192#128#0#0#192#220 + +#192#255#255#255#255#255#255#255#255#255#254#254#254#255#255#255#255#255#255 + +#255#255#255#128#0#0#128#0#0#192#220#192#255#255#255#192#220#192#128#0#0#192 + +#220#192#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0#128#128#128#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#0#0 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res new file mode 100644 index 0000000..3926468 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..a937aad --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_AnyDACDriver_Lazarus_Windows.lpk @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj new file mode 100644 index 0000000..f5afeb9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_BDEDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - BDE Driver + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk new file mode 100644 index 0000000..de3b837 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D10; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk new file mode 100644 index 0000000..357cae1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_BDEDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D11; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj new file mode 100644 index 0000000..f10798d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.dproj @@ -0,0 +1,552 @@ + + + {3cd4ddcd-76f8-4583-8117-c00562cb6a62} + DataAbstract_BDEDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_BDEDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - BDE DriverFalseTrueFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_BDEDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dpk new file mode 100644 index 0000000..806569a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D12; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dproj new file mode 100644 index 0000000..07c3f28 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {3cd4ddcd-76f8-4583-8117-c00562cb6a62} + DataAbstract_BDEDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_BDEDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_BDEDriver_D12.bpl + RemObjects Data Abstract - BDE Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_BDEDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dpk new file mode 100644 index 0000000..b9414fe --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D14; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dproj new file mode 100644 index 0000000..5445ba0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.dproj @@ -0,0 +1,95 @@ + + + {3cd4ddcd-76f8-4583-8117-c00562cb6a62} + DataAbstract_BDEDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_BDEDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_BDEDriver_D14.bpl + RemObjects Data Abstract - BDE Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_BDEDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk new file mode 100644 index 0000000..aceb56d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + bdertl; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg new file mode 100644 index 0000000..8e0bad7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk new file mode 100644 index 0000000..a5b4538 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_BDEDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - BDE Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + DataAbstract_Core_D7; + +contains + uDABDEDriver in 'uDABDEDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res new file mode 100644 index 0000000..a2a5a20 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_BDEDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj new file mode 100644 index 0000000..096f1d8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_DBISAMDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - DBISAM Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk new file mode 100644 index 0000000..b21161d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D10, + DataAbstract_Core_D10, + db324d9r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk new file mode 100644 index 0000000..8831294 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_DBISAMDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D11, + DataAbstract_Core_D11, + db324d2007r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj new file mode 100644 index 0000000..54b7ccf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.dproj @@ -0,0 +1,554 @@ + + + {18f879f9-5865-46a9-8515-d3b4503d16ff} + DataAbstract_DBISAMDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBISAMDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - DBISAM DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_DBISAMDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dpk new file mode 100644 index 0000000..db50a91 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBISAMDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D12, + db424b2009r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dproj new file mode 100644 index 0000000..19951b8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.dproj @@ -0,0 +1,96 @@ + + + {18f879f9-5865-46a9-8515-d3b4503d16ff} + DataAbstract_DBISAMDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBISAMDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_DBISAMDriver_D12.bpl + RemObjects Data Abstract - DBISAM Driver + + + + MainSource + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_DBISAMDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dpk new file mode 100644 index 0000000..24dc055 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBISAMDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D14, + db424b2009r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dproj new file mode 100644 index 0000000..7e420c9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.dproj @@ -0,0 +1,98 @@ + + + {18f879f9-5865-46a9-8515-d3b4503d16ff} + DataAbstract_DBISAMDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBISAMDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_DBISAMDriver_D14.bpl + RemObjects Data Abstract - DBISAM Driver + + + + MainSource + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_DBISAMDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof new file mode 100644 index 0000000..1e36acf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - DBISAM Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;webdsnap;websnap;soaprtl;dbexpress;dbxcds;indy;tb2kComplete;CRControls60;dac60;dacvcl60;sdacvcl60;sdac60;oraprov60;odac60;odacvcl60;DataAbstract_Core_D6;DataAbstract_DBXDriver_D6;DataAbstract_DiskDriver_D6 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk new file mode 100644 index 0000000..f1b37bf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D6, + DataAbstract_Core_D6, + db324d6r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res new file mode 100644 index 0000000..84eaa11 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg new file mode 100644 index 0000000..02179cd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7" +-O"..\..\Dcu\D7" +-I"..\..\Dcu\D7" +-R"..\..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof new file mode 100644 index 0000000..2d15714 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - DBISAM Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk new file mode 100644 index 0000000..6a2ee23 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DBISAMDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - DBISAM Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + RemObjects_Core_D7, + DataAbstract_Core_D7, + db324d7r; + +contains + uDADBISAMDriver in 'uDADBISAMDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res new file mode 100644 index 0000000..84eaa11 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res new file mode 100644 index 0000000..3163762 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBISAMDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj new file mode 100644 index 0000000..214c011 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_DBXDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - dbExpress Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk new file mode 100644 index 0000000..ce917fe --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.dpk @@ -0,0 +1,38 @@ +package DataAbstract_DBXDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D10; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk new file mode 100644 index 0000000..be253ca --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBXDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D11; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj new file mode 100644 index 0000000..05e1e43 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.dproj @@ -0,0 +1,556 @@ + + + {f8cd0c64-f9cd-46d4-8a1b-03d6a3efbdb3} + DataAbstract_DBXDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBXDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - dbExpress DriverFalseFalseFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_DBXDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk new file mode 100644 index 0000000..a8fb1ce --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dpk @@ -0,0 +1,46 @@ +package DataAbstract_DBXDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D12, + DBXInterBaseDriver, + DBXMySQLDriver, + DBXSybaseASEDriver, + DBXSybaseASADriver, + DBXOracleDriver, + DBXMSSQLDriver, + DBXInformixDriver, + DBXDb2Driver; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj new file mode 100644 index 0000000..f253ce6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.dproj @@ -0,0 +1,105 @@ + + + {f8cd0c64-f9cd-46d4-8a1b-03d6a3efbdb3} + DataAbstract_DBXDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBXDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_DBXDriver_D12.bpl + true + RemObjects Data Abstract - dbExpress Driver + + + + MainSource + + + + + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_DBXDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dpk new file mode 100644 index 0000000..8acd915 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dpk @@ -0,0 +1,46 @@ +package DataAbstract_DBXDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + DataAbstract_Core_D14, + DBXInterBaseDriver, + DBXMySQLDriver, + DBXSybaseASEDriver, + DBXSybaseASADriver, + DBXOracleDriver, + DBXMSSQLDriver, + DBXInformixDriver, + DBXDb2Driver; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dproj new file mode 100644 index 0000000..0dcb582 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.dproj @@ -0,0 +1,105 @@ + + + {f8cd0c64-f9cd-46d4-8a1b-03d6a3efbdb3} + DataAbstract_DBXDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DBXDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_DBXDriver_D14.bpl + true + RemObjects Data Abstract - dbExpress Driver + + + + MainSource + + + + + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_DBXDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof new file mode 100644 index 0000000..d2de85f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - dbExpress Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk new file mode 100644 index 0000000..d9265ff --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBXDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof new file mode 100644 index 0000000..7f90f99 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - dbExpress Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk new file mode 100644 index 0000000..a20bd62 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_DBXDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - dbExpress Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dbexpress, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDADBXDriver in 'uDADBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res new file mode 100644 index 0000000..3ac39af Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DBXDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.bdsproj new file mode 100644 index 0000000..9e97b99 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.bdsproj @@ -0,0 +1,172 @@ + + + + + + + + + + + + DataAbstract_DOADriver_D10.dpk + + + 7.0 + + + 8 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 0 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Direct Oracle Access Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1031 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.cfg new file mode 100644 index 0000000..ec7d8d2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C- +-$D- +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L- +-$M- +-$N+ +-$O+ +-$P+ +-$Q+ +-$R+ +-$S- +-$T- +-$U+ +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10" +-O"..\..\Dcu\D10" +-I"..\..\Dcu\D10" +-R"..\..\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.dpk new file mode 100644 index 0000000..15b25df --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D10; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + doa41d2006; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.res new file mode 100644 index 0000000..7d5072d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dpk new file mode 100644 index 0000000..150f485 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D11; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + doa41d2007; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dproj new file mode 100644 index 0000000..28b9bc0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.dproj @@ -0,0 +1,96 @@ + + + {a2e90cba-5a04-4ca5-b40f-eeb19b461f2f} + DataAbstract_DOADriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_DOADriver_D11.bpl + + + 7.0 + False + False + False + True + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + + + False + True + False + + + RemObjects Data Abstract - Direct Oracle Access Driver + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1031 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + DataAbstract_DOADriver_D11.dpk + + + + + + + MainSource + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.res new file mode 100644 index 0000000..c467631 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dpk new file mode 100644 index 0000000..166b374 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D12; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + doa41d2009; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dproj new file mode 100644 index 0000000..d9bf6ae --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.dproj @@ -0,0 +1,103 @@ + + + {E84B9AAD-18C0-4A3D-893C-C2036F2B3D7A} + DataAbstract_DOADriver_D12.dpk + Base + DCC32 + 11.1 + + + true + + + RemObjects Data Abstract - Direct Oracle Access Driver + error + error + ..\..\Dcu\D12\DataAbstract_DOADriver_D12.bpl + true + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + false + error + true + error + true + false + true + ..\..\Dcu\D12 + true + ..\..\Dcu\D12 + false + true + error + true + 0 + 00400000 + x86 + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + DataAbstract_DOADriver_D12.dpk + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.res new file mode 100644 index 0000000..77cfa35 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dpk new file mode 100644 index 0000000..32666ed --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D14; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + doa41d2010; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dproj new file mode 100644 index 0000000..2f25712 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.dproj @@ -0,0 +1,101 @@ + + + {E84B9AAD-18C0-4A3D-893C-C2036F2B3D7A} + DataAbstract_DOADriver_D14.dpk + Base + DCC32 + 11.1 + + + true + + + RemObjects Data Abstract - Direct Oracle Access Driver + error + error + ..\..\Dcu\D14\DataAbstract_DOADriver_D14.bpl + true + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + false + error + true + error + true + false + true + ..\..\Dcu\D14 + true + ..\..\Dcu\D14 + false + true + error + true + 0 + 00400000 + x86 + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + DataAbstract_DOADriver_D14.dpk + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.res new file mode 100644 index 0000000..77cfa35 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.cfg new file mode 100644 index 0000000..ce65bb4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C- +-$D- +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L- +-$M- +-$N+ +-$O+ +-$P+ +-$Q+ +-$R+ +-$S- +-$T- +-$U+ +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6" +-O"..\..\Dcu\D6" +-I"..\..\Dcu\D6" +-R"..\..\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dof new file mode 100644 index 0000000..3c9cab7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=0 +D=0 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=0 +M=0 +N=1 +O=1 +P=1 +Q=1 +R=1 +S=0 +T=0 +U=1 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Direct Oracle Access Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dpk new file mode 100644 index 0000000..4eff87c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D6; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + doa41d6; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.res new file mode 100644 index 0000000..c467631 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.cfg new file mode 100644 index 0000000..e5c2492 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C- +-$D- +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L- +-$M- +-$N+ +-$O+ +-$P+ +-$Q+ +-$R+ +-$S- +-$T- +-$U+ +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7" +-O"..\..\Dcu\D7" +-I"..\..\Dcu\D7" +-R"..\..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dof new file mode 100644 index 0000000..b369898 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=0 +D=0 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=0 +M=0 +N=1 +O=1 +P=1 +Q=1 +R=1 +S=0 +T=0 +U=1 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Direct Oracle Access Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dpk new file mode 100644 index 0000000..fc81f64 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D7; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + doa41d7; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.res new file mode 100644 index 0000000..c467631 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.bdsproj new file mode 100644 index 0000000..213d43f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.bdsproj @@ -0,0 +1,168 @@ + + + + + + + + + + + + DataAbstract_DOADriver_D9.dpk + + + 7.0 + + + 8 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + 0 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Direct Oracle Access Driver + + + + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9 + + + + False + + + + + + False + + + + + + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1031 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.cfg new file mode 100644 index 0000000..1ff2976 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C- +-$D- +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L- +-$M- +-$N+ +-$O+ +-$P+ +-$Q+ +-$R+ +-$S- +-$T- +-$U+ +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D9" +-LE"..\..\Dcu\D9" +-LN"..\..\Dcu\D9" +-U"..\..\Dcu\D9" +-O"..\..\Dcu\D9" +-I"..\..\Dcu\D9" +-R"..\..\Dcu\D9" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.dpk new file mode 100644 index 0000000..5b58a97 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.dpk @@ -0,0 +1,40 @@ +package DataAbstract_DOADriver_D9; + +{$R *.res} +{$R 'uDADOADriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS OFF} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Direct Oracle Access Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D9, + doa41d9; + +contains + uDADOADriver in 'uDADOADriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.res new file mode 100644 index 0000000..7d5072d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_DOADriver_D9.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg new file mode 100644 index 0000000..4e931fa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_Drivers_D6.bpg @@ -0,0 +1,61 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_ADODriver_D7.bpl DataAbstract_DBXDriver_D7.bpl \ + DataAbstract_IBXDriver_D7.bpl DataAbstract_DiskDriver_D7.bpl DAADODrv.dad \ + DADBXDrv.dad DADiskDrv.dad DAIBXDrv.dad DataAbstract_IBODriver_D7.bpl \ + DataAbstract_SDACDriver_D7.bpl DataAbstract_ODACDriver_D7.bpl DAIBODrv.dad \ + DASDACDrv.dad +DataAbstract_SDACDriver_D6.bpl DataAbstract_ODACDriver_D6.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +DataAbstract_DiskDriver_D7.bpl: DataAbstract_DiskDriver_D7.dpk + $(DCC) + +DataAbstract_DBXDriver_D7.bpl: DataAbstract_DBXDriver_D7.dpk + $(DCC) + +DAADODrv.dad: DAADODrv.dpr + $(DCC) + +DADBXDrv.dad: DADBXDrv.dpr + $(DCC) + +DADiskDrv.dad: DADiskDrv.dpr + $(DCC) + +DAIBXDrv.dad: DAIBXDrv.dpr + $(DCC) + +DAIBODrv.dad: DAIBODrv.dpr + $(DCC) + +DASDACDrv.dad: DASDACDrv.dpr + $(DCC) + +DataAbstract_SDACDriver_D7.bpl: DataAbstract_SDACDriver_D7.dpk + $(DCC) + +DataAbstract_ODACDriver_D7.bpl: DataAbstract_ODACDriver_D7.dpk + $(DCC) + +DataAbstract_ADODriver_D7.bpl: DataAbstract_ADODriver_D7.dpk + $(DCC) + +DataAbstract_IBXDriver_D7.bpl: DataAbstract_IBXDriver_D7.dpk + $(DCC) + +DataAbstract_IBODriver_D7.bpl: DataAbstract_IBODriver_D7.dpk + $(DCC) + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj new file mode 100644 index 0000000..47a24e4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ElevateDBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Elevate DB Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk new file mode 100644 index 0000000..b6773b6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + edb105d10run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk new file mode 100644 index 0000000..bd44fbd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + edb105D2007run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj new file mode 100644 index 0000000..9e5e80d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.dproj @@ -0,0 +1,552 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_ElevateDBDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ElevateDBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - ElevateDB DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_ElevateDBDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dpk new file mode 100644 index 0000000..0eb30af --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + edb105D2009run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj new file mode 100644 index 0000000..d3ea1af --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.dproj @@ -0,0 +1,93 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_ElevateDBDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ElevateDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_ElevateDBDriver_D12.bpl + RemObjects Data Abstract - ElevateDB Driver + + + + MainSource + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_ElevateDBDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dpk new file mode 100644 index 0000000..259fde0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + edb105D2009run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dproj new file mode 100644 index 0000000..edca6cb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.dproj @@ -0,0 +1,97 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_ElevateDBDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ElevateDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_ElevateDBDriver_D14.bpl + RemObjects Data Abstract - ElevateDB Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_ElevateDBDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg new file mode 100644 index 0000000..c2c069b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof new file mode 100644 index 0000000..0c3ea83 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - ElevateDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk new file mode 100644 index 0000000..5e5f141 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + edb105d6run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof new file mode 100644 index 0000000..9e696f5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - ElevateDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;EDBpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk new file mode 100644 index 0000000..c2f5f25 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ElevateDBDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - ElevateDB Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + edb105d7run; + +contains + uDAElevateDBDriver in 'uDAElevateDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res new file mode 100644 index 0000000..77a3fad Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res new file mode 100644 index 0000000..9e2c761 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ElevateDBDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj new file mode 100644 index 0000000..239dc3d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_FIBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - FIBPlus Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk new file mode 100644 index 0000000..6b4fd10 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + FIBPlus2006; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk new file mode 100644 index 0000000..d35cd4a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + FIBPlus2007; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj new file mode 100644 index 0000000..f73572b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.dproj @@ -0,0 +1,68 @@ + + + {4aa60252-6f77-44b7-a171-e158f29374ca} + DataAbstract_FIBDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_FIBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - FIBPlus DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_FIBDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dpk new file mode 100644 index 0000000..07031d1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + FIBPlus2009; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dproj new file mode 100644 index 0000000..67a3d3b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {4aa60252-6f77-44b7-a171-e158f29374ca} + DataAbstract_FIBDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_FIBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + error + error + error + error + error + ..\..\Dcu\D12 + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_FIBDriver_D12.bpl + RemObjects Data Abstract - FIBPlus Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_FIBDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dpk new file mode 100644 index 0000000..fdf734e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + FIBPlus2010; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dproj new file mode 100644 index 0000000..9cef237 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.dproj @@ -0,0 +1,97 @@ + + + {4aa60252-6f77-44b7-a171-e158f29374ca} + DataAbstract_FIBDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_FIBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + error + error + error + error + error + ..\..\Dcu\D14 + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_FIBDriver_D14.bpl + RemObjects Data Abstract - FIBPlus Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_FIBDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof new file mode 100644 index 0000000..c96c6c8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - FIBPlus Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.289 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk new file mode 100644 index 0000000..0447c56 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + FIBPlus6; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof new file mode 100644 index 0000000..ccdfd7b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - FIBPlus Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk new file mode 100644 index 0000000..8ecc150 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_FIBDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - FIBPlus Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + FIBPlus7; + +contains + uDAFIBDriver in 'uDAFIBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res new file mode 100644 index 0000000..d0e3d08 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_FIBDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj new file mode 100644 index 0000000..8d350cb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_IBDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs IBDAC Driver + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk new file mode 100644 index 0000000..032d677 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.dpk @@ -0,0 +1,38 @@ +package DataAbstract_MyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac100, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk new file mode 100644 index 0000000..d018594 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + IBdac105, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj new file mode 100644 index 0000000..80efb8b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.dproj @@ -0,0 +1,557 @@ + + + {0d0e2131-7a05-4241-9ca1-f98aea2eb9d9} + DataAbstract_IBDACDriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs IBDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_IBDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dpk new file mode 100644 index 0000000..f4b2112 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac120, + RemObjects_Core_D12, + DataAbstract_Core_D12; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dproj new file mode 100644 index 0000000..014d532 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.dproj @@ -0,0 +1,97 @@ + + + {0d0e2131-7a05-4241-9ca1-f98aea2eb9d9} + DataAbstract_IBDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_IBDACDriver_D12.bpl + true + RemObjects Data Abstract - CoreLabs IBDAC Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_IBDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dpk new file mode 100644 index 0000000..42e9d7a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + IBdac140, + RemObjects_Core_D14, + DataAbstract_Core_D14; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dproj new file mode 100644 index 0000000..cd2ef89 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {0d0e2131-7a05-4241-9ca1-f98aea2eb9d9} + DataAbstract_IBDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_IBDACDriver_D14.bpl + true + RemObjects Data Abstract - CoreLabs IBDAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_IBDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg new file mode 100644 index 0000000..51b688e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6" +-O"..\..\Dcu\D6" +-I"..\..\Dcu\D6" +-R"..\..\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof new file mode 100644 index 0000000..0cbf2a3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs IBDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk new file mode 100644 index 0000000..6975ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.dpk @@ -0,0 +1,38 @@ +package DataAbstract_IBDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + ibdac60, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg new file mode 100644 index 0000000..4c8862b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7" +-O"..\..\Dcu\D7" +-I"..\..\Dcu\D7" +-R"..\..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof new file mode 100644 index 0000000..f69663d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs IBDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk new file mode 100644 index 0000000..3fd2f36 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.dpk @@ -0,0 +1,38 @@ +package DataAbstract_MyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs IBDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + ibdac70, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDAIBDACDriver in 'uDAIBDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res new file mode 100644 index 0000000..3497984 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj new file mode 100644 index 0000000..00d9b79 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_IBODriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - InterBase Objects Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk new file mode 100644 index 0000000..ef0bb3f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + IBO40TRT_D10, + IBO40XRT_D10; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk new file mode 100644 index 0000000..8d0c9ef --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_IBODriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + IBO40TRT_D2007, + IBO40XRT_D2007; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj new file mode 100644 index 0000000..2afac81 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.dproj @@ -0,0 +1,554 @@ + + + + {8dcafd0d-ab98-4b7e-8b86-36dbc593e504} + DataAbstract_IBODriver_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBODriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - InterBase Objects DriverFalseTrueFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_IBODriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dpk new file mode 100644 index 0000000..2056b9a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + IBO40TRT_D2009, + IBO40XRT_D2009; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dproj new file mode 100644 index 0000000..f65fa8f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.dproj @@ -0,0 +1,96 @@ + + + {8dcafd0d-ab98-4b7e-8b86-36dbc593e504} + DataAbstract_IBODriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBODriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_IBODriver_D12.bpl + RemObjects Data Abstract - InterBase Objects Driver + + + + MainSource + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_IBODriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dpk new file mode 100644 index 0000000..88b1691 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + IBO40TRT_D2010, + IBO40XRT_D2010; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dproj new file mode 100644 index 0000000..3b14493 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.dproj @@ -0,0 +1,98 @@ + + + {8dcafd0d-ab98-4b7e-8b86-36dbc593e504} + DataAbstract_IBODriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBODriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_IBODriver_D14.bpl + RemObjects Data Abstract - InterBase Objects Driver + + + + MainSource + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_IBODriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof new file mode 100644 index 0000000..533614b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Objects Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk new file mode 100644 index 0000000..1238d53 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + IBO40TRT_D6, + IBO40XRT_D6; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof new file mode 100644 index 0000000..b8f8fb1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - InterBase Objects Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk new file mode 100644 index 0000000..d4562dc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.dpk @@ -0,0 +1,40 @@ +package DataAbstract_IBODriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Objects Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + IBO40TRT_D7, + IBO40XRT_D7; + +contains + uDAIBODriver in 'uDAIBODriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res new file mode 100644 index 0000000..e4c8f7b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBODriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj new file mode 100644 index 0000000..ba3a5e6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_IBXDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - InterBase Express Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk new file mode 100644 index 0000000..33c10ef --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk new file mode 100644 index 0000000..f4f4afd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj new file mode 100644 index 0000000..0a51da1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.dproj @@ -0,0 +1,63 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_IBXDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBXDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - InterBase Express DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_IBXDriver_D11.dpk + + + + + MainSource + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dpk new file mode 100644 index 0000000..5f919cf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dproj new file mode 100644 index 0000000..fdd0d82 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.dproj @@ -0,0 +1,102 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_IBXDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBXDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_IBXDriver_D12.bpl + RemObjects Data Abstract - InterBase Express Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_IBXDriver_D12.dpk + + + CodeGear Delphi image support library + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dpk new file mode 100644 index 0000000..bbc8145 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dproj new file mode 100644 index 0000000..5ff0445 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.dproj @@ -0,0 +1,102 @@ + + + {c31471d9-f8e2-4e45-94a7-1264d8011587} + DataAbstract_IBXDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IBXDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_IBXDriver_D14.bpl + RemObjects Data Abstract - InterBase Express Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_IBXDriver_D14.dpk + + + CodeGear Delphi image support library + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof new file mode 100644 index 0000000..220d444 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Express Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk new file mode 100644 index 0000000..98c5ffa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof new file mode 100644 index 0000000..933b8c1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - InterBase Express Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk new file mode 100644 index 0000000..7c15b6b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_IBXDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - InterBase Express Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + ibxpress; + +contains + uDAIBXDriver in 'uDAIBXDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res new file mode 100644 index 0000000..5d3bf7b Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_IBXDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj new file mode 100644 index 0000000..f023fd3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_MyDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs MyDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk new file mode 100644 index 0000000..7d302e2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + mydac100, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk new file mode 100644 index 0000000..9a0e35d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + mydac105, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj new file mode 100644 index 0000000..dec5987 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.dproj @@ -0,0 +1,77 @@ + + + {c13e3848-8048-4b6e-a5c5-b14de1a683a5} + DataAbstract_MyDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MyDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs MyDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_MyDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dpk new file mode 100644 index 0000000..1051872 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_MyDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac120, + mydac120, + DataAbstract_Core_D12; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dproj new file mode 100644 index 0000000..addf263 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.dproj @@ -0,0 +1,99 @@ + + + {c13e3848-8048-4b6e-a5c5-b14de1a683a5} + DataAbstract_MyDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MyDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_MyDACDriver_D12.bpl + true + RemObjects Data Abstract - CoreLabs MyDAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_MyDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dpk new file mode 100644 index 0000000..aa75284 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_MyDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac140, + mydac140, + DataAbstract_Core_D14; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dproj new file mode 100644 index 0000000..e39e5b1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {c13e3848-8048-4b6e-a5c5-b14de1a683a5} + DataAbstract_MyDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MyDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_MyDACDriver_D14.bpl + true + RemObjects Data Abstract - CoreLabs MyDAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_MyDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg new file mode 100644 index 0000000..481e4c1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\dcu\d6" +-LE"..\..\dcu\d6" +-LN"..\..\dcu\d6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof new file mode 100644 index 0000000..468bfc4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs MyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk new file mode 100644 index 0000000..3886fc7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MYDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac60, + mydac60, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof new file mode 100644 index 0000000..d99f972 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - CoreLabs MyDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk new file mode 100644 index 0000000..a90f1f3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_MyDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs MyDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + mydac70, + RemObjects_Core_D7, + DataAbstract_Core_D7; + +contains + uDAMyDACDriver in 'uDAMyDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res new file mode 100644 index 0000000..371f8db Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res new file mode 100644 index 0000000..7e28db9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MyDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj new file mode 100644 index 0000000..98d0a00 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_MySQLDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - MicroOlap mySQL Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk new file mode 100644 index 0000000..835b724 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + mySQLDAC10; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk new file mode 100644 index 0000000..55e6cc5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + mySQLDAC11; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj new file mode 100644 index 0000000..3c6e25d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.dproj @@ -0,0 +1,552 @@ + + + {8ba781c7-bf1c-49bf-a87d-d21f3a68fd91} + DataAbstract_MySQLDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MySQLDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - MicroOlap mySQLDac DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_MySQLDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dpk new file mode 100644 index 0000000..9a3dd0e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + mySQLDAC12; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dproj new file mode 100644 index 0000000..8eec613 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {8ba781c7-bf1c-49bf-a87d-d21f3a68fd91} + DataAbstract_MySQLDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MySQLDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_MySQLDACDriver_D12.bpl + RemObjects Data Abstract - MicroOlap mySQLDac Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_MySQLDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dpk new file mode 100644 index 0000000..b35e124 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + mySQLDAC14; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dproj new file mode 100644 index 0000000..0287444 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.dproj @@ -0,0 +1,97 @@ + + + {8ba781c7-bf1c-49bf-a87d-d21f3a68fd91} + DataAbstract_MySQLDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_MySQLDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_MySQLDACDriver_D14.bpl + RemObjects Data Abstract - MicroOlap mySQLDac Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_MySQLDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk new file mode 100644 index 0000000..66a1e6c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + mySQLDAC6; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk new file mode 100644 index 0000000..994ed6b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_MySQLDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap mySQLDac Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + mySQLDAC7; + +contains + uDAMySQLDACDriver in 'uDAMySQLDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res new file mode 100644 index 0000000..cd846aa Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_MySQLDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj new file mode 100644 index 0000000..05fd89b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.bdsproj @@ -0,0 +1,182 @@ + + + + + + + + + + + + DataAbstract_NexusDBDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + Data Abstract - NexusDB Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\ + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + RemObjects Data Abstract - Core Library + RemObjects Data Abstract - IDE Package + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg new file mode 100644 index 0000000..ab68ed8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\" +-O"..\" +-I"..\" +-R"..\" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk new file mode 100644 index 0000000..5ab0396 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.dpk @@ -0,0 +1,47 @@ +package DataAbstract_NexusDBDriver_D10; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D10, + DataAbstract_Core_D10, + NexusDB107ll100, + NexusDB107sr100, + NexusDB107sd100, + NexusDB107sq100, + NexusDB107re100, + NexusDB107st100, + NexusDB107tn100, + NexusDB107pt100, + NexusDB107tw100, + NexusDB107db100, + NexusDB1071x100; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk new file mode 100644 index 0000000..457277c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dpk @@ -0,0 +1,46 @@ +package DataAbstract_NexusDBDriver_D11; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D11, + DataAbstract_Core_D11, + NexusDB302ll110, + NexusDB302se110, + NexusDB302sr110, + NexusDB302sd110, + NexusDB302sq110, + NexusDB302re110, + NexusDB302pt110, + NexusDB302tn110, + NexusDB302tw110, + NexusDB302db110; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj new file mode 100644 index 0000000..52343f9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.dproj @@ -0,0 +1,102 @@ + + + + {f5368522-8742-4b69-a8b3-668ec242cc52} + DataAbstract_NexusDBDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_NexusDBDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\ + ..\ + ..\ + ..\ + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\ + ..\ + ..\ + ..\ + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseData Abstract - NexusDB DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0 + + + + + + + + + + + + + + + + + RemObjects Data Abstract - MicroOlap mySQLDac Driver + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + DataAbstract_NexusDBDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk new file mode 100644 index 0000000..380698b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dpk @@ -0,0 +1,44 @@ +package DataAbstract_NexusDBDriver_D12; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + DataAbstract_Core_D12, + NexusDB302ll120, + NexusDB302se120, + NexusDB302sr120, + NexusDB302sd120, + NexusDB302sq120, + NexusDB302re120, + NexusDB302pt120, + NexusDB302tn120, + NexusDB302tw120, + NexusDB302db120; +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dproj new file mode 100644 index 0000000..e683a67 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.dproj @@ -0,0 +1,111 @@ + + + {f5368522-8742-4b69-a8b3-668ec242cc52} + DataAbstract_NexusDBDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_NexusDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + error + error + error + error + error + ..\..\Dcu\D12 + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + ..\..\Dcu\D12 + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_NexusDBDriver_D12.bpl + Data Abstract - NexusDB Driver + + + + MainSource + + + + + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + RemObjects Data Abstract - MicroOlap mySQLDac Driver + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + DataAbstract_NexusDBDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dpk new file mode 100644 index 0000000..8cacec4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dpk @@ -0,0 +1,45 @@ +package DataAbstract_NexusDBDriver_D14; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + DataAbstract_Core_D14, + NexusDB302ll140, + NexusDB302se140, + NexusDB302sr140, + NexusDB302sd140, + NexusDB302sq140, + NexusDB302re140, + NexusDB302pt140, + NexusDB302tn140, + NexusDB302tw140, + NexusDB302db140; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dproj new file mode 100644 index 0000000..cf9424a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.dproj @@ -0,0 +1,113 @@ + + + {f5368522-8742-4b69-a8b3-668ec242cc52} + DataAbstract_NexusDBDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_NexusDBDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + error + error + error + error + error + error + ..\..\Dcu\D14 + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + ..\..\Dcu\D14 + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_NexusDBDriver_D14.bpl + Data Abstract - NexusDB Driver + + + + MainSource + + + + + + + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + RemObjects Data Abstract - MicroOlap mySQLDac Driver + CodeGear BDE DB Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + DataAbstract_NexusDBDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.res new file mode 100644 index 0000000..941b7a7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg new file mode 100644 index 0000000..c7cbecf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.cfg @@ -0,0 +1,42 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D6" +-LE"..\Dcu\D6" +-LN"..\Dcu\D6" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_PLATFORM +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof new file mode 100644 index 0000000..dcd6c63 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - NexusDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D6 +PackageDLLOutputDir=..\Dcu\D6 +PackageDCPOutputDir=..\Dcu\D6 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk new file mode 100644 index 0000000..f2b9bec --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.dpk @@ -0,0 +1,44 @@ +package DataAbstract_NexusDBDriver_D6; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D6, + DataAbstract_Core_D6, + NexusDB107st60, + NexusDB107pt60, + NexusDB107tw60, + NexusDB107tn60, + NexusDB107re60, + NexusDB1071x60, + NexusDB107sq60, + NexusDB107db60; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res new file mode 100644 index 0000000..22eb4e7 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg new file mode 100644 index 0000000..d772b58 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\Dcu\D7" +-LE"..\Dcu\D7" +-LN"..\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof new file mode 100644 index 0000000..3a86bcb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - NexusDB Driver + +[Directories] +OutputDir= +UnitOutputDir=..\Dcu\D7 +PackageDLLOutputDir=..\Dcu\D7 +PackageDCPOutputDir=..\Dcu\D7 +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk new file mode 100644 index 0000000..66eb10a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.dpk @@ -0,0 +1,47 @@ +package DataAbstract_NexusDBDriver_D7; + +{$R *.res} +{$R 'uDANexusDBDriver.dcr'} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Data Abstract - NexusDB Driver'} +{$IMPLICITBUILD OFF} + +requires + RemObjects_Core_D7, + DataAbstract_Core_D7, + NexusDB107ll70, + NexusDB107sr70, + NexusDB107sd70, + NexusDB107sq70, + NexusDB107re70, + NexusDB107st70, + NexusDB107tn70, + NexusDB107pt70, + NexusDB107tw70, + NexusDB107db70, + NexusDB1071x70; + +contains + uDANexusDBDriver in 'uDANexusDBDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res new file mode 100644 index 0000000..20e9bca Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_NexusDBDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj new file mode 100644 index 0000000..01bb3ad --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_ODACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs ODAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk new file mode 100644 index 0000000..78921ea --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + DataAbstract_Core_D10, + odac100; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk new file mode 100644 index 0000000..92f4d48 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + DataAbstract_Core_D11, + odac105; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj new file mode 100644 index 0000000..7d8ed75 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.dproj @@ -0,0 +1,87 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_ODACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ODACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs ODAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_ODACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dpk new file mode 100644 index 0000000..0b6e0ae --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_ODACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac120, + DataAbstract_Core_D12, + odac120; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dproj new file mode 100644 index 0000000..16668d0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.dproj @@ -0,0 +1,99 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_ODACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ODACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_ODACDriver_D12.bpl + true + RemObjects Data Abstract - CoreLabs ODAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_ODACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dpk new file mode 100644 index 0000000..119eebe --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_ODACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac140, + DataAbstract_Core_D14, + odac140; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dproj new file mode 100644 index 0000000..2a2d16d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_ODACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ODACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_ODACDriver_D14.bpl + true + RemObjects Data Abstract - CoreLabs ODAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_ODACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof new file mode 100644 index 0000000..e6a8cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs ODAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk new file mode 100644 index 0000000..debd426 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac60, + RemObjects_Core_D6, + DataAbstract_Core_D6, + odac60; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof new file mode 100644 index 0000000..b6566eb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs ODAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk new file mode 100644 index 0000000..06e9940 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_ODACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs ODAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + DataAbstract_Core_D7, + odac70; + +contains + uDAODACDriver in 'uDAODACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res new file mode 100644 index 0000000..5948a0e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ODACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.bdsproj new file mode 100644 index 0000000..30eddaf --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_PgDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Devart PgDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.dpk new file mode 100644 index 0000000..7517fcb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_PgDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + DataAbstract_Core_D10, + pgdac100; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dpk new file mode 100644 index 0000000..162cb52 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_PgDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + DataAbstract_Core_D11, + pgdac105; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dproj new file mode 100644 index 0000000..18fec30 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_PgDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PgDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Devart PgDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_PgDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dpk new file mode 100644 index 0000000..a79a681 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_PgDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac120, + DataAbstract_Core_D12, + pgdac120; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dproj new file mode 100644 index 0000000..7a6bbb4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.dproj @@ -0,0 +1,99 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_PgDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PgDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_PgDACDriver_D12.bpl + true + RemObjects Data Abstract - Devart PgDAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_PgDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dpk new file mode 100644 index 0000000..d8d6a08 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PgDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dac140, + DataAbstract_Core_D14, + pgdac140; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dproj new file mode 100644 index 0000000..af91ba5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_PgDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PgDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_PgDACDriver_D14.bpl + true + RemObjects Data Abstract - Devart PgDAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_PgDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.cfg new file mode 100644 index 0000000..7124fa1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dof new file mode 100644 index 0000000..94003e2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Devart PgDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dpk new file mode 100644 index 0000000..85d77b6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_PgDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dac60, + RemObjects_Core_D6, + DataAbstract_Core_D6, + pgdac60; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dof new file mode 100644 index 0000000..a870306 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Devart PgDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dpk new file mode 100644 index 0000000..db2cfb1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_PgDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart PgDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + DataAbstract_Core_D7, + pgdac70; + +contains + uDAPgDACDriver in 'uDAPgDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_Glyphs.res new file mode 100644 index 0000000..f3a4591 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PgDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj new file mode 100644 index 0000000..d3a6db6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_PostgresDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - MicroOlap PostgresDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg new file mode 100644 index 0000000..9037d9d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk new file mode 100644 index 0000000..424def4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + PostgresDAC10; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk new file mode 100644 index 0000000..14e92ab --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11, + PostgresDAC11; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj new file mode 100644 index 0000000..1233566 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.dproj @@ -0,0 +1,69 @@ + + + + {777e54de-8166-497d-912a-60af105eb626} + DataAbstract_PostgresDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PostgresDACDriver_D11.bpl + + + 7.0 + False + False + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - MicroOlap PostgresDAC DriverFalseTrueFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_PostgresDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dpk new file mode 100644 index 0000000..162af52 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12, + PostgresDAC12; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dproj new file mode 100644 index 0000000..cc12094 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.dproj @@ -0,0 +1,95 @@ + + + {777e54de-8166-497d-912a-60af105eb626} + DataAbstract_PostgresDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PostgresDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D12 + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + 00400000 + ..\..\Dcu\D12\DataAbstract_PostgresDACDriver_D12.bpl + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_PostgresDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dpk new file mode 100644 index 0000000..2d97f99 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14, + PostgresDAC14; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dproj new file mode 100644 index 0000000..43b7324 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.dproj @@ -0,0 +1,97 @@ + + + {777e54de-8166-497d-912a-60af105eb626} + DataAbstract_PostgresDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_PostgresDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + error + ..\..\Dcu\D14 + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + 00400000 + ..\..\Dcu\D14\DataAbstract_PostgresDACDriver_D14.bpl + RemObjects Data Abstract - MicroOlap PostgresDAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_PostgresDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg new file mode 100644 index 0000000..05f9ec3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof new file mode 100644 index 0000000..e0035fa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk new file mode 100644 index 0000000..b7803fe --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6, + PostgresDAC6; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg new file mode 100644 index 0000000..6784156 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof new file mode 100644 index 0000000..f2d0c96 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - ADOExpress/dbGo Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk new file mode 100644 index 0000000..37c6d74 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_PostgresDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - MicroOlap PostgresDAC Driver'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7, + PostgresDAC7; + +contains + uDAPostgresDACDriver in 'uDAPostgresDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res new file mode 100644 index 0000000..892aed8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res new file mode 100644 index 0000000..fb43550 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_PostgresDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj new file mode 100644 index 0000000..d05f343 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_SDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - CoreLabs SDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk new file mode 100644 index 0000000..a7067e9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + sdac100, + DataAbstract_Core_D10; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk new file mode 100644 index 0000000..40d1424 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + sdac105, + DataAbstract_Core_D11; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj new file mode 100644 index 0000000..4c5409b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.dproj @@ -0,0 +1,79 @@ + + + {bcb5ceeb-712c-4f85-83e3-6f57bb934c9f} + DataAbstract_SDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - CoreLabs SDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_SDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dpk new file mode 100644 index 0000000..206f297 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_SDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac120, + sdac120, + DataAbstract_Core_D12; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dproj new file mode 100644 index 0000000..6641211 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.dproj @@ -0,0 +1,99 @@ + + + {bcb5ceeb-712c-4f85-83e3-6f57bb934c9f} + DataAbstract_SDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_SDACDriver_D12.bpl + true + RemObjects Data Abstract - CoreLabs SDAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_SDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dpk new file mode 100644 index 0000000..bd096f5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_SDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac140, + sdac140, + DataAbstract_Core_D14; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dproj new file mode 100644 index 0000000..2fd239b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {bcb5ceeb-712c-4f85-83e3-6f57bb934c9f} + DataAbstract_SDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_SDACDriver_D14.bpl + true + RemObjects Data Abstract - CoreLabs SDAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_SDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof new file mode 100644 index 0000000..a6cb4e4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs SDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk new file mode 100644 index 0000000..6f3c3e6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + RemObjects_Core_D6, + DataAbstract_Core_D6, + dac60, + sdac60; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof new file mode 100644 index 0000000..42ca991 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - CoreLabs SDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk new file mode 100644 index 0000000..ca1d337 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_SDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - CoreLabs SDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + sdac70, + DataAbstract_Core_D7; + +contains + uDASDACDriver in 'uDASDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res new file mode 100644 index 0000000..ac3b612 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res new file mode 100644 index 0000000..d14c81c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SDACDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj new file mode 100644 index 0000000..4acf23e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_SQLiteDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - SQLite Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk new file mode 100644 index 0000000..e678ec2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk new file mode 100644 index 0000000..ba6edaa --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D11; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj new file mode 100644 index 0000000..ed142b2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.dproj @@ -0,0 +1,71 @@ + + + {17f81962-5ed1-4c36-bee9-ce79aab46e95} + DataAbstract_SQLiteDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLiteDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - SQLite DriverFalseFalseFalseTrueFalse301361FalseFalseFalseFalseFalse10331252RemObjects Software3.0.1.361RemObjects SDK1.0.0.0DataAbstract_SQLiteDriver_D11.dpk + + + + + MainSource + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dpk new file mode 100644 index 0000000..201d328 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D12; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dproj new file mode 100644 index 0000000..e23601c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.dproj @@ -0,0 +1,96 @@ + + + {17f81962-5ed1-4c36-bee9-ce79aab46e95} + DataAbstract_SQLiteDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLiteDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_SQLiteDriver_D12.bpl + true + RemObjects Data Abstract - SQLite Driver + + + + MainSource + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_SQLiteDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dpk new file mode 100644 index 0000000..633943e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D14; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dproj new file mode 100644 index 0000000..0ae6814 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.dproj @@ -0,0 +1,98 @@ + + + {17f81962-5ed1-4c36-bee9-ce79aab46e95} + DataAbstract_SQLiteDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLiteDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_SQLiteDriver_D14.bpl + true + RemObjects Data Abstract - SQLite Driver + + + + MainSource + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_SQLiteDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.res new file mode 100644 index 0000000..7b3c163 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg new file mode 100644 index 0000000..4730510 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof new file mode 100644 index 0000000..1fb3129 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dof @@ -0,0 +1,76 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - SQLite Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk new file mode 100644 index 0000000..81be681 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D6; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res new file mode 100644 index 0000000..f5602d3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg new file mode 100644 index 0000000..5cf57a8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof new file mode 100644 index 0000000..94c4d85 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - SQLite Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.142 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk new file mode 100644 index 0000000..0265195 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.dpk @@ -0,0 +1,37 @@ +package DataAbstract_SQLiteDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLite Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D7; + +contains + uDASQLiteDriver in 'uDASQLiteDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res new file mode 100644 index 0000000..9f2e224 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLiteDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.bdsproj new file mode 100644 index 0000000..ebc5585 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.bdsproj @@ -0,0 +1,170 @@ + + + + + + + + + + + + DataAbstract_SQLitePassDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - SQLitePass Driver + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.cfg new file mode 100644 index 0000000..83deb76 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dpk new file mode 100644 index 0000000..accadb7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_SQLitePassDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + DataAbstract_Core_D10, + vcldb, + RemObjects_Core_D10; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dproj new file mode 100644 index 0000000..d240289 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.dproj @@ -0,0 +1,100 @@ + + + {8e6254e3-ed13-46bb-a357-86f60b62c415} + DataAbstract_SQLitePassDriver_D10.dpk + Debug + AnyCPU + DCC32 + D:\Program files.all\Winsys\borland\DataAbstract_SQLitePassDriver_D10.bpl + + + 7.0 + False + False + True + True + 0 + RELEASE + + + 7.0 + True + True + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + RemObjects Data Abstract - SQLitePass Driver + False + False + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + Data Abstract - NexusDB Driver + CodeGear C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + DataAbstract_SQLitePassDriver_D10.dpk + + + + + + + MainSource + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.res new file mode 100644 index 0000000..c71f94d Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dpk new file mode 100644 index 0000000..038434e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dpk @@ -0,0 +1,40 @@ +package DataAbstract_SQLitePassDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D11, + RemObjects_Core_D11; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dproj new file mode 100644 index 0000000..af5a6da --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.dproj @@ -0,0 +1,62 @@ + + + {8e6254e3-ed13-46bb-a357-86f60b62c415} + DataAbstract_SQLitePassDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLitePassDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + RELEASE + + + 7.0 + True + True + DEBUG + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - SQLitePass DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse104912511.0.0.01.0.0.0 + + + + + Data Abstract - NexusDB Driver + CodeGear C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + DataAbstract_SQLitePassDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.res new file mode 100644 index 0000000..653aa54 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dpk new file mode 100644 index 0000000..1aa375a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_SQLitePassDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D12, + RemObjects_Core_D12; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dproj new file mode 100644 index 0000000..90cf7bb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.dproj @@ -0,0 +1,101 @@ + + + {8e6254e3-ed13-46bb-a357-86f60b62c415} + DataAbstract_SQLitePassDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLitePassDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + true + ..\..\Dcu\D12\DataAbstract_SQLitePassDriver_D12.bpl + 00400000 + ..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + ..\..\Dcu\D12 + DEBUG;$(DCC_Define) + RemObjects Data Abstract - SQLitePass Driver + true + ..\..\Dcu\D12 + true + ..\..\Dcu\D12 + false + true + true + + + + MainSource + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + Data Abstract - NexusDB Driver + CodeGear C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + DataAbstract_SQLitePassDriver_D12.dpk + + + C:\Program Files\RemObjects Software\Data Abstract for Delphi\Source\Drivers\ + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.res new file mode 100644 index 0000000..653aa54 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dpk new file mode 100644 index 0000000..95d53c0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dpk @@ -0,0 +1,40 @@ +package DataAbstract_SQLitePassDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D14, + RemObjects_Core_D14; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dproj new file mode 100644 index 0000000..0d2928f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {8e6254e3-ed13-46bb-a357-86f60b62c415} + DataAbstract_SQLitePassDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_SQLitePassDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + true + ..\..\Dcu\D14\DataAbstract_SQLitePassDriver_D14.bpl + 00400000 + ..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + ..\..\Dcu\D14 + DEBUG;$(DCC_Define) + RemObjects Data Abstract - SQLitePass Driver + true + ..\..\Dcu\D14 + true + ..\..\Dcu\D14 + false + true + true + + + + MainSource + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + Data Abstract - NexusDB Driver + CodeGear C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + DataAbstract_SQLitePassDriver_D14.dpk + + + C:\Program Files\RemObjects Software\Data Abstract for Delphi\Source\Drivers\ + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.res new file mode 100644 index 0000000..653aa54 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.cfg new file mode 100644 index 0000000..7124fa1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dof new file mode 100644 index 0000000..9b84b3a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - SQLitePass Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dpk new file mode 100644 index 0000000..ba6495f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_SQLitePassDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D6, + RemObjects_Core_D6; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.res new file mode 100644 index 0000000..622f41e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.cfg new file mode 100644 index 0000000..fa0d7af --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-O"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-I"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-R"..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dof new file mode 100644 index 0000000..6326525 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - SQLitePass Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\..\RemObjects SDK for Delphi\Dcu\D7 +Packages=vcl;rtl;indy;vcldb;dbrtl;dsnap;vclx;VclSmp;dbexpress;dbxcds;vclie;inet;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;RemObjects_Synapse_D7;Jcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;TntUnicodeVcl_R70;acat70;dsnapcon;adortl;ibxpress;IBO40FTS_D7;IBO40RPL_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;DataAbstract_IDE_D7;xmlrtl;dxBarD7;IndyCore70;IndySystem70;vclactnband;IndyProtocols70;bdertl;DataAbstract_DBISAMDriver_D7;DataAbstract_SQLiteDriver_D7;cxLibraryVCLD7;dxThemeD7;cxEditorsVCLD7;cxTreeListVCLD7;Hydra_Core_D7;dxComnD7;Hydra_DX_D7;Hydra_RO_D7;PascalScript_RO_D7;DataAbstract_Scripting_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dpk new file mode 100644 index 0000000..cc5b811 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_SQLitePassDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D7, + RemObjects_Core_D7; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.res new file mode 100644 index 0000000..622f41e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.bdsproj new file mode 100644 index 0000000..1308e38 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.bdsproj @@ -0,0 +1,168 @@ + + + + + + + + + + + + DataAbstract_SQLitePassDriver_D9.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - SQLitePass Driver + + + + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9 + + + + False + + + + + + False + + + + + + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1049 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.cfg new file mode 100644 index 0000000..8de9e14 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.cfg @@ -0,0 +1,44 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D9" +-LE"..\..\Dcu\D9" +-LN"..\..\Dcu\D9" +-U"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-O"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-I"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-R"..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.dpk new file mode 100644 index 0000000..3500ef6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.dpk @@ -0,0 +1,39 @@ +package DataAbstract_SQLitePassDriver_D9; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - SQLitePass Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + DataAbstract_Core_D9, + RemObjects_Core_D9; + +contains + uDASQLitePassDriver in 'uDASQLitePassDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.res new file mode 100644 index 0000000..653aa54 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_D9.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.RES b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.RES new file mode 100644 index 0000000..802b13a Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.RES differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.lrs new file mode 100644 index 0000000..d4e787d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Glyphs.lrs @@ -0,0 +1,80 @@ +LazarusResources.Add('TDASQLITEPASSDRIVER','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#129#30#0'w'#23#0'w'#23#0#255#0#255#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#129#30 + +#0#129#30#0#129#30#0#252#154'*'#184':'#0#184':'#0#128'*'#3#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#130#24#0#129#30#0#248'w'#0#255#129#0#255#149#19#255#170'4'#255#189'Z' + +#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0#5'f'#149#130#24#0'y'#16#0#255#158' '#252'w'#0#143#30#0#213'g'#10#255#171 + +'8'#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#130#24#0#130#24#0#221#152'Z'#255#191']'#186'M'#5#255#0#255'v'#12#0#242#134 + +#20#252#160'4'#138#31#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#0'R'#143#0'6o'#9 + +'o'#164'W9'#23#171'3'#0#233#171'n'#255#215#146#193'e%'#255#0#255'v'#12#0#242 + +'w'#1#255#150#25#138#31#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#128#0#0#0'R'#143#0'R'#143#0'R'#143#6#140#194'I' + +#221#255#0'v'#186#0'v'#186'YVE'#255#218#154#233#170'j'#145'%'#0#193'M'#0#255 + +'~'#0#138#31#0#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0'6p'#0'j'#161#2#199#255 + +#9#202#255''''#212#255'N'#222#255'y'#233#255#0'v'#186#255#218#154#255#218#154 + +#255#211#137#255#177'C'#255#138#7#138#31#0#255#0#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0'9u'#4'v'#170'('#212#255#0 + +#158#218#0'N'#138#22#163#212'R'#224#255#0'v'#186#196'f#'#203'g'#25#255#218 + +#154#184':'#0#184':'#0#184':'#0#255#0#255#255#0#255#2't'#169'['#213#226'i' + +#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254#0';v'#11#128#176#156#233 + +#254'h'#230#255'#'#165#212#0'A~'#0'F'#129'0'#215#255'M'#215#254'%_p'#184':'#0 + +#184':'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2't'#169'['#213 + +#226#127#247#254'z'#238#254'}'#233#254#135#231#255#163#237#255#0';v'#3'{'#176 + +#165#235#254#167#243#255'^'#193#226#0'L'#138#0'N'#138#19#204#255'-'#206#252 + +#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#2't'#169#160#233#239#170#238#246'p'#207#229'?'#177#211#29#149#192#17#131 + +#177#15'{'#170#0'@z'#24#150#196#182#246#255'~'#212#238#3'g'#157#13#182#235#1 + +#198#255#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'p'#164'T'#177#202'('#156#188'&'#171#207#27#182#224 + +#12#183#237#24#198#247':'#213#254#0'A~'#27#153#196#181#244#255#182#246#255 + +#154#240#255'N'#222#255#13#202#255#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'l'#158'?'#180#203'f'#242 + +#251'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225#255#0'Ay' + +#0'E~;'#175#213#182#246#255#13'b'#145#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2's'#167'['#213 + +#226'i'#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225 + +#255'}'#229#252'Q'#199#233#0'A{'#0'E{'#1'z'#180#5'f'#149#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#128#128#128#255#255#255#128#0#0#128#0 + +#0#128#0#0#192#220#192#255#255#255#192#220#192#128#0#0#192#220#192#128#0#0 + +#255#255#255#128#0#0#128#0#0#192#220#192#128#0#0#255#255#255#128#0#0#255#255 + +#255#128#0#0#128#0#0#128#0#0#255#255#255#0#0#0#128#128#128#255#255#255#255 + +#255#255#255#255#255#192#220#192#128#0#0#255#255#255#128#0#0#255#255#255#128 + +#0#0#192#220#192#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255 + +#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#255#255#255#0#0#0 + +#128#128#128#255#255#255#192#220#192#128#0#0#128#0#0#192#220#192#255#255#255 + +#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#255 + +#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#128#0#0#192#220#192 + +#255#255#255#0#0#0#128#128#128#255#255#255#128#0#0#192#220#192#255#255#255 + ,#255#255#255#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0#255#255#255 + +#128#0#0#255#255#255#255#255#255#255#255#255#0#0#0#128#128#128#255#255#255 + +#192#220#192#128#0#0#128#0#0#128#0#0#255#255#255#192#220#192#128#0#0#128#0#0 + +#192#220#192#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#192#220#192 + +#128#0#0#128#0#0#192#220#192#128#0#0#128#0#0#255#255#255#0#0#0#128#128#128 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#0#0#0#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#0#0 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk new file mode 100644 index 0000000..5c89f27 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Unix.lpk @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..a8fa43b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_SQLitePassDriver_Lazarus_Windows.lpk @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.bdsproj new file mode 100644 index 0000000..5308f1d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.bdsproj @@ -0,0 +1,176 @@ + + + + + + + + + + + + DataAbstract_UniDACDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Devart UniDAC Driver False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dpk new file mode 100644 index 0000000..73d5c8d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dpk @@ -0,0 +1,41 @@ +package DataAbstract_UniDACDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac100, + RemObjects_Core_D10, + DataAbstract_Core_D10, + UniDAC100; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dproj new file mode 100644 index 0000000..d438d9b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.dproj @@ -0,0 +1,117 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_UniDACDriver_D10.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D10\DataAbstract_UniDACDriver_D10.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + DEBUG + False + False + False + False + False + False + + + Delphi.Personality + Package + + + False + True + False + + + RemObjects Data Abstract - Devart UniDAC Driver + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_UniDACDriver_D10.dpk + + + + + + + MainSource + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dpk new file mode 100644 index 0000000..3eef34d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dpk @@ -0,0 +1,41 @@ +package DataAbstract_UniDACDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac105, + RemObjects_Core_D11, + DataAbstract_Core_D11, + UniDAC105; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dproj new file mode 100644 index 0000000..83719d2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.dproj @@ -0,0 +1,75 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_UniDACDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_UniDACDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Devart UniDAC DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_UniDACDriver_D11.dpk + + + + + MainSource + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dpk new file mode 100644 index 0000000..4e208c2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dpk @@ -0,0 +1,40 @@ +package DataAbstract_UniDACDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac120, + DataAbstract_Core_D12, + UniDAC120; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dproj new file mode 100644 index 0000000..cd51cf6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.dproj @@ -0,0 +1,99 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_UniDACDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_UniDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_UniDACDriver_D12.bpl + true + RemObjects Data Abstract - Devart UniDAC Driver + + + + MainSource + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_UniDACDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dpk new file mode 100644 index 0000000..4aa2798 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dpk @@ -0,0 +1,39 @@ +package DataAbstract_UniDACDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dac140, + DataAbstract_Core_D14, + UniDAC140; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dproj new file mode 100644 index 0000000..887bbd0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.dproj @@ -0,0 +1,101 @@ + + + {4ed86b4c-3296-4ab5-b711-e264774d76b0} + DataAbstract_UniDACDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_UniDACDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_UniDACDriver_D14.bpl + true + RemObjects Data Abstract - Devart UniDAC Driver + + + + MainSource + + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_UniDACDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.cfg new file mode 100644 index 0000000..7124fa1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-O"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-I"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-R"..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dof new file mode 100644 index 0000000..782fb42 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Devart UniDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\..\RemObjects SDK for Delphi\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dpk new file mode 100644 index 0000000..a8628c1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.dpk @@ -0,0 +1,40 @@ +package DataAbstract_UniDACDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dac60, + RemObjects_Core_D6, + DataAbstract_Core_D6, + UniDAC60; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dof new file mode 100644 index 0000000..c455597 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Devart UniDAC Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dpk new file mode 100644 index 0000000..e2edfd7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.dpk @@ -0,0 +1,41 @@ +package DataAbstract_UniDACDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac70, + RemObjects_Core_D7, + DataAbstract_Core_D7, + UniDAC70; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.bdsproj new file mode 100644 index 0000000..e608c59 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.bdsproj @@ -0,0 +1,172 @@ + + + + + + + + + + + + DataAbstract_UniDACDriver_D9.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Devart UniDAC Driver + + + + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9 + ..\..\Dcu\D9;..\..\..\RemObjects SDK for Delphi\Dcu\D9 + + + + False + + + + + + False + + + + + + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.cfg new file mode 100644 index 0000000..4a508dd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D9" +-LE"..\..\Dcu\D9" +-LN"..\..\Dcu\D9" +-U"..\..\Dcu\D9" +-O"..\..\Dcu\D9" +-I"..\..\Dcu\D9" +-R"..\..\Dcu\D9" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.dpk new file mode 100644 index 0000000..09b480e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.dpk @@ -0,0 +1,41 @@ +package DataAbstract_UniDACDriver_D9; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Devart UniDAC Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + bdertl, + dac90, + RemObjects_Core_D9, + DataAbstract_Core_D9, + UniDAC90; + +contains + uDAUniDACDriver in 'uDAUniDACDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.res new file mode 100644 index 0000000..c2869c8 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_D9.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Glyphs.lrs new file mode 100644 index 0000000..5a19295 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Glyphs.lrs @@ -0,0 +1,80 @@ +LazarusResources.Add('TDAUNIDACDRIVER','BMP',[ + 'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#192#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0'@' + +#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0#255 + +#255#0#255#255#0#255#255#0#255#129#30#0'w'#23#0'w'#23#0#255#0#255#255#0#255 + +#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#129#30#0 + +#129#30#0#129#30#0#252#154'*'#184':'#0#184':'#0#128'*'#3#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#130#24#0#129#30#0#248'w'#0#255#129#0#255#149#19#255#170'4'#255#189'Z' + +#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0#5'f'#149#130#24#0'y'#16#0#255#158' '#252'w'#0#143#30#0#213'g'#10#255#171 + +'8'#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#130#24#0#130#24#0#221#152'Z'#255#191']'#186'M'#5#255#0#255'v'#12#0#242#134 + +#20#252#160'4'#138#31#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#0'R'#143#0'6o'#9 + +'o'#164'W9'#23#171'3'#0#233#171'n'#255#215#146#193'e%'#255#0#255'v'#12#0#242 + +'w'#1#255#150#25#138#31#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#128#0#0#0'R'#143#0'R'#143#0'R'#143#6#140#194'I' + +#221#255#0'v'#186#0'v'#186'YVE'#255#218#154#233#170'j'#145'%'#0#193'M'#0#255 + +'~'#0#138#31#0#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0'6p'#0'j'#161#2#199#255 + +#9#202#255''''#212#255'N'#222#255'y'#233#255#0'v'#186#255#218#154#255#218#154 + +#255#211#137#255#177'C'#255#138#7#138#31#0#255#0#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0'9u'#4'v'#170'('#212#255#0 + +#158#218#0'N'#138#22#163#212'R'#224#255#0'v'#186#196'f#'#203'g'#25#255#218 + +#154#184':'#0#184':'#0#184':'#0#255#0#255#255#0#255#2't'#169'['#213#226'i' + +#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254#0';v'#11#128#176#156#233 + +#254'h'#230#255'#'#165#212#0'A~'#0'F'#129'0'#215#255'M'#215#254'%_p'#184':'#0 + +#184':'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2't'#169'['#213 + +#226#127#247#254'z'#238#254'}'#233#254#135#231#255#163#237#255#0';v'#3'{'#176 + +#165#235#254#167#243#255'^'#193#226#0'L'#138#0'N'#138#19#204#255'-'#206#252 + +#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#2't'#169#160#233#239#170#238#246'p'#207#229'?'#177#211#29#149#192#17#131 + +#177#15'{'#170#0'@z'#24#150#196#182#246#255'~'#212#238#3'g'#157#13#182#235#1 + +#198#255#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'p'#164'T'#177#202'('#156#188'&'#171#207#27#182#224 + +#12#183#237#24#198#247':'#213#254#0'A~'#27#153#196#181#244#255#182#246#255 + +#154#240#255'N'#222#255#13#202#255#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'l'#158'?'#180#203'f'#242 + +#251'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225#255#0'Ay' + +#0'E~;'#175#213#182#246#255#13'b'#145#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2's'#167'['#213 + +#226'i'#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225 + +#255'}'#229#252'Q'#199#233#0'A{'#0'E{'#1'z'#180#5'f'#149#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#128 + +#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#255#128#128 + +#128#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#0#0#0#128#128#128#255#255#255#128#0 + +#0#128#0#0#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#192#220#192#128#0 + +#0#192#220#192#128#0#0#128#0#0#192#220#192#255#255#255#128#0#0#255#255#255 + +#128#0#0#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0#128#128#128#255 + +#255#255#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0 + +#192#220#192#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#255#255#255#128 + +#0#0#255#255#255#128#0#0#255#255#255#128#0#0#192#220#192#255#255#255#0#0#0 + +#128#128#128#255#255#255#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#192 + +#220#192#128#0#0#192#220#192#128#0#0#192#220#192#128#0#0#255#255#255#128#0#0 + +#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255 + +#255#0#0#0#128#128#128#255#255#255#128#0#0#192#220#192#128#0#0#192#220#192 + ,#128#0#0#128#0#0#128#0#0#255#255#255#255#255#255#255#255#255#128#0#0#192#220 + +#192#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#255#255#255#128#0#0#192 + +#220#192#255#255#255#0#0#0#128#128#128#255#255#255#128#0#0#255#255#255#128#0 + +#0#255#255#255#255#255#255#255#255#255#254#254#254#255#255#255#128#0#0#255 + +#255#255#128#0#0#128#0#0#192#220#192#255#255#255#192#220#192#128#0#0#192#220 + +#192#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0#128#128#128#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#254#254#254#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#0#0#0#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Unux.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Unux.lpk new file mode 100644 index 0000000..3aebe6a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Unux.lpk @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..48e702e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UniDACDriver_Lazarus_Windows.lpk @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UnidacDriver_Glyphs.RES b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UnidacDriver_Glyphs.RES new file mode 100644 index 0000000..440c85c Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_UnidacDriver_Glyphs.RES differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj new file mode 100644 index 0000000..a1f034b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_ZeosDriver_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + True + True + + + False + + False + False + False + True + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - Zeos Driver + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg new file mode 100644 index 0000000..207b254 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.cfg @@ -0,0 +1,49 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-O"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-I"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-R"..\..\Dcu\D10;..\..\..\RemObjects SDK for Delphi\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk new file mode 100644 index 0000000..fa6c962 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk new file mode 100644 index 0000000..8483957 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D11, + DataAbstract_Core_D11; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj new file mode 100644 index 0000000..5711217 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.dproj @@ -0,0 +1,73 @@ + + + {a14f79c2-acbc-46d8-a339-5d13e7ddad81} + DataAbstract_ZeosDriver_D11.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ZeosDriver_D11.bpl + + + 7.0 + False + False + True + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + RELEASE + False + False + False + False + False + False + + + 7.0 + True + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + ..\..\Dcu\D11;..\..\..\RemObjects SDK for Delphi\Dcu\D11 + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - Zeos DriverFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse10331252RemObjects Software1.0.0.0RemObjects SoftwareRemObjects SoftwareRemObjects Data Abstract1.0.0.0DataAbstract_ZeosDriver_D11.dpk + + + + + MainSource + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dpk new file mode 100644 index 0000000..7a4343f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dpk @@ -0,0 +1,38 @@ +package DataAbstract_ZeosDriver_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + DataAbstract_Core_D12; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dproj new file mode 100644 index 0000000..22b6b80 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.dproj @@ -0,0 +1,97 @@ + + + {a14f79c2-acbc-46d8-a339-5d13e7ddad81} + DataAbstract_ZeosDriver_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ZeosDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D12 + error + error + error + error + error + ..\..\Dcu\D12 + error + ..\..\Dcu\D12 + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_ZeosDriver_D12.bpl + true + RemObjects Data Abstract - Zeos Driver + + + + MainSource + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_ZeosDriver_D12.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dpk new file mode 100644 index 0000000..b93cc3e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dpk @@ -0,0 +1,38 @@ +package DataAbstract_ZeosDriver_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + DataAbstract_Core_D14; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dproj new file mode 100644 index 0000000..9ae3ad4 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.dproj @@ -0,0 +1,100 @@ + + + {a14f79c2-acbc-46d8-a339-5d13e7ddad81} + DataAbstract_ZeosDriver_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_ZeosDriver_D11.bpl + 11.1 + Base + + + true + + + 1 + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + ..\..\Dcu\D14 + error + error + error + error + error + ..\..\Dcu\D14 + error + ..\..\Dcu\D14 + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_ZeosDriver_D14.bpl + true + RemObjects Data Abstract - Zeos Driver + + + + MainSource + + + + + + + + + + + + Base + + + + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 1.0.0.0 + + RemObjects Software + RemObjects Software + + RemObjects Data Abstract + 1.0.0.0 + + + DataAbstract_ZeosDriver_D14.dpk + + + + 12 + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.res new file mode 100644 index 0000000..6ef0ba1 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg new file mode 100644 index 0000000..0aa2cb6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-O"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-I"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-R"..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof new file mode 100644 index 0000000..1972ae0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dof @@ -0,0 +1,77 @@ +[FileVersion] +Version=6.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitDeprecated=0 +UnitLibrary=0 +UnitPlatform=0 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - Zeos Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk new file mode 100644 index 0000000..95dba7c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + ZComponentDesign, + RemObjects_Core_D6, + DataAbstract_Core_D6; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg new file mode 100644 index 0000000..a290ad9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U+ +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof new file mode 100644 index 0000000..cb208b6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dof @@ -0,0 +1,117 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=1 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - Zeos Driver + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software, Inc. +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright=RemObjects Software, Inc. +LegalTrademarks=RemObjects Software, Inc. +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments=http://www.remobjects.com + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk new file mode 100644 index 0000000..9cac616 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.dpk @@ -0,0 +1,39 @@ +package DataAbstract_ZeosDriver_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE ON} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - Zeos Driver'} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + RemObjects_Core_D7, + DataAbstract_Core_D7, + ZComponentDesign; + +contains + uDAZeosDriver in 'uDAZeosDriver.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res new file mode 100644 index 0000000..b26b84e Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs new file mode 100644 index 0000000..a7f714d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.lrs @@ -0,0 +1,80 @@ +LazarusResources.Add('TDAZEOSDRIVER','BMP',[ + 'BM'#248#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0 + +#194#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#255#0#255'@'#0#0'@'#0#0'@'#0#0 + +'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0'@'#0#0#255#0 + +#255#255#0#255#255#0#255#255#0#255#129#30#0'w'#23#0'w'#23#0#255#0#255#255#0 + +#255#255#0#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0'@'#0#0#255#0#255#255#0#255#129#30 + +#0#129#30#0#129#30#0#252#154'*'#184':'#0#184':'#0#128'*'#3#255#0#255#128#0#0 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#128#0#0'@'#0#0#255#0 + +#255#130#24#0#129#30#0#248'w'#0#255#129#0#255#149#19#255#170'4'#255#189'Z' + +#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255#255 + +#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#255#255#255#128#0#0'@'#0 + +#0#5'f'#149#130#24#0'y'#16#0#255#158' '#252'w'#0#143#30#0#213'g'#10#255#171 + +'8'#138#31#0#255#0#255#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0'@'#0 + +#0#130#24#0#130#24#0#221#152'Z'#255#191']'#186'M'#5#255#0#255'v'#12#0#242#134 + +#20#252#160'4'#138#31#0#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255 + +#128#0#0#255#255#255#128#0#0#255#255#255#255#255#255#128#0#0#0'R'#143#0'6o'#9 + +'o'#164'W9'#23#171'3'#0#233#171'n'#255#215#146#193'e%'#255#0#255'v'#12#0#242 + +'w'#1#255#150#25#138#31#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#255#255 + +#255#255#255#255#255#255#255#128#0#0#0'R'#143#0'R'#143#0'R'#143#6#140#194'I' + +#221#255#0'v'#186#0'v'#186'YVE'#255#218#154#233#170'j'#145'%'#0#193'M'#0#255 + +'~'#0#138#31#0#255#0#255#128#0#0#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#0'6p'#0'j'#161#2#199#255 + +#9#202#255''''#212#255'N'#222#255'y'#233#255#0'v'#186#255#218#154#255#218#154 + +#255#211#137#255#177'C'#255#138#7#138#31#0#255#0#255#128#0#0#128#0#0#128#0#0 + +#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#0'9u'#4'v'#170'('#212#255#0 + +#158#218#0'N'#138#22#163#212'R'#224#255#0'v'#186#196'f#'#203'g'#25#255#218 + +#154#184':'#0#184':'#0#184':'#0#255#0#255#255#0#255#2't'#169'['#213#226'i' + +#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254#0';v'#11#128#176#156#233 + +#254'h'#230#255'#'#165#212#0'A~'#0'F'#129'0'#215#255'M'#215#254'%_p'#184':'#0 + +#184':'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2't'#169'['#213 + +#226#127#247#254'z'#238#254'}'#233#254#135#231#255#163#237#255#0';v'#3'{'#176 + +#165#235#254#167#243#255'^'#193#226#0'L'#138#0'N'#138#19#204#255'-'#206#252 + +#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#2't'#169#160#233#239#170#238#246'p'#207#229'?'#177#211#29#149#192#17#131 + +#177#15'{'#170#0'@z'#24#150#196#182#246#255'~'#212#238#3'g'#157#13#182#235#1 + +#198#255#13'b'#145#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0 + +#255#255#0#255#255#0#255#3'p'#164'T'#177#202'('#156#188'&'#171#207#27#182#224 + +#12#183#237#24#198#247':'#213#254#0'A~'#27#153#196#181#244#255#182#246#255 + +#154#240#255'N'#222#255#13#202#255#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#4'l'#158'?'#180#203'f'#242 + +#251'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225#255#0'Ay' + +#0'E~;'#175#213#182#246#255#13'b'#145#13'b'#145#255#0#255#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#2's'#167'['#213 + +#226'i'#246#254'E'#230#254'%'#215#254#13#199#254#26#204#254';'#215#255'`'#225 + +#255'}'#229#252'Q'#199#233#0'A{'#0'E{'#1'z'#180#5'f'#149#255#0#255#255#0#255 + +#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#128#128#128#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#128#128#128#255#255#255#128#0#0#128#0 + +#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#128#0#0#128#0#0#128#0#0#255 + +#255#255#192#220#192#128#0#0#128#0#0#192#220#192#255#255#255#128#0#0#128#0#0 + +#128#0#0#192#220#192#255#255#255#0#0#0#128#128#128#255#255#255#192#220#192 + +#128#0#0#192#220#192#255#255#255#255#255#255#255#255#255#128#0#0#192#220#192 + +#255#255#255#255#255#255#255#255#255#128#0#0#192#220#192#192#220#192#128#0#0 + +#255#255#255#255#255#255#255#255#255#192#220#192#128#0#0#255#255#255#0#0#0 + +#128#128#128#255#255#255#255#255#255#192#220#192#128#0#0#192#220#192#255#255 + +#255#255#255#255#128#0#0#128#0#0#128#0#0#192#220#192#255#255#255#128#0#0#255 + +#255#255#255#255#255#128#0#0#255#255#255#192#220#192#128#0#0#128#0#0#192#220 + +#192#255#255#255#0#0#0#128#128#128#255#255#255#255#255#255#255#255#255#192 + ,#220#192#128#0#0#192#220#192#255#255#255#128#0#0#192#220#192#255#255#255#255 + +#255#255#255#255#255#128#0#0#192#220#192#192#220#192#128#0#0#255#255#255#128 + +#0#0#192#220#192#255#255#255#255#255#255#255#255#255#0#0#0#128#128#128#255 + +#255#255#128#0#0#128#0#0#128#0#0#128#0#0#128#0#0#255#255#255#128#0#0#128#0#0 + +#128#0#0#128#0#0#255#255#255#192#220#192#128#0#0#128#0#0#192#220#192#255#255 + +#255#192#220#192#128#0#0#128#0#0#128#0#0#255#255#255#0#0#0#128#128#128#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#0#0#0#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#0#0 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res new file mode 100644 index 0000000..92bfe89 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Glyphs.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk new file mode 100644 index 0000000..091b32e --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Mac.lpk @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk new file mode 100644 index 0000000..ca75cdb --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Unix.lpk @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk new file mode 100644 index 0000000..4a5c1ef --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/DataAbstract_ZeosDriver_Lazarus_Windows.lpk @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas new file mode 100644 index 0000000..edea777 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asgsqlite3.pas @@ -0,0 +1,5562 @@ +// To enable debugging remove the dot. Do NOT forget to re-insert before +// deploying to production since this feature will slow down this component +// significantly +{.$DEFINE DEBUG_ENABLED } // Enables Debug information + {.$DEFINE DEBUG_VERY_LOUD} + {.$DEFINE DEBUG_LOUD} + +// Disable this for ignoring IProvider interface (for D4) +{$DEFINE IPROVIDER} + +// enable this if you want to link the SQLite library statically. (No need for dll) +{.$DEFINE SQLite_Static} + +{$I asqlite_def.inc} + +unit ASGSQLite3; +{$HINTS OFF} +{$WARNINGS OFF} +{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +Author: Albert Drent +Description: SQLite 3 DataSet class (encapsulates the Delphi DataSet Class) + based upon the asqlite version for sqlite 2 +Target: Delphi 4, 5, 6 and 7; Delphi 2005; Borland C++ 5 and 6 +Creation: November 2003 +Version: 2006.03.D Stable +EMail: a.drent@aducom.com (www.aducom.com/sqlite, sqlite.aducom.com) +Support: support@aducom.com (supportforum on www.aducom.com) + Please post any questions, remarks etc. to the support forum. We + useually answer questions within days. + Unsollicited mail to support will be intercepted by our spamfilters + and probabely never be heard of. +Legal issues: Copyright (C) 2003..2006 by Aducom Software + + Aducom Software + Eckhartstr 61 + 9746 BN Groningen + Netherlands + + Open Source licence (BSD: http://www.opensource.org/licenses/bsd-license.php) + + Copyright (c) 2006, Aducom Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of Aducom Software nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + +Acknowledgement + These components were written for our own needs. Since SQLite is + a freeware component we like to donate this one to the community + too. Parts of the code is adapted from several sources, but mainly + from a sample and the vcl sources of Borland itself. And, of + course, we did a lot and still are... +To Do + A lot... + We are very busy, but will develop on our needs. If anyone can + contribute, please feel welcome. Alter the source with lots of comment + and mail it to me. If it works right I will add it to the official + source and add your credit here below. Before you start, please + put a request on the forum. It would be a shame and a waste of your + time if you develop something which already is... and I need to set + the spamfilter right to let you pass through. +History: + Nov 8, 2003 First alpha release 1.0.A Albert Drent (c) 2003 Aducom Software + Nov 11, Release alpha 1.0.B Albert Drent (c) 2003 Aducom Software + - added 'param' support + - fixed null pointer assignment + - added support for partial select (limit / offset) + Nov 12, Release alpha 1.0.C Albert Drent (c) 2003 Aducom Software + - fixed bug in update + - support for events + - added 'RowsAffected' + Nov 16, Release beta 1.0.D Albert Drent (c) 2003 Aducom Software + - fixed 0 resultlist after any ExecSQL usage + - added Transaction support + Nov 24, Release beta 1.0.E Albert Drent (c) 2003 Aducom Software + - StartTransaction will open database if it is'nt already open + - Changed resultset method + - Added property editor for table names + - Added GetTableNames function to TASQLite3Database + - Added GetIndexNames function to TASQLite3Database + - Added Open and Close function to TASQLite3Database + - Added AutoCommit property to TDataSet descendants + - Split of source in designtime and runtime package + Dec 15, Release beta 1.0.F Albert Drent (c) 2003 Aducom Software + - Optimized code for speed + - Added support for quering databases + - Added property for base directory (default dir) TDatabase + - Preparations for mastersets and TUpdateSQL (not functional yet) + - Solved GPF on stringfields + - Solved hangup of Delphi when developing + - Solved invalid pointer operation bug while developing + Jan 11 2004, Release beta 1.0.G Albert Drent (c) 2003, 2004 Aducom Software + - Fixed GetTableNames Bug as reported on forum + - Solved some minor bugs, several code optimizations + - Added 'getfieldnames' procedure to asqlitedb + - Added component asqlitepragma for adjustments to sqlite behaviour + - Added several property editors to smooth things up + - Added component asqliteupdatesql + - Added master-detail support for TASQLite3table (not fully tested yet) + - Added master-detail support for TASQLite3query (not fully tested yet) + - Added filter property to TASQLite3Query + Jan 18, 2004, Release beta 1.0.H Albert Drent (c) 2003, 2004 Aducom Software + - Added TASQLite3Log component + - Support for autoincrement (index primary key) + Jan 22, 2004, Release beta 1.0.I Albert Drent (c) 2003, 2004 Aducom Software + - Solved bug, causing the user to open database first (where + it should be opened automatically after open query or table. + - datatype text is now treated as a string of max 255 chars. + - added samples + - added preparations for import and export component + Jan 26, 2004, Release beta 1.1.A Albert Drent (c) 2003, 2004 Aducom Software + - Support for master-detail + - Support for TUpdateSQL + Feb 05, 2004, Release beta 1.1.B Albert Drent (c) 2003, 2004 Aducom Software + - Solved small bug: basequery is closed on querychanged event + - Solved small bug: basequery is closed on filter change event + - Solved bug in design package, by Marc Wetzel(forum) + - Notification of BaseQuery removed and added to SQLiteTable + Feb 24, 2004 Release alpha 1.2.A Albert Drent (c) 2003, 2004 Aducom Software + - Locate implemented, working on resultset! + - Some small bugfixes + Feb 25, 2004 Release alpha 1.2.B Albert Drent (c) 2003, 2004 Aducom Software + - Reformat of source (Marc Wetzel) + - All the debug directives (Marc Wetzel) + The debug stuff is added to be able to do more debugging on the + components. At this stage there are still some isues which are + hard to be find. + - Some small bugfixes (Marc Wetzel) + - Solved bug with dblookupcombobox, lookup is now shown (variant error) + - Derived more classes from TDataset to solve compatibility isues with + 3rd party software (DevExpress) + - Start of port to lower Delphi versions (designintf vs dsgnintf) + March 25, 2004 Release alpha 1.2.C Albert Drent (c) 2003, 2004 Aducom Software + - Added property editor for database directory + - Added property editor for sqlitedll directory + - Bugix needed for release 13 of SQLite.dll (is compatible to lower + dll versions) + - More changes to solve compatibility problem with DevExpress (Plato of DevExpress) + - Solved some compatibility isues with TDataSet + - Solved some compatibility isues with the newest SQLite version (2.8.12) + - Added/modified, GetFieldNames, GetPrimaryKeys + - Added GetTableInfo + - Added StartTransaction and Commit and RollBack to TTable and TQuery + This will create a more readable source: + db.starttranaction; + q.somesql + db.commit + becomes now + with q do begin + starttransaction; + somesql; + try + commit; + except + rollback; + end; + end; + - Changed cleanup of components in notification (TheSneak) + - Fixed potential AV (so far not reported) + - Changed escape of string characters (TheSneak) + (might cause incompatibility of older components if you use single + quote in data) + - Fixed question mark problem in data (TheSneak) + April 7, 2004 + - Fixed bug GetxxxxNames, moved pragma (reported by Martini) + - Improved some performance isues (TheSneak) + - Added GetTableIndexNames(by Martini) + - Added support for 'small text blobs', it isn't the real stuff but + limited to 20000 characters. + - Fixed another compatibility isue with DevExpress + April 8, 2004 + - Fixed EnableControls (TheSneak) + - Fixed memoryleak ASQLiteQuery.InternalPost (TheSneak) + - Downgraded some stuff for support Delphi 4/5 + - Updated Locate function (by Joel hottcha@juno.com) + April 14, 2004 Release beta 1.2.C Albert Drent (c) 2003, 2004 Aducom Software + - RawSQL property implemented (supresses parsing of sql data) + - published csv release as 1.2.C beta + April 15, 2004 Release alpha 2.0.A Albert Drent (c) 2003, 2004 Aducom Software + - support for real clobs + - added fieldtype numeric(x.y) + - Implement RawSQL property in TASQLite3Query + May 26, 2004 Release beta 2.0.B Albert Drent (c) 2003, 2004 Aducom Software + - new procedure: GetGetLastInsertRow + - new component: TASQLite3InlineSQL, to be used to contain all + kinds of pre-stored sql statements. I.e. for creation of tables in case + of an in-memory database, or a local storage for sql statements to + simplify sourcecode. In this release it is bound to the ASQLiteDB component. + - new component TASQLite3Output, to be used to generate csv files, + xml and html documents. It is NOT bound to ASQLite components but + to a datasource (containing any database connection) + - implemented bound as described by minhl on the forum + - implemented IsNull as described by Kazooie64 on the forum + - implemented a uniform datetime implementation by jpierce + May, 26, 2004 Release beta 2.0.B Albert Drent (c) 2003, 2004 Aducom Software + - A few bugfixes + June, 15, 2004 Release beta 2.0.C Albert Drent (c) 2003, 2004 Aducom Software + - A few bugfixes, thanks to Tzvetan + July 2004, Release 1.0 based upon source sqlite version 2 components + Okt 11, 2004 Release beta 1.0.B Albert Drent (c) 2003, 2004 Aducom Software + - Callback routine for retieving data replaced by new + by sqlite prefered way. + - Some bugfixes + - Support for calculated fields + - Support for real blobs + okt 14, 2004 Release beta 1.0.C Albert Drent (c) 2003, 2004 Aducom Software + - support for locate lo-partial key (thanks to Bob Mitchel) + - some bugfixes (thanks to Oleg Lembievskiy marked by OL) + - some other bugfixes and code cleanup + okt 18, 2004 + - re-introduced sqlite_version + - added transactiontype property(SQLite3 feature) + - added transaction procedures to db and basequery + StartDeferredTransaction; + StartImmediateTransaction; + StartExclusiveTransaction; + nov 1, 2004 + - bugfix (thanx to James) for null pointer assignment on null values + nov 8, 2004 + - fixed introduced bug in result preventing new records to appear + right in dbgrids. + nov 17, 2004 + - fixed small bug showing rubish on empty tables + Nov 17, 2004 by Mike Dijkema + - filter bug FPrepared := FPrepared + ' and ' + Filter adds ' and filterexpr' to the end of the sql statement + this created errors with 'order by' 'limit' 'union' 'having' etc.. + filtering changed to that it works like the ADO components and union and other statements + now 'select a from b union select c from d' and 'select a from b order by c' works with a filter + - filter bug 'select a_where from b' removed + jan 11, 2005 Release 2005.01.A Albert Drent (c) 2003 .. 2005 Aducom Software + - fixed bug causing fielddescription to be deleted incorrectly + - fixed bug causing errormessage on null values in integer fields + - added sqlcursor property + - modifications to support Delphi 2005 + - implemented all transactiontypes + - changed all showmessages to raise event types + - added readonly property + feb 21, 2005 Release 2005.02.A Albert Drent (c) 2003 .. 2005 Aducom Software + - some bugfixes, code optimization + - first implementation of IProvider support (thanks to + Rocco Barbaresco) + - changed default SDB extension to SQB + - support for multi sql statements in one string + - added master-detail functionality on insert of + new child record (key-data is copied) + - added compatibility with SQLite3.dll version 3.1.2 + feb 28, 2005 Release 2005.02.B Albert Drent (c) 2003 .. 2005 Aducom Software + - bugfix for filter on master-detail. Setting filtered will + not automatical open table any more. Causes error on closed + tables in master-detail otherwise. + mar 7, 2005 Release 2005.03.A Albert Drent (c) 2003 .. 2005 Aducom Software + - bugfix for memofields causing crlf to be handled wrongly + - added TableExists function ('// DI Ralf http://www.yunqa.de/delphi/) + - some code optimizations ('// DI Ralf http://www.yunqa.de/delphi/) + - solved decimalpoint bug ('// DI Ralf http://www.yunqa.de/delphi/) + mar 10, 2005 Release 2005.03.B Albert Drent (c) 2003 .. 2005 Aducom Software + - more code optimizations + - removed Forms from uses list to decrease codesize of console app's + - changed cursorstyle handling + - changed exception handling + mar 29, 2005 Release 2005.03.C Albert Drent (c) 2003 .. 2005 Aducom Software + - removed default pragma's for tables + - implemented another solution for tableheader duplicates (mirko) + - implemented user version + - solved minor bug in GetTableInfo + april 5, 2005 Release 2005.04.A Albert Drent (c) 2003 .. 2005 Aducom Software + - fixed bug conceirning in-memory database (Bert Verhees) + - fixed precompiler settings for Delhpi 7 (Dak) + mai 31, 2005 Release 2005.05.A Albert Drent (c) 2003 .. 2005 Aducom Software + - UTF8 support (thanks to Bilgehan KUYUCU) + - Statical linking (thanks to Gianpaolo Avallone (GPA) + - Some bugfixes and enhancements by Albert, Gianpaolo and others. + august 1, 2005 Release 2005.08.A + - UTF8 support to be set by property, solving a 'locale' problem. + - Bugfix for null strings + - Fix for static linking + - Solved bug in updatesql, fieldlist is now setup correctly + - solved bug in updatesql, inserting null values and constants. + august 2, 2005 Release 2005.08.B + - first steps towards support utf16 (by Kevin Zhang) + - implemented another locate routine (by jbannon) + - changed treatment of datatype text. It is considered 'longtext' now. + added 'shorttext' datatype which replaces the original 'text' datatype. + The datatype text is now compatible with sqlite3, mysql and perhaps + others. + sept 1, 2005 Release 2005.09.A + - code optimizations by Kevin Lu, Aducom + sept 1, 2005 Release 2005.09.B + - candidate fix for decimal point problem by Jordi March + sept 20, 2005 Release 2005.09.C + - implementation of unidirectional dataset. This improves + performance on large resultsets to the optimum. However + the dataset is readonly by default, using inserts/deletes and + updates will result in a 'database table is locked' error. + sept 21, 2005 Release 2005.09.D + - bugfix for decimal point routine by Kevin Lu + sept 29, 2005 Release 2005.09.E + - bugfix for unidirectional dataset. + - bugfix for split of prepare and execute. Data was not updated + correctly + nov 1, 2005 Release 2005.11.A + - Code improvements + - First (alpha) implementation of Lookup field (By John Lito) + dec 14, 2005 Release 2005.12.A + - Check for null values + jan 5, 2006 Release 2006.01.A + - fixed unidirectional bug (I) + jan 9, 2006 Release 2006.01.B + - fixed unidirectional bug (II) + - automatically will close table if tablename property is changed + while a table is still open. + - automatically close query if sql property is changed while a table + is still open. + - fixes for compilation under D4 + - changes for installation under Delphi 2005 and 2006 + - changes of copyright notice, the components are now under + open-source bsd licence. + feb 22, 2006 Release 2006.02.A + - Changed status to stable + mar 2, 2006 Release 2006.03.A + - Modifications for D4/D5 + - Added order by property. Enter fieldnames separated by ',' + - Added GetIndexFieldNames (thanks to zavu10n) + - Database will be reopened if necessary on filter change + - Fixes by Donnie + - New routine for dates and floates by Donnie + mar 8, 2006 Release 2006.03.B + - Fixed small bug causing text treated as char 255, is now memo. + mar 15, 2006 Release 2006.03.C + - Added switch for compilation under D4/D5 (Art Register) + - DBOpen change for utf8 by John Lito + - SQLCursor fix + - GetFieldValue fix by Velis + mar 23, 2006 Release 2006.03.D + - Compatibility fixes for D45 (Art Register) + - changed D45 directive to $IFDEF ASQLITE_D6PLUS so + compilation should work automatically now + - changed cr cr/lf pairs for compatibilty with D4/D5 + - added CompareBookmarks to support multiple selection + in DBGrid (Michael S) + - added support for char *nothing* datatype (was char(1) now char is allowed) + + + +*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } + + +interface + +uses + DB, + DBCommon, + Dialogs, + Classes, + Windows, + SysUtils, +{$IFDEF ASQLITE_D6PLUS} + Variants, +{$ENDIF} + ASGRout3; +const + SQLiteVersion = 'ASGSQLite V2006.03.D stable'; + + MaxBuf = 30000; // max stringbuffer for record (length) (excluding blob's) + SQLITE_OK = 0; // Successful result */ + SQLITE_ERROR = 1; // SQL error or missing database */ + SQLITE_INTERNAL = 2; // An internal logic error in SQLite */ + SQLITE_PERM = 3; // Access permission denied */ + SQLITE_ABORT = 4; // Callback routine requested an abort */ + SQLITE_BUSY = 5; // The database file is locked */ + SQLITE_LOCKED = 6; // A table in the database is locked */ + SQLITE_NOMEM = 7; // A malloc() failed */ + SQLITE_READONLY = 8; // Attempt to write a readonly database */ + SQLITE_INTERRUPT = 9; // Operation terminated by sqlite_interrupt() */ + SQLITE_IOERR = 10; // Some kind of disk I/O error occurred */ + SQLITE_CORRUPT = 11; // The database disk image is malformed */ + SQLITE_NOTFOUND = 12; // (Internal Only) Table or record not found */ + SQLITE_FULL = 13; // Insertion failed because database is full */ + SQLITE_CANTOPEN = 14; // Unable to open the database file */ + SQLITE_PROTOCOL = 15; // Database lock protocol error */ + SQLITE_EMPTY = 16; // (Internal Only) Database table is empty */ + SQLITE_SCHEMA = 17; // The database schema changed */ + SQLITE_TOOBIG = 18; // Too much data for one row of a table */ + SQLITE_CONSTRAINT = 19; // Abort due to contraint violation */ + SQLITE_MISMATCH = 20; // Data type mismatch */ + SQLITE_MISUSE = 21; // Library used incorrectly */ + SQLITE_NOLFS = 22; // Uses OS features not supported on host */ + SQLITE_AUTH = 23; // Authorization denied */ + SQLITE_ROW = 100; // sqlite_step() has another row ready */ + SQLITE_DONE = 101; // sqlite_step() has finished executing */ + + SQLITE_CREATE_INDEX = 1; // Index Name Table Name */ + SQLITE_CREATE_TABLE = 2; // Table Name NULL */ + SQLITE_CREATE_TEMP_INDEX = 3; // Index Name Table Name */ + SQLITE_CREATE_TEMP_TABLE = 4; // Table Name NULL */ + SQLITE_CREATE_TEMP_TRIGGER = 5; // Trigger Name Table Name */ + SQLITE_CREATE_TEMP_VIEW = 6; // View Name NULL */ + SQLITE_CREATE_TRIGGER = 7; // Trigger Name Table Name */ + SQLITE_CREATE_VIEW = 8; // View Name NULL */ + SQLITE_DELETE = 9; // Table Name NULL */ + SQLITE_DROP_INDEX = 10; // Index Name Table Name */ + SQLITE_DROP_TABLE = 11; // Table Name NULL */ + SQLITE_DROP_TEMP_INDEX = 12; // Index Name Table Name */ + SQLITE_DROP_TEMP_TABLE = 13; // Table Name NULL */ + SQLITE_DROP_TEMP_TRIGGER = 14; // Trigger Name Table Name */ + SQLITE_DROP_TEMP_VIEW = 15; // View Name NULL */ + SQLITE_DROP_TRIGGER = 16; // Trigger Name Table Name */ + SQLITE_DROP_VIEW = 17; // View Name NULL */ + SQLITE_INSERT = 18; // Table Name NULL */ + SQLITE_PRAGMA = 19; // Pragma Name 1st arg or NULL */ + SQLITE_READ = 20; // Table Name Column Name */ + SQLITE_SELECT = 21; // NULL NULL */ + SQLITE_TRANSACTION = 22; // NULL NULL */ + SQLITE_UPDATE = 23; // Table Name Column Name */ + SQLITE_ATTACH = 24; // Filename NULL */ + SQLITE_DETACH = 25; // Database Name NULL */ + + SQLITE_DENY = 1; // Abort the SQL statement with an error */ + SQLITE_IGNORE = 2; // Don't allow access, but don't generate an error */ + + Crlf : string = #13#10; + Q = ''''; + +type + pInteger = ^integer; + pPointer = ^Pointer; + pSmallInt = ^smallint; + pFloat = ^extended; + pBoolean = ^boolean; + + + TConvertBuffer = array[1..255] of char; + + TSQLite3_Callback = function(UserData: Pointer; ColumnCount: Integer; ColumnValues, ColumnNames: PPointer): Integer; cdecl; +// TSQLiteExecCallback = function(Sender: TObject; Columns: integer; ColumnValues: Pointer; ColumnNames: Pointer): integer of object; cdecl; + TSQLiteBusyCallback = function(Sender: TObject; ObjectName: PAnsiChar; BusyCount: integer): integer of object; cdecl; + TOnData = procedure(Sender: TObject; Columns: integer; ColumnNames, ColumnValues: string) of object; + TOnBusy = procedure(Sender: TObject; ObjectName: string; BusyCount: integer; var Cancel: boolean) of object; + TOnQueryComplete = procedure(Sender: TObject) of object; + TASQLite3NotifyEvent = procedure(Sender: TObject) of object; + + // structure for holding field information. It is used by GetTableInfo + + TASQLite3Field = class + public + FieldNumber: integer; + FieldName: string; + FieldType: string; + FieldNN: integer; // 1 if notnull + FieldDefault: string; + FieldPK: integer; // 1 if primary key + end; + + // object to 'play' with SQLite's default settings + + TASQLite3Pragma = class(TComponent) + private + FTempCacheSize: integer; + FDefaultCacheSize: integer; + FDefaultSynchronous: string; + FDefaultTempStore: string; + FTempStore: string; + FSynchronous: string; + protected + function GetTempCacheSize: string; + function GetDefaultCacheSize: string; + function GetDefaultSynchronous: string; + function GetDefaultTempStore: string; + function GetTempStore: string; + function GetSynchronous: string; + published + { Published declarations } + property TempCacheSize: integer read FTempCacheSize write FTempCacheSize; + property DefaultCacheSize: integer read FDefaultCacheSize write FDefaultCacheSize; + property DefaultSynchronous: string read FDefaultSynchronous + write FDefaultSynchronous; + property DefaultTempStore: string read FDefaultTempStore write FDefaultTempStore; + property TempStore: string read FTempStore write FTempStore; + property Synchronous: string read FSynchronous write FSynchronous; + end; + + // component to log messages + // it's for debugging purpose and may be obsolete due + // to the event implementation. not sure yet... + + TASQLite3Log = class(TComponent) + private + FLogFile: string; + FLogDebugOut: boolean; + FAppend: boolean; + FLogSQL: boolean; + FLogInt: boolean; + protected + public + procedure Display(Msg: string); + published + { Published declarations } + property LogFile: string read FLogFile write FLogFile; + property LogDebugOut: boolean read FLogDebugOut write FLogDebugOut; // 20040225 + property Append: boolean read FAppend write FAppend; + property LogSQL: boolean read FLogSQL write FLogSQL; + property LogInternals: boolean read FLogInt write FLogInt; + end; + +// This component can be used to store sql outside the pascal source. +// It is useful for automatically creating tables on open of a temporary database +// (i.e. in-memory database) + + TASQLite3InlineSQL = class(TComponent) + private + FSQL: TStrings; + procedure SetSQL(const Value: TStrings); + function GetSQL: TStrings; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property SQL: TStrings read GetSQL write SetSQL; + end; + + { Basic Database component } + + TASQLite3DB = class(TComponent) + private + { Private declarations } + FAfterConnect: TASQLite3NotifyEvent; + FBeforeConnect: TASQLite3NotifyEvent; + FAfterDisconnect: TASQLite3NotifyEvent; + FBeforeDisconnect: TASQLite3NotifyEvent; + function FGetDefaultExt: string; + function FGetDriverDLL: string; + protected + { Protected declarations } + FInlineSQL: TASQLite3InlineSQL; + FExecuteInlineSQL: boolean; + FDatabase: string; + FTransactionType: string; + FSQLiteVersion: string; + FDefaultExt: string; + FDefaultDir: string; + FDriverDll: string; + FConnected: boolean; + FMustExist: boolean; + FVersion: string; + FCharEnc: string; + FUtf8: boolean; + DBHandle: Pointer; + FASQLitePragma: TASQLite3Pragma; + FASQLiteLog: TASQLite3Log; + FLastError: string; + SQLite3_Open: function(dbname: PAnsiChar; var db: pointer): integer; cdecl; + SQLite3_Close: function(db: pointer): integer; cdecl; + SQLite3_Exec: function(DB: Pointer; SQLStatement: PAnsiChar; Callback: TSQLite3_Callback; + UserDate: Pointer; var ErrMsg: PAnsiChar): Integer; cdecl; + SQLite3_LibVersion: function(): PAnsiChar; cdecl; + SQLite3_ErrorString: function(db: pointer): PAnsiChar; cdecl; + SQLite3_GetTable: function(db: Pointer; SQLStatement: PAnsiChar; var ResultPtr: Pointer; + var RowCount: cardinal; var ColCount: cardinal; var ErrMsg: PAnsiChar): integer; cdecl; + SQLite3_FreeTable: procedure(Table: PAnsiChar); cdecl; + SQLite3_FreeMem: procedure(P: PAnsiChar); cdecl; + SQLite3_Complete: function(P: PAnsiChar): boolean; cdecl; + SQLite3_LastInsertRow: function(db: Pointer): integer; cdecl; + SQLite3_Cancel: procedure(db: Pointer); cdecl; + SQLite3_BusyHandler: procedure(db: Pointer; CallbackPtr: Pointer; Sender: TObject); cdecl; + SQLite3_BusyTimeout: procedure(db: Pointer; TimeOut: integer); cdecl; + SQLite3_Changes: function(db: Pointer): integer; cdecl; + SQLite3_Prepare: function(db: Pointer; SQLStatement: PAnsiChar; nBytes: integer; + var hstatement: pointer; var Tail: PAnsiChar): integer; cdecl; + SQLite3_Finalize: function(hstatement: pointer): integer; cdecl; + SQLite3_Reset: function(hstatement: pointer): integer; cdecl; + SQLite3_Step: function(hstatement: pointer): integer; cdecl; + SQLite3_Column_blob: function(hstatement: pointer; iCol: integer): pointer; cdecl; + SQLite3_Column_bytes: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Column_count: function(hstatement: pointer): integer; cdecl; + SQLite3_Column_decltype: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_double: function(hstatement: pointer; iCol: integer): double; cdecl; + SQLite3_Column_int: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Column_int64: function(hstatement: pointer; iCol: integer): int64; cdecl; + SQLite3_Column_name: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_text: function(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; + SQLite3_Column_text16: function(hstatement: pointer; iCol: integer): PWideChar; cdecl; + SQLite3_Column_type: function(hstatement: pointer; iCol: integer): integer; cdecl; + SQLite3_Bind_Blob: function(hstatement: pointer; iCol: integer; buf: PAnsiChar; n: integer; DestroyPtr: Pointer): integer; cdecl; + SQLite3_Bind_Text16: function(hstatement: pointer; iCol: integer; buf: pointer; n: integer; DestroyPtr: Pointer): integer; cdecl;//\\\ + SQLite3_Bind_Parameter_Count: function(hstatement: pointer): integer; cdecl;//\\\ + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure DBConnect(Connected: boolean); + function SQLite3_PrepareResult(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject) : pointer; + function SQLite3_GetNextResult(DB: Pointer; TheStatement: pointer; FParams: TParams; Sender: TObject) : pointer; + procedure SQLite3_CloseResult(TheStatement : pointer); + public + DLLHandle: THandle; + { Public declarations } + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function LoadLibs: boolean; + procedure FSetDatabase(Database: string); + function RowsAffected: integer; + function TableExists(const ATableName: AnsiString): Boolean; + procedure ExecStartTransaction(TransType: string); + procedure StartTransaction; + procedure StartDeferredTransaction; + procedure StartImmediateTransaction; + procedure StartExclusiveTransaction; + procedure Open; + procedure Close; + procedure Commit; + procedure RollBack; + procedure ShowDatabases(List: TStrings); + procedure GetTableNames(List: TStrings; SystemTables: boolean = false); + procedure GetTableInfo(TableName: string; List: TList); + procedure GetIndexNames(List: TStrings; SystemTables: boolean = false); + procedure GetIndexFieldNames(IndexName: string; List: TStrings); + procedure GetFieldNames(TableName: string; List: TStrings); + procedure GetPrimaryKeys(TableName: string; List: TStrings); + procedure GetTableIndexNames(TableName: string; List: TStrings); + procedure ExecPragma; +// function SQLite_XExec(db: Pointer; SQLStatement: PAnsiChar; +// CallbackPtr: Pointer; Sender: TObject; var ErrMsg: PAnsiChar): integer; cdecl; + function SQLite3_Execute(db: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): integer; + function SQLite3_ExecSQL(TheStatement: string; Blobs: TList=nil): integer; + procedure ShowError; + function GetUserVersion(database : string=''): integer; + procedure SetUserVersion(Version : integer; Database : string=''); + published + { Published declarations } + property CharacterEncoding: string read FCharEnc write FCharEnc; + property TransactionType: string read FTransactionType write FTransactionType; + property Database: string read FDatabase write FSetDatabase; + property ASQLitePragma: TASQLite3Pragma read FASQLitePragma write FASQLitePragma; + property ASQLiteLog: TASQLite3Log read FASQLiteLog write FASQLiteLog; + property DefaultExt: string read FGetDefaultExt write FDefaultExt; + property DefaultDir: string read FDefaultDir write FDefaultDir; + property Version: string read FVersion write FVersion; +// property CharacterEncoding: string Read FCharEncoding Write FCharEncoding; + property DriverDLL: string read FGetDriverDLL write FDriverDLL; + property Connected: boolean read FConnected write DBConnect; + property MustExist: boolean read FMustExist write FMustExist; + property ASQLiteInlineSQL: TASQLite3InlineSQL read FInlineSQL write FInlineSQL; + property ExecuteInlineSQL: boolean read FExecuteInlineSQL write FExecuteInlineSQL; + property AfterConnect: TASQLite3NotifyEvent read FAfterConnect write FAfterConnect; + property BeforeConnect: TASQLite3NotifyEvent read FBeforeConnect write FBeforeConnect; + property AfterDisconnect: TASQLite3NotifyEvent + read FAfterDisconnect write FAfterDisconnect; + property BeforeDisconnect: TASQLite3NotifyEvent + read FBeforeDisconnect write FBeforeDisconnect; + end; + + AsgError = class(Exception); + +{ TRecInfo } + +{ This structure is used to access additional information stored in + each record buffer which follows the actual record data. + + Buffer: PAnsiChar; + || + \/ + -------------------------------------------- + | Record Data | Bookmark | Bookmark Flag | + -------------------------------------------- + ^-- PRecInfo = Buffer + FRecInfoOfs + + Keep in mind that this is just an example of how the record buffer + can be used to store additional information besides the actual record + data. There is no requirement that TDataSet implementations do it this + way. + + For the purposes of this demo, the bookmark format used is just an integer + value. For an actual implementation the bookmark would most likely be + a native bookmark type (as with BDE), or a fabricated bookmark for + data providers which do not natively support bookmarks (this might be + a variant array of key values for instance). + + The BookmarkFlag is used to determine if the record buffer contains a + valid bookmark and has special values for when the dataset is positioned + on the "cracks" at BOF and EOF. } + + PRecInfo = ^TRecInfo; + + TRecInfo = packed record + Bookmark : integer; + BookmarkFlag : TBookmarkFlag; +// Nulls : + end; + + //============================================================================== TFResult + // The TFResult class is used to maintain the resultlist in memory. This + // will only be the case for 'normal' data. Blobs and Clobs will be treated + // differently, but they are not supported yet. + //============================================================================== + TASQLite3BaseQuery = class; + + TFResult = class + protected + Data: TList; + BookMark: TList; + RowId: TList; + FLastBookmark: integer; + FBufSize: integer; + FDataSet: TASQLite3BaseQuery; + public + constructor Create(TheDataSet: TASQLite3BaseQuery); + destructor Destroy; override; + procedure FreeBlobs; + procedure SetBufSize(TheSize: integer); + procedure Add(TheBuffer: PAnsiChar; TheRowId: integer); + procedure Insert(Index: integer; TheBuffer: Pointer; TheRowId: integer); + procedure Delete(Index: integer); + function GetData(Index: integer): Pointer; + function Count: integer; + function IndexOf(TheBookMark: pointer): integer; + function GetBookmark(Index: integer): integer; + function GetRowId(Index: integer): integer; + end; + +//============================================================================== TASQLite3UpdateSQL + TASQLite3UpdateSQL = class(TComponent) + private + FInsertSQL: TStrings; + FUpdateSQL: TStrings; + FDeleteSQL: TStrings; + procedure SetInsertSQL(const Value: TStrings); + procedure SetUpdateSQL(const Value: TStrings); + procedure SetDeleteSQL(const Value: TStrings); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property InsertSQL: TStrings read FInsertSQL write SetInsertSQL; + property UpdateSQL: TStrings read FUpdateSQL write SetUpdateSQL; + property DeleteSQL: TStrings read FDeleteSQL write SetDeleteSQL; + end; + +//============================================================================== TASQLite3Output + + TASQLite3Output = class(TComponent) + private + FActive: boolean; + FOutputType: string; + FTableClass: string; + FHeaderClass: string; + FCellClass: string; + FOutput: TStrings; + FSeparator: string; + FDataSource: TDataSource; + procedure SetOutput(const Value: TStrings); + procedure SetFActive(Active: boolean); + function GetOutput: TStrings; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Execute(MyDataSet: TDataSet); + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + published + property Active: boolean read FActive write SetFActive; + property DataSource: TDataSource read FDataSource write FDataSource; + property OutputType: string read FOutputType write FOutputType; + property TableClass: string read FTableClass write FTableClass; + property HeaderClass: string read FHeaderClass write FHeaderClass; + property CellClass: string read FCellClass write FCellClass; + property Output: TStrings read GetOutput write SetOutput; + property FieldSeparator: string read FSeparator write FSeparator; + end; + +//============================================================================== TASQLite3BaseQuery + TASQLite3BaseQuery = class(TDataSet) + private + FParams: TParams; + FTypeLess: boolean; + FNoResults: boolean; // suppresses the creation of a result list + FAutoCommit: boolean; + FTransactionType: string; + FTableDateFormat: string; + FSQLiteDateFormat: boolean; + FResult: TFResult; + FSQL: TStrings; + FSQLCursor: boolean; + FPrepared: string; + FRecBufSize: integer; + FRecInfoOfs: integer; + FCurRec: integer; + FMasterFields: string; + FMasterSource: TDataSource; + FSaveChanges: boolean; + MaxStrLen: integer; + FConnection: TASQLite3DB; + FReadOnly: boolean; + FMaxResults: integer; + FStartResult: integer; + FUniDir : boolean; + FStatement : pointer; + CurrentRowId: integer; + SQLStr: string; + ResultStr: PAnsiChar; + RowId : integer; + RowIdCol : integer; + DetailList: TList; + procedure SetSQL(const Value: TStrings); + function UnpackBuffer(Buffer: PAnsiChar; FieldType: TFieldType): TConvertBuffer; + procedure SetDataSource(Value: TDataSource); + protected + function SetQueryParams(InStr: string): string; //*** + procedure SetParamsList(Value: TParams); + function GetParamsCount: word; + procedure RegisterDetailDataset(DetailDataSet: TASQLite3BaseQuery); + procedure LoadQueryData; + function GetActiveBuffer(var Buffer: PAnsiChar): boolean; + function GetDataSource: TDataSource; override; + procedure NotifySQLiteMasterChanged; + function GetFieldValue(const AField: TField; const Blobs: TList = nil): string; // added by Donnie + + { Overriden abstract methods (required) } + function AllocRecordBuffer: PAnsiChar; override; + procedure FreeRecordBuffer(var Buffer: PAnsiChar); override; + procedure GetBookmarkData(Buffer: PAnsiChar; Data: Pointer); override; + function GetBookmarkFlag(Buffer: PAnsiChar): TBookmarkFlag; override; + function GetRecord(Buffer: PAnsiChar; GetMode: TGetMode; + DoCheck: boolean): TGetResult; override; + function GetRecordSize: word; override; + procedure InternalAddRecord(Buffer: Pointer; Append: boolean); override; + procedure InternalClose; override; + procedure InternalDelete; override; + procedure InternalFirst; override; + procedure InternalGotoBookmark(Bookmark: Pointer); override; + procedure InternalHandleException; override; + procedure InternalInitFieldDefs; override; + procedure InternalInitRecord(Buffer: PAnsiChar); override; + procedure InternalLast; override; + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalSetToRecord(Buffer: PAnsiChar); override; + procedure OpenCursor(InfoQuery: Boolean); override; // GPA + function IsCursorOpen: boolean; override; + procedure SetBookmarkFlag(Buffer: PAnsiChar; Value: TBookmarkFlag); override; + procedure SetBookmarkData(Buffer: PAnsiChar; Data: Pointer); override; + procedure SetFieldData(Field: TField; Buffer: Pointer); override; + function GetFieldSize(FieldNo: integer): integer; overload; + function GetFieldSize(Field: TField): integer; overload; + function GetNativeFieldSize(FieldNo: integer): integer; + function GetFieldOffset(FieldNo: integer): integer; + function GetCalcFieldOffset(Field: TField): integer; + function GetMasterFields: string; + procedure SetMasterFields(const Value: string); + { Additional overrides (optional) } + function GetRecordCount: integer; override; + function GetRecNo: integer; override; + procedure SetRecNo(Value: integer); override; + property BaseSQL: TStrings read FSQL write SetSQL; + procedure SetSQLiteDateFormat(const Value: boolean); + procedure SetFilterText(const Value: string); override; + procedure DataConvert(Field: TField; Source, Dest: Pointer; ToNative: Boolean); override;//\\\ + function CalcFieldInList(const List: string): Boolean; // John Lito + + {$IFDEF IPROVIDER} + {***** IProviderSupport - Begin *****} + //-----| These are not necessary until the moment! + // procedure PSGetAttributes(List: TList); virtual; + // function PSGetDefaultOrder: TIndexDef; virtual; + // function PSGetIndexDefs(IndexTypes: TIndexOptions): TIndexDefs; virtual; + //-----| These are necessary to support IProvider + procedure PSEndTransaction(Commit: Boolean); override; + procedure PSExecute; override; + function PSExecuteStatement(const ASQL: string; AParams: TParams; ResultSet: Pointer = nil): Integer; override; + function PSGetParams: TParams; override; + function PSGetTableName: string; override; + function PSGetUpdateException(E: Exception; Prev: EUpdateError): EUpdateError; override; + function PSInTransaction: Boolean; override; + function PSIsSQLBased: Boolean; override; + function PSIsSQLSupported: Boolean; override; + procedure PSReset; override; + procedure PSSetCommandText(const CommandText: string); override; + procedure PSSetParams(AParams: TParams); override; + procedure PSStartTransaction; override; + function PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet): Boolean; override; + function PSGetQuoteChar: string; override; + function PSGetKeyFields: string; override; + {***** IProviderSupport - End *****} + {$ENDIF} + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure ExecSQL; + procedure StartTransaction; + procedure StartDeferredTransaction; + procedure StartImmediateTransaction; + procedure StartExclusiveTransaction; + procedure Commit; + procedure RollBack; + procedure SetFiltered(Value: Boolean); override; + procedure SQLiteMasterChanged; virtual; + function GetFieldData(Field: TField; Buffer: Pointer): boolean; override; + function GetFieldData(FieldNo: integer; Buffer: Pointer): boolean; override; // 20040225 + function GetLastInsertRow: integer; +{$IFDEF ASQLITE_D6PLUS} +// function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: boolean): boolean; override; +{$ENDIF} + + function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; override; //MS + function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override; + function Locate(const KeyFields: string; const KeyValues: variant; Options: TLocateOptions): boolean; override; + function BookmarkValid(Bookmark: Pointer): boolean; override; +// function LocateNearest(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; + property Params: TParams read FParams write SetParamsList stored false; + function Lookup(const KeyFields: string; const KeyValues: Variant; // John Lito + const ResultFields: string): Variant; override; // John Lito + published + property AutoCommit: boolean read FAutoCommit write FAutoCommit default true; + property TransactionType: string read FTransactionType write FTransactionType; + property SQLiteDateFormat: boolean read FSQLiteDateFormat write SetSQLiteDateFormat; + property TableDateFormat: string read FTableDateFormat write FTableDateFormat; + property Connection: TASQLite3DB read FConnection write FConnection; + property MaxResults: integer read FMaxResults write FMaxResults; + property StartResult: integer read FStartResult write FStartResult; + property TypeLess: boolean read FTypeLess write FTypeLess; + property MasterFields: string read GetMasterFields write SetMasterFields; + property MasterSource: TDataSource read GetDataSource write SetDataSource; + property SQLCursor: boolean read FSQLCursor write FSQLCursor; + property ReadOnly: boolean read FreadOnly write FReadOnly; + property UniDirectional : boolean read FUniDir write FUniDir; + property AutoCalcFields; + property Filter; + property Filtered; + property Active; + property BeforeOpen; + property AfterOpen; + property BeforeClose; + property AfterClose; + property BeforeInsert; + property AfterInsert; + property BeforeEdit; + property AfterEdit; + property BeforePost; + property AfterPost; + property BeforeCancel; + property AfterCancel; + property BeforeDelete; + property AfterDelete; + property BeforeScroll; + property AfterScroll; +{$IFDEF ASQLITE_D6PLUS} + property BeforeRefresh; + property AfterRefresh; +{$ENDIF} + property OnCalcFields; + property OnDeleteError; + property OnEditError; + property OnNewRecord; + property OnPostError; + end; +//============================================================================== TASQLite3Query + + TASQLite3Query = class(TASQLite3BaseQuery) + private + FUpdateSQL: TASQLite3UpdateSQL; + FRawSQL: boolean; + procedure SetSQL(const Value: TStrings); + function GetSQL: TStrings; + procedure QueryChanged(Sender: TObject); + protected + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalDelete; override; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure InternalClose; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; +// property Params: TParams Read FParams Write SetParamsList Stored false; + procedure SQLiteMasterChanged; override; + published + property RawSQL: boolean read FRawSQL write FRawSQL; + property SQL: TStrings read GetSQL write SetSQL; + property UpdateSQL: TASQLite3UpdateSQL read FUpdateSQL write FUpdateSQL; + end; + +//============================================================================== TASQLite3Table + + TASQLite3Table = class(TASQLite3BaseQuery) + private + FTableName: string; + FOrderBy : string; + FPrimaryAutoInc: boolean; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure InternalOpen; override; + procedure InternalPost; override; + procedure InternalDelete; override; + procedure SetFTableName(TableName : string); + procedure SetFOrderBy(OrderBy : string); + public + procedure SQLiteMasterChanged; override; + published + property TableName: string read FTableName write SetFTableName; + property PrimaryAutoInc: boolean read FPrimaryAutoInc write FPrimaryAutoInc; + property OrderBy : string read FOrderBy write SetFOrderBy; + end; + + //============================================================================== TASQLite3BlobStream + + TASQLite3BlobStream = class(TMemoryStream) + private + FField: TBlobField; + FDataSet: TASQLite3BaseQuery; + FMode: TBlobStreamMode; + FModified: Boolean; + FOpened: Boolean; + procedure LoadBlobData; + procedure SaveBlobData; + public + constructor Create(Field: TBlobField; Mode: TBlobStreamMode); + destructor Destroy; override; + function Read(var Buffer; Count: Longint): Longint; override; + function Write(const Buffer; Count: Longint): Longint; override; + end; + + +implementation + +uses + Math +{$IFDEF ASQLITE_D6PLUS} + , StrUtils +{$endif} + ; + +// GPA - Static Link Start +{$IFDEF SQLite_Static} +Var + __HandlerPtr:Pointer; + + {$L 'OBJ\sqlite3.obj'} + {$L 'OBJ\files.obj'} + {$L 'OBJ\strlen.obj'} + {$L 'OBJ\assert.obj'} + {$L 'OBJ\memcmp.obj'} + {$L 'OBJ\memcpy.obj'} + {$L 'OBJ\memset.obj'} + {$L 'OBJ\strcmp.obj'} + {$L 'OBJ\strcpy.obj'} + {$L 'OBJ\strcat.obj'} + {$L 'OBJ\strncmp.obj'} + {$L 'OBJ\strncpy.obj'} + {$L 'OBJ\strncat.obj'} + {$L 'OBJ\sprintf.obj'} + {$L 'OBJ\fprintf.obj'} + {$L 'OBJ\_ll.obj'} + {$L 'OBJ\ltoupper.obj'} + {$L 'OBJ\ltolower.obj'} + {$L 'OBJ\atol.obj'} + {$L 'OBJ\ftol.obj'} + {$L 'OBJ\longtoa.obj'} + {$L 'OBJ\hrdir_r.obj'} + {$L 'OBJ\gmtime.obj'} + {$L 'OBJ\tzdata.obj'} + {$L 'OBJ\initcvt.obj'} + {$L 'OBJ\streams.obj'} + {$L 'OBJ\scantod.obj'} + {$L 'OBJ\scanwtod.obj'} + {$L 'OBJ\allocbuf.obj'} + {$L 'OBJ\bigctype.obj'} + {$L 'OBJ\clocale.obj'} + {$L 'OBJ\clower.obj'} + {$L 'OBJ\cupper.obj'} + {$L 'OBJ\fflush.obj'} + {$L 'OBJ\fputn.obj'} + {$L 'OBJ\hrdir_s.obj'} + {$L 'OBJ\mbisspc.obj'} + {$L 'OBJ\mbsrchr.obj'} + {$L 'OBJ\realcvt.obj'} + {$L 'OBJ\realcvtw.obj'} + {$L 'OBJ\timefunc.obj'} + {$L 'OBJ\vprinter.obj'} + {$L 'OBJ\hugeval.obj'} + {$L 'OBJ\cvtfak.obj'} + {$L 'OBJ\getinfo.obj'} + {$L 'OBJ\qmul10.obj'} + {$L 'OBJ\fuildq.obj'} + {$L 'OBJ\_pow10.obj'} + {$L 'OBJ\ldtrunc.obj'} + {$L 'OBJ\cvtfakw.obj'} + {$L 'OBJ\wis.obj'} + {$L 'OBJ\xfflush.obj'} + {$L 'OBJ\flushout.obj'} + {$L 'OBJ\lputc.obj'} + {$L 'OBJ\hrdir_b.obj'} + {$L 'OBJ\realloc.obj'} + {$L 'OBJ\mbctype.obj'} + {$L 'OBJ\xcvt.obj'} + {$L 'OBJ\xcvtw.obj'} + {$L 'OBJ\wcscpy.obj'} + {$L 'OBJ\errno.obj'} + {$L 'OBJ\ctrl87.obj'} + {$L 'OBJ\timedata.obj'} + {$L 'OBJ\int64toa.obj'} + {$L 'OBJ\cvtentry.obj'} + {$L 'OBJ\mbyte1.obj'} + {$L 'OBJ\errormsg.obj'} + {$L 'OBJ\exit.obj'} + {$L 'OBJ\iswctype.obj'} + {$L 'OBJ\heap.obj'} + {$L 'OBJ\memmove.obj'} + {$L 'OBJ\fxam.obj'} + {$L 'OBJ\fuistq.obj'} + {$L 'OBJ\qdiv10.obj'} + {$L 'OBJ\wmemset.obj'} + {$L 'OBJ\wcslen.obj'} + {$L 'OBJ\_tzset.obj'} + {$L 'OBJ\deflt87.obj'} + {$L 'OBJ\mbschr.obj'} + {$L 'OBJ\mbsrchr.obj'} + {$L 'OBJ\ermsghlp.obj'} + {$L 'OBJ\patexit.obj'} + {$L 'OBJ\initexit.obj'} + {$L 'OBJ\virtmem.obj'} + {$L 'OBJ\tzset.obj'} + {$L 'OBJ\mbisdgt.obj'} + {$L 'OBJ\mbsnbcpy.obj'} + {$L 'OBJ\platform.obj'} + {$L 'OBJ\getenv.obj'} + {$L 'OBJ\mbisalp.obj'} + {$L 'OBJ\abort.obj'} + {$L 'OBJ\signal.obj'} + {$L 'OBJ\clear87.obj'} + {$L 'OBJ\abort.obj'} + {$L 'OBJ\handles.obj'} + {$L 'OBJ\_cfinfo.obj'} + {$L 'OBJ\__isatty.obj'} + {$L 'OBJ\perror.obj'} + {$L 'OBJ\fputs.obj'} + {$L 'OBJ\files2.obj'} + {$L 'OBJ\ioerror.obj'} + {$L 'OBJ\__write.obj'} + {$L 'OBJ\_write.obj'} + {$L 'OBJ\__lseek.obj'} + {$L 'OBJ\ioerror.obj'} + {$L 'OBJ\setenvp.obj'} + {$L 'OBJ\calloc.obj'} + {$L 'OBJ\mbsnbcmp.obj'} + {$L 'OBJ\mbsnbicm.obj'} + {$L 'OBJ\is.obj'} + {$L 'OBJ\isctype.obj'} + {$L 'OBJ\bigctype.obj'} + {$L 'OBJ\globals.obj'} + {$L 'OBJ\hrdir_mf.obj'} + {$L 'OBJ\fpreset.obj'} + {$L 'OBJ\ta.obj'} + {$L 'OBJ\setexc.obj'} + {$L 'OBJ\defhandl.obj'} + + function _wsprintfA:integer; external 'user32.dll' name 'wsprintfA'; + procedure RtlUnwind; external 'NtDll.dll' name 'RtlUnwind'; + + function _sqlite3_open(dbname: PAnsiChar; var db: pointer): integer; cdecl; external; + function _sqlite3_close(db: pointer): integer; cdecl; external; + function _sqlite3_exec(DB: Pointer; SQLStatement: PAnsiChar; Callback: TSQLite3_Callback; + UserDate: Pointer; var ErrMsg: PAnsiChar): Integer; cdecl; external; + function _sqlite3_libversion: PAnsiChar; cdecl; external; + function _sqlite3_errmsg(db: pointer): PAnsiChar; cdecl; external; + function _sqlite3_get_table(db: Pointer; SQLStatement: PAnsiChar; var ResultPtr: Pointer; + var RowCount: cardinal; var ColCount: cardinal; var ErrMsg: PAnsiChar): integer; cdecl; external; + procedure _sqlite3_free_table(Table: PAnsiChar); cdecl; external; + procedure _sqlite3_free(P: PAnsiChar); cdecl; external; + function _sqlite3_complete(P: PAnsiChar): boolean; cdecl; external; + function _sqlite3_last_insert_rowid(db: Pointer): integer; cdecl; external; + procedure _sqlite3_interrupt(db: Pointer); cdecl; external; + procedure _sqlite3_busy_handler(db: Pointer; CallbackPtr: Pointer; Sender: TObject); cdecl; external; + procedure _sqlite3_busy_timeout(db: Pointer; TimeOut: integer); cdecl; external; + function _sqlite3_changes(db: Pointer): integer; cdecl; external; + function _sqlite3_prepare(db: Pointer; SQLStatement: PAnsiChar; nBytes: integer; + var hstatement: pointer; var Tail: PAnsiChar): integer; cdecl; external; + function _sqlite3_finalize(hstatement: pointer): integer; cdecl; external; + function _sqlite3_reset(hstatement: pointer): integer; cdecl; external; + function _sqlite3_step(hstatement: pointer): integer; cdecl; external; + function _sqlite3_column_blob(hstatement: pointer; iCol: integer): pointer; cdecl; external; + function _sqlite3_column_bytes(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_column_count(hstatement: pointer): integer; cdecl; external; + function _sqlite3_column_decltype(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_double(hstatement: pointer; iCol: integer): double; cdecl; external; + function _sqlite3_column_int(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_column_int64(hstatement: pointer; iCol: integer): int64; cdecl; external; + function _sqlite3_column_name(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_text(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external; + function _sqlite3_column_type(hstatement: pointer; iCol: integer): integer; cdecl; external; + function _sqlite3_bind_blob(hstatement: pointer; iCol: integer; buf: PAnsiChar; n: integer; DestroyPtr: Pointer): integer; cdecl; external; + +{$ENDIF} +// GPA - Static Link End + + +{$IFDEF DEBUG_ENABLED} +var + DebugSpaces : Integer = 0; +{$ENDIF} + +{$IFNDEF ASQLITE_D6PLUS} //Art Register - Function sign not provided in Delphi 5 +function Sign(I: Integer) : Integer ; +begin + if (I > 0) then + Result := 1 + else + begin + if (I < 0) then + Result := -1 + else + Result := 0; + end; +end; +{$ENDIF} + +procedure Debug(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + S)); +{$ENDIF} +end; + +procedure DebugEnter(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + 'Enter ' + S)); + inc(DebugSpaces); +{$ENDIF} +end; + +procedure DebugLeave(const S: string); +begin +{$IFDEF DEBUG_ENABLED} + dec(DebugSpaces); + OutputDebugString(PAnsiChar(StringOfChar(' ', DebugSpaces) + 'Leave ' + S)); +{$ENDIF} +end; + +//============================================================================== +// SyntaxCheck. This routine is used to check if words match the sql syntax +// It is called where sql statements are parsed and generated +//============================================================================== + +function SyntaxCheck(LWord, RWord: string): boolean; +begin + DebugEnter('SyntaxCheck'); + try + if CompareText(LWord, RWord) <> 0 then begin + SyntaxCheck := false; + raise AsgError.Create('SQL macro syntax error on sql, expected ' + RWord) + end else + SyntaxCheck := true; + finally + DebugLeave('SyntaxCheck'); + end; +end; + +//============================================================================== +// Parse the SQL fielddescription and return the Delphi Field types, length etc. +//============================================================================== + +procedure GetFieldInfo(FieldInfo: string; var FieldType: TFieldType; + var FieldLen, FieldDec: integer); +var + p1, p2, pn : integer; + vt : string; +begin + DebugEnter('GetFieldInfo'); + FieldType := ftString; // just a default; + FieldLen := 255; + FieldDec := 0; + + p1 := pos('(', FieldInfo); + if p1 <> 0 then + begin + p2 := pos(')', FieldInfo); + if p2 <> 0 then + begin + vt := LowerCase(Copy(FieldInfo, 1, p1 - 1)); + if (vt = 'varchar') or (vt = 'char') or (vt = 'varchar2') then begin + FieldType := ftString; + FieldLen := StrToInt(Copy(FieldInfo, p1 + 1, p2 - p1 - 1)); + end else if (vt = 'nvarchar') or (vt = 'nchar') or (vt = 'nvarchar2') then begin + FieldType := ftWideString; + FieldLen := StrToInt(Copy(FieldInfo, p1 + 1, p2 - p1 - 1)) * 2; + end else if (vt = 'numeric') then begin + vt := Copy(FieldInfo, p1 + 1, p2 - p1 - 1); + pn := pos('.', vt); if pn = 0 then pn := pos(',', vt); + FieldType := ftFloat; + if pn = 0 then begin + FieldLen := StrToInt(vt); + FieldDec := 0; + end else begin + FieldLen := StrToInt(Copy(vt, 1, pn - 1)); + FieldDec := StrToInt(Copy(vt, pn + 1, 2)); + end; + end; + end + else + FieldLen := 256; + end + else + begin + vt := LowerCase(FieldInfo); + if vt = 'date' then + begin + FieldType := ftDate; + FieldLen := 10; + end + else if vt = 'datetime' then + begin + FieldType := ftDateTime; // fpierce original ftDate + FieldLen := 24; // aducom + end + else if vt = 'time' then + begin + FieldType := ftTime; + FieldLen := 12; + end +{$IFDEF ASQLITE_D6PLUS} + else if vt = 'timestamp' then + begin + FieldType := ftTimeStamp; + FieldLen := 12; + end +{$ENDIF} + else if (vt = 'integer') or (vt = 'int') then + begin + FieldType := ftInteger; + FieldLen := 12; + end + else if (vt = 'float') or (vt = 'real') then + begin + FieldType := ftFloat; + FieldLen := 12; + end + else if (vt = 'boolean') or (vt = 'logical') then + begin + FieldType := ftBoolean; + FieldLen := 2; + end + else if (vt = 'char') or (vt = 'byte') then + begin + FieldType := ftString; + FieldLen := 1; + end + else if (vt = 'shorttext') or (vt = 'string') then + begin + FieldType := ftString; + FieldLen := 255; + end + else if (vt = 'widetext') or (vt = 'widestring') then + begin + FieldType := ftWideString; + FieldLen := 512; + end + else if (vt = 'currency') or (vt = 'financial') or (vt = 'money') then + begin + FieldType := ftCurrency; + FieldLen := 10; + end + else if (vt = 'blob') then + begin + FieldType := ftBlob; + FieldLen := SizeOf(Pointer); + end + else if (vt = 'graphic') then + begin + FieldType := ftGraphic; + FieldLen := SizeOf(Pointer); + end + else if (vt = 'clob') or (vt = 'memo') or (vt = 'text') or (vt = 'longtext') then + begin + FieldType := ftMemo; + FieldLen := SizeOf(Pointer); + end; + end; + DebugLeave('GetFieldInfo: ' + vt); +end; + + //============================================================================== + // Convert TDateTime to TDateTimeRec + //============================================================================== + +function DateTimeToNative(DataType: TFieldType; Data: TDateTime): TDateTimeRec; +var + TimeStamp : TTimeStamp; +begin + DebugEnter('DateTimeToNative'); + TimeStamp := DateTimeToTimeStamp(Data); + case DataType of + ftDate: Result.Date := TimeStamp.Date; + ftTime: Result.Time := TimeStamp.Time; + else + Result.DateTime := TimeStampToMSecs(TimeStamp); + end; + DebugLeave('DateTimeToNative'); +end; + +procedure ApplicationHandleException(Sender: TObject); +begin +{$IFDEF ASQLITE_D6PLUS} + if Assigned(Classes.ApplicationHandleException) then + Classes.ApplicationHandleException(Sender); +{$ENDIF} +end; + +//============================================================================== TASQLite3LOG + +procedure TASQLite3Log.Display(Msg: string); +var + fn : Textfile; +begin + DebugEnter('TASQLite3Log.Display'); + if FileExists(FLogFile) then + begin + if FAppend then + begin + AssignFile(fn, FLogFile); + System.Append(fn); + end + else + begin + SysUtils.DeleteFile(FLogFile); + AssignFile(fn, FLogFile); + Rewrite(fn); + end; + end + else + begin + AssignFile(fn, FLogFile); + Rewrite(fn); + end; + Writeln(fn, FormatDateTime('yyyy mmm dd (hh:nn:ss) ', now) + Msg); + CloseFile(fn); + DebugLeave('TASQLite3Log.Display'); +end; + +//============================================================================== TASQLite3PRAGMA + +function TASQLite3Pragma.GetTempCacheSize: string; +begin + DebugEnter('TASQLite3Pragma.GetTempCacheSize'); + GetTempCacheSize := 'pragma cache_size=' + IntToStr(FTempCacheSize); + DebugLeave('TASQLite3Pragma.GetTempCacheSize'); +end; + +function TASQLite3Pragma.GetDefaultCacheSize: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultCacheSize'); + GetDefaultCacheSize := 'pragma default_cache_size=' + IntToStr(FDefaultCacheSize); + DebugLeave('TASQLite3Pragma.GetDefaultCacheSize'); +end; + +function TASQLite3Pragma.GetDefaultSynchronous: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultSynchronous'); + GetDefaultSynchronous := 'pragma default_synchronous=' + FDefaultSynchronous; + DebugLeave('TASQLite3Pragma.GetDefaultSynchronous'); +end; + +function TASQLite3Pragma.GetDefaultTempStore: string; +begin + DebugEnter('TASQLite3Pragma.GetDefaultTempStore'); + GetDefaultTempStore := 'pragma default_temp_store=' + FDefaultTempStore; + DebugLeave('TASQLite3Pragma.GetDefaultTempStore'); +end; + +function TASQLite3Pragma.GetTempStore: string; +begin + DebugEnter('TASQLite3Pragma.GetTempStore'); + GetTempStore := 'pragma temp_store=' + FTempStore; + DebugLeave('TASQLite3Pragma.GetTempStore'); +end; + +function TASQLite3Pragma.GetSynchronous: string; +begin + DebugEnter('TASQLite3Pragma.GetSynchronous'); + GetSynchronous := 'pragma synchronous=' + FSynchronous; + DebugLeave('TASQLite3Pragma.GetSynchronous'); +end; + + //============================================================================== TFRESULT + // TResult is a representation of an internal pointerlist of results. + // Only 'normal' results will be stored internally within a fixed memory block + // depending on calculated length internally. This is not the case + // for blobs and clobs. In this case only the handle is stored in the fixed + // structure and a separate memory handle is retrieved to store the blob and + // clob data. This is because the blobs are stored as null terminated 'strings' + // and thus have different lengths. No more memory is allocated this way than + // strictly necessary. + // KEEP IN MIND: ... + // This resultset is NOT used for unidirectional search results. You can + // however, open a dbgrid containing griddata. You cannot update your data + // if you use the unidirectional the result is read-only by default and cannot + // be changed. + // The unidirectional dataset improves performance on large resultsets and + // is to be considered for query-only components... + //============================================================================== + +constructor TFResult.Create(TheDataSet: TASQLite3BaseQuery); +begin + DebugEnter('TFResult.Create'); + Data := TList.Create; + Bookmark := TList.Create; + RowId := TList.Create; + FDataSet := TheDataset; + FLastBookmark := -1; // 2004-14-09 (rps) 0 -> -1 (otherwise insert in an empty table gives index out of range) + DebugLeave('TFResult.Create'); +end; + +destructor TFResult.Destroy; +var + ptr : Pointer; + i : integer; +begin + DebugEnter('TFResult.Destroy'); + FreeBlobs; + if Assigned(Data) then begin + for i := 0 to Data.Count - 1 do begin + ptr := Data.Items[i]; + if Assigned(ptr) then FreeMem(ptr, FBufSize); + end; + Data.Free; // D4 compatibility, otherwise FreeAndNil could be used + Data := nil; + end; + + if Assigned(Bookmark) then begin + Bookmark.Free; + Bookmark := nil; + end; + + if Assigned(RowId) then begin + RowId.Free; + RowId := nil; + end; + + DebugLeave('TFResult.Destroy'); +end; + +procedure TFResult.FreeBlobs; +var i, j : integer; + offset : integer; + ptr : PAnsiChar; + stream : TMemoryStream; +begin + if not Assigned(FDataSet) then exit; + if not Assigned(FDataSet.FieldList) then exit; + for j := 0 to Data.Count - 1 do begin + ptr := GetData(j); + for i := 0 to FDataSet.FieldList.Count - 1 do begin + if FDataSet.FieldList[i].DataType in [ftMemo, ftFmtMemo, ftGraphic, ftBlob] then begin + Offset := FDataset.GetFieldOffset(FDataSet.FieldList[i].FieldNo); + Move((ptr + Offset)^, Pointer(Stream), sizeof(Pointer)); + Stream.Free; + end; + end; + end; +end; + +procedure TFResult.SetBufSize(TheSize: integer); +begin + DebugEnter('TFResult.SetBufSize'); + FBufSize := TheSize; + DebugLeave('TFResult.SetBufSize'); +end; + +//============================================================================== +// Adds a row of data to the resultset. +//============================================================================== + +procedure TFResult.Add(TheBuffer: PAnsiChar; TheRowId: integer); +var + ptr : PAnsiChar; +// i: integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TFResult.Add'); +{$ENDIF} + Inc(FLastBookmark); + GetMem(Ptr, FBufSize); + move(TheBuffer^, ptr^, FBufSize); + Data.Add(Ptr); + Bookmark.Add(Pointer(FLastBookMark)); + if TheRowId >= 0 then + RowId.Add(Pointer(TheRowId)) + else + RowId.Add(Pointer(RowId.Count)); +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TFResult.Add'); +{$ENDIF} +end; + +//============================================================================== +// Inserts a row of date into the resultset +//============================================================================== + +procedure TFResult.Insert(Index: integer; TheBuffer: pointer; TheRowId: integer); +var + ptr : Pointer; +begin + DebugEnter('TFResult.Insert'); + Inc(FLastBookmark); + GetMem(Ptr, FBufSize); + move(TheBuffer^, ptr^, FBufSize); + if Data.Count < Index then begin + Data.Add(Ptr); + Bookmark.Add(Pointer(FLastBookMark)); + RowId.Add(Pointer(TheRowId)); + end else begin + Data.Insert(Index, Ptr); + Bookmark.Insert(Index, Pointer(FLastBookMark)); + RowId.Insert(Index, Pointer(TheRowId)); + end; + DebugLeave('TFResult.Insert'); +end; + +//============================================================================== +// Deletes a row of data from the resultset +//============================================================================== + +procedure TFResult.Delete(Index: integer); +var + ptr : pointer; +begin + DebugEnter('TFResult.Delete'); + if not ((Index < 0) or (Index >= Data.Count)) then + begin + ptr := Data.Items[Index]; + if ptr <> nil then + FreeMem(ptr, FBufSize); + Data.Delete(Index); + Bookmark.Delete(Index); + Rowid.Delete(Index); + end; + DebugLeave('TFResult.Delete'); +end; + +//============================================================================== +// Returns a row from the resultset +//============================================================================== + +function TFResult.GetData(Index: integer): Pointer; +begin + DebugEnter('TFResult.GetData'); + if (Index < 0) or (Index >= Data.Count) then + GetData := nil + else + GetData := Data.Items[Index]; + DebugLeave('TFResult.GetData'); +end; + +function TFResult.GetBookmark(Index: integer): integer; +begin + DebugEnter('TFResult.GetBookmark'); + if (Index < 0) or (Index >= Data.Count) then + GetBookmark := -1 + else + GetBookmark := integer(Bookmark.Items[Index]); + DebugLeave('TFResult.GetBookmark'); +end; + +function TFResult.GetRowId(Index: integer): integer; +begin + DebugEnter('TFResult.GetRowId'); + if (Index < 0) or (Index >= RowId.Count) then + GetRowId := -1 + else + GetRowId := integer(RowId.Items[Index]); + DebugLeave('TFResult.GetRowId'); +end; + +function TFResult.Count: integer; +begin + Count := Data.Count; +end; + +function TFResult.IndexOf(TheBookMark: pointer): integer; +begin + Result := BookMark.IndexOf(TheBookmark); +end; + +//============================================================================== ASQLITEDB + +procedure TASQLite3DB.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3DB.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then + begin + if (AComponent is TASQLite3Pragma) then begin + if Assigned(FASQLitePragma) then begin + if TASQLite3Pragma(AComponent) = FASQLitePragma then + FASQLitePragma := nil; + end; + end + else if (AComponent is TASQLite3Log) then + begin + if Assigned(FASQLiteLog) then begin + if TASQLite3Log(AComponent) = FASQLiteLog then + FASQLiteLog := nil; + end; + end + else if (AComponent is TASQLite3InlineSQL) then + begin + if Assigned(FInlineSQL) then begin + if TASQLite3InlineSQL(AComponent) = FInlineSQL then + FInlineSQL := nil; + end; + end; + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3DB.Notification'); +{$ENDIF} +end; + +function TASQLite3DB.LoadLibs: boolean; +begin + try + DebugEnter('TASQLite3DB.LoadLibs'); + if not(DecimalSeparator in ['.',',']) then + DecimalSeparator := '.'; + + Debug('loading sqlite lib'); +{$IFNDEF SQLite_Static} + Debug(PAnsiChar(DriverDLL)); + Result := false; + DLLHandle := LoadLibrary(PAnsiChar(DriverDLL)); //JohnLito + if DLLHandle <> 0 then + begin + @SQLite3_Open := GetProcAddress(DLLHandle, 'sqlite3_open'); + if not Assigned(@SQLite3_Open) then exit; + @SQLite3_Close := GetProcAddress(DLLHandle, 'sqlite3_close'); + if not Assigned(@SQLite3_Close) then exit; + @SQLite3_Exec := GetProcAddress(DLLHandle, 'sqlite3_exec'); + if not Assigned(@SQLite3_Exec) then exit; + @SQLite3_LibVersion := GetProcAddress(DLLHandle, 'sqlite3_libversion'); + if not Assigned(@SQLite3_LibVersion) then exit; + @SQLite3_ErrorString := GetProcAddress(DLLHandle, 'sqlite3_errmsg'); + if not Assigned(@SQLite3_ErrorString) then exit; + @SQLite3_GetTable := GetProcAddress(DLLHandle, 'sqlite3_get_table'); + if not Assigned(@SQLite3_GetTable) then exit; + @SQLite3_FreeTable := GetProcAddress(DLLHandle, 'sqlite3_free_table'); + if not Assigned(@SQLite3_FreeTable) then exit; + @SQLite3_FreeMem := GetProcAddress(DLLHandle, 'sqlite3_free'); + if not Assigned(@SQLite3_FreeMem) then exit; + @SQLite3_Complete := GetProcAddress(DLLHandle, 'sqlite3_complete'); + if not Assigned(@SQLite3_Complete) then exit; + @SQLite3_LastInsertRow := GetProcAddress(DLLHandle, 'sqlite3_last_insert_rowid'); + if not Assigned(@SQLite3_LastInsertRow) then exit; + @SQLite3_Cancel := GetProcAddress(DLLHandle, 'sqlite3_interrupt'); + if not Assigned(@SQLite3_Cancel) then exit; + @SQLite3_BusyTimeout := GetProcAddress(DLLHandle, 'sqlite3_busy_timeout'); + if not Assigned(@SQLite3_BusyTimeout) then exit; + @SQLite3_BusyHandler := GetProcAddress(DLLHandle, 'sqlite3_busy_handler'); + if not Assigned(@SQLite3_BusyHandler) then exit; + @SQLite3_Changes := GetProcAddress(DLLHandle, 'sqlite3_changes'); + if not Assigned(@SQLite3_Changes) then exit; + @SQLite3_Prepare := GetProcAddress(DLLHandle, 'sqlite3_prepare'); + if not Assigned(@SQLite3_Prepare) then exit; + @SQLite3_Finalize := GetProcAddress(DLLHandle, 'sqlite3_finalize'); + if not Assigned(@SQLite3_Finalize) then exit; + @SQLite3_Reset := GetProcAddress(DLLHandle, 'sqlite3_reset'); + if not Assigned(@SQLite3_Reset) then exit; + @SQLite3_Step := GetProcAddress(DLLHandle, 'sqlite3_step'); + if not Assigned(@SQLite3_Step) then exit; + @SQLite3_Column_blob := GetProcAddress(DLLHandle, 'sqlite3_column_blob'); + if not Assigned(@SQLite3_Column_blob) then exit; + @SQLite3_Column_bytes := GetProcAddress(DLLHandle, 'sqlite3_column_bytes'); + if not Assigned(@SQLite3_Column_bytes) then exit; + @SQLite3_Column_count := GetProcAddress(DLLHandle, 'sqlite3_column_count'); + if not Assigned(@SQLite3_Column_Count) then exit; + @SQLite3_Column_decltype := GetProcAddress(DLLHandle, 'sqlite3_column_decltype'); + if not Assigned(@SQLite3_Column_decltype) then exit; + @SQLite3_Column_double := GetProcAddress(DLLHandle, 'sqlite3_column_double'); + if not Assigned(@SQLite3_Column_double) then exit; + @SQLite3_Column_int := GetProcAddress(DLLHandle, 'sqlite3_column_int'); + if not Assigned(@SQLite3_Column_int) then exit; + @SQLite3_Column_int64 := GetProcAddress(DLLHandle, 'sqlite3_column_int64'); + if not Assigned(@SQLite3_Column_int64) then exit; + @SQLite3_Column_name := GetProcAddress(DLLHandle, 'sqlite3_column_name'); + if not Assigned(@SQLite3_Column_name) then exit; + @SQLite3_Column_text := GetProcAddress(DLLHandle, 'sqlite3_column_text'); + if not Assigned(@SQLite3_Column_text) then exit; + @SQLite3_Column_text16 := GetProcAddress(DLLHandle, 'sqlite3_column_text16'); + if not Assigned(@SQLite3_Column_text16) then exit; + @SQLite3_Column_type := GetProcAddress(DLLHandle, 'sqlite3_column_type'); + if not Assigned(@SQLite3_Column_type) then exit; + @SQLite3_Bind_Blob := GetProcAddress(DLLHandle, 'sqlite3_bind_blob'); + if not Assigned(@SQLite3_Bind_blob) then exit; + @SQLite3_Bind_Text16 := GetProcAddress(DLLHandle, 'sqlite3_bind_text16'); + if not Assigned(@SQLite3_Bind_Text16) then exit; + @SQLite3_Bind_Parameter_Count := GetProcAddress(DLLHandle, 'sqlite3_bind_parameter_count'); + if not Assigned(@SQLite3_Bind_Parameter_Count) then exit; + + Result := true; + end; + {$ELSE} + DllHandle := 1; + @SQLite3_Open := @_sqlite3_open; + @SQLite3_Close := @_sqlite3_close; + @SQLite3_Exec := @_sqlite3_exec; + @SQLite3_LibVersion := @_sqlite3_libversion; + @SQLite3_ErrorString := @_sqlite3_errmsg; + @SQLite3_GetTable := @_sqlite3_get_table; + @SQLite3_FreeTable := @_sqlite3_free_table; + @SQLite3_FreeMem := @_sqlite3_free; + @SQLite3_Complete := @_sqlite3_complete; + @SQLite3_LastInsertRow := @_sqlite3_last_insert_rowid; + @SQLite3_Cancel := @_sqlite3_interrupt; + @SQLite3_BusyTimeout := @_sqlite3_busy_timeout; + @SQLite3_BusyHandler := @_sqlite3_busy_handler; + @SQLite3_Changes := @_sqlite3_changes; + @SQLite3_Prepare := @_sqlite3_prepare; + @SQLite3_Finalize := @_sqlite3_finalize; + @SQLite3_Reset := @_sqlite3_reset; + @SQLite3_Step := @_sqlite3_step; + @SQLite3_Column_blob := @_sqlite3_column_blob; + @SQLite3_Column_bytes := @_sqlite3_column_bytes; + @SQLite3_Column_count := @_sqlite3_column_count; + @SQLite3_Column_decltype := @_sqlite3_column_decltype; + @SQLite3_Column_double := @_sqlite3_column_double; + @SQLite3_Column_int := @_sqlite3_column_int; + @SQLite3_Column_int64 := @_sqlite3_column_int64; + @SQLite3_Column_name := @_sqlite3_column_name; + @SQLite3_Column_text := @_sqlite3_column_text; + @SQLite3_Column_type := @_sqlite3_column_type; + @SQLite3_Bind_Blob := @_sqlite3_bind_blob; + Result := true; + {$ENDIF} + finally + DebugLeave('TASQLite3DB.LoadLibs'); + end; +end; + +procedure TASQLite3DB.ShowError; +var msg : PAnsiChar; +begin + msg := SQLite3_ErrorString(DBHandle); + raise EDatabaseError.Create(msg); +end; + +function TASQLite3DB.SQLite3_ExecSQL(TheStatement: string; Blobs: TList=nil): integer; +var + PF: PAnsiChar; + p: Pointer; + i: Integer; + b: Integer; + m: TMemoryStream; +begin + TheStatement := StringReplace(TheStatement, #2, '?', [rfReplaceAll, rfIgnoreCase]); + PF := PAnsiChar(TheStatement); + repeat + Result := SQLite3_Prepare(DBHandle, PF, -1, p, PF); + if Result = SQLITE_OK then + begin + if Assigned(Blobs) then begin + for i := 0 to Blobs.Count - 1 do Begin + b := i+1; + m := TMemoryStream(Blobs.Items[i]); + SQLite3_Bind_Blob(p, b, PChar(m.Memory), m.Size, nil); + End; + end; + repeat + until SQLite3_Step(p) in [SQLITE_DONE, SQLITE_ERROR, SQLITE_MISUSE]; + Result := SQLite3_Finalize(p); + if Result <> SQLITE_OK then ShowError; + end + else + ShowError; + until PF^ = #0; +end; + +function TASQLite3DB.SQLite3_PrepareResult(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): Pointer; +var + i,tmpi: Integer; + t: PAnsiChar; + RV: Integer; +// RowIdCol: Integer; // column containing rowid +// RowId: Integer; // current record row id (to be stored in resultset) + colname, coltype: PChar; + tmpcolname:string; + FieldType: TFieldType; + FieldLen: Integer; + FieldDec: Integer; + bFirst: Boolean; + wildcard: Integer; +begin + if not (Sender is TASQLite3BaseQuery) then Exit; + + with (Sender as TASQLite3BaseQuery) do begin + // if there are blob fields then we need to bind the blob variable + RowId := -1; + RowIdCol := -1; + TheStatement := StringReplace(TheStatement, #2, '?', [rfReplaceAll, rfIgnoreCase]); + + bFirst := True; +{$IFDEF ASQLITE_D6PLUS} + if FUtf8 then + RV := SQLite3_Prepare(DBHandle, PAnsiChar(AnsiToUtf8(TheStatement)), -1, result, t) + else +{$endif} + RV := SQLite3_Prepare(DBHandle, PAnsiChar(TheStatement), -1, result, t); + + wildcard := 1; + if Assigned(FParams) then begin + for i := 0 to FParams.Count - 1 do begin + if FParams[i].DataType in [ftBlob, ftGraphic] then begin + SQLite3_Bind_Blob(result, wildcard, PChar(FParams[i].AsBlob), FParams[i].GetDataSize, nil); + Inc(wildcard); + end; + end; + end; + + if RV <> 0 then ShowError else begin + if bFirst then begin // retrieve metadata on first row + bFirst := False; + if SQLite3_Column_count(result) > 0 then FieldDefs.Clear; + for i := 0 to SQLite3_Column_count(result) - 1 do begin + colname := SQLite3_Column_name(result, i); + + // the second field named "ID", change in "ID_1" (like InterBase) + if (FieldDefs.IndexOf(colname) >= 0) then begin // Mirko + tmpColName := colname; // Mirko + tmpI := 0; // Mirko + while (FieldDefs.IndexOf(tmpcolname) >= 0) do begin // Mirko + inc(tmpI); // Mirko + tmpColName := colname + '_' + inttostr(tmpI); // Mirko + end; // Mirko + colName := PChar(tmpColName); // Mirko + end; // Mirko + + if CompareText(colname, 'rowid') = 0 then begin + RowIdCol := i; + end else begin + coltype := SQLite3_Column_decltype(result, i); + //SQl: select max(CurID) from Items, sqlite3_column_decltype returns null.. it's probably SQLite bug + // better is to use max(CurID) as something from .... Aducom + if coltype = nil then + GetFieldInfo('string', FieldType, FieldLen, FieldDec) //OL + else + GetFieldInfo(coltype, FieldType, FieldLen, FieldDec); + if TypeLess then begin + FieldType := ftString; + with FieldDefs.AddFieldDef do begin + Name := colname; + DataType := FieldType; + Size := FieldLen; + end; + end else begin + with FieldDefs.AddFieldDef do begin + if FieldType <> ftString then begin + Name := colname; + DataType := FieldType; + if FieldType = ftFloat then + Precision := FieldDec; + end else begin + Name := colname; + DataType := FieldType; + Size := FieldLen; + end; + end; + end; + MaxStrLen := MaxStrLen + GetNativeFieldSize(i + 1); // compensate for terminating zero + FResult.SetBufSize(MaxStrLen + 1 + SizeOf(TBookMark)); + end; + end; + end; + end; + end; +end; + +function TASQLite3DB.SQLite3_GetNextResult(DB: Pointer; TheStatement: pointer; FParams: TParams; Sender: TObject) : pointer; +var + i : integer; + minmin : integer; + RV: Integer; + mv: Integer; +// RowIdCol: Integer; // column containing rowid + convertbuf: TConvertBuffer; + pData: PAnsiChar; + BlobStream: TMemoryStream; +begin + result := nil; + with (Sender as TASQLite3BaseQuery) do begin + + FillChar(ResultStr^, MaxBuf, 0); + RV := SQLite3_Step(theStatement); + if RV = SQLITE_ROW then begin + + // retrieve data + if (Sender is TASQLite3Query) then + MinMin := 1 + else + MinMin := 1; // compensate for 'rowid' + for i := 0 to SQLite3_Column_count(theStatement) - MinMin do begin + if i = RowIdCol then begin // just save rowid + RowId := SQLite3_Column_int(theStatement, i); + end else begin + +// ok, i can find-out that the fiels is null but.... eh.... +// if SQLite3_column_type(theStatement, i) = 5 then begin +// end; + + pData := SQLite3_Column_text(theStatement, i); + if pData = nil then pData := ''; // james + if FTypeLess then begin + mv := GetNativeFieldSize(i + 1); + if StrLen(pData) < Cardinal(mv) then + mv := StrLen(pData); + Move(pData^, (ResultStr + GetFieldOffset(i + 1))^, mv); + end else begin + case FieldDefs[i].DataType of // DI + ftString: // DI + begin // DI + mv := GetNativeFieldSize(i + 1); + if pData <> nil then //OL + begin + if StrLen(pData) < Cardinal(mv) then + mv := StrLen(pData)+1; // plus onennnnnnnnnnnnnnnn + Move(pData^, (ResultStr + GetFieldOffset(i + 1))^, mv); + end; + end; // DI + ftMemo, ftGraphic, ftFmtMemo, ftBlob: // DI + begin // DI + // create memory stream to save blob; + pData := SQLite3_Column_blob(theStatement, i); + BlobStream := TMemoryStream.Create; + if pData <> nil then + BlobStream.Write(pData^, SQLite3_Column_bytes(theStatement, i)) + else begin + pData := ''; + BlobStream.Write(pData^, 0); + end; + Move(BlobStream, (ResultStr + GetFieldOffset(i + 1))^, SizeOf(BlobStream)); + end; // DI + else // DI + begin // DI + convertbuf := UnpackBuffer(pData, FieldDefs[i].DataType); + Move(convertbuf, (ResultStr + GetFieldOffset(i + 1))^, GetFieldSize(i + 1)); + end; + end; + end; + end + end; + Result := ResultStr; + end; + if RV in [SQLITE_DONE] then result := nil; + if RV in [SQLITE_ERROR, SQLITE_MISUSE] then //f.e. inserting NULL in field declared as NOT NULL + ShowError; + end; +end; + +procedure TASQLite3DB.SQLite3_CloseResult(TheStatement : pointer); +var RV : integer; +begin + if TheStatement <> nil then begin + SQLite3_Reset(TheStatement); + RV := SQLite3_Finalize(TheStatement); + if RV <> 0 then raise AsgError.Create('SQLiteExecute error: ' + IntToStr(RV)); + end; +end; + +function TASQLite3DB.SQLite3_Execute(DB: Pointer; TheStatement: string; FParams: TParams; Sender: TObject): Integer; +var + p: Pointer; + RowIdCol: Integer; // column containing rowid +{$IFDEF ASQLITE_D6PLUS} + Cursor: TDBScreenCursor; +{$endif} +begin + SQLite3_Execute := 0; + RowIdCol := -1; + if not (Sender is TASQLite3BaseQuery) then Exit; + try + with (Sender as TASQLite3BaseQuery) do begin +{$IFDEF ASQLITE_D6PLUS} + if Assigned(DBScreen) and (FSQLCursor) then begin + Cursor := DBScreen.Cursor; + DBScreen.Cursor := dcrSQLWait; + end; +{$endif} + RowId := -1; + + FStatement := Connection.SQLite3_PrepareResult(Connection.DBHandle, PAnsiChar(TheStatement),FParams, Sender); + + repeat + p := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams, Sender); + if p <> nil then + FResult.Add(ResultStr, RowId); + until p = nil; + + Connection.SQLite3_CloseResult(FStatement); + FStatement := nil; + end; + finally +{$IFDEF ASQLITE_D6PLUS} + if Assigned(DBScreen) and ((Sender as TASQLite3BaseQuery).FSQLCursor) then begin + DBScreen.Cursor := Cursor; + if DBScreen.Cursor = dcrSQLWait then + DBScreen.Cursor := dcrDefault; + end; +{$endif} + + end; +end; + +function TASQLite3DB.FGetDriverDLL: string; +begin + DebugEnter('TASQLite3DB.FGetDriverDLL'); + if FDriverDLL = '' then + FDriverDLL := 'SQLite3.dll'; + FGetDriverDLL := FDriverDLL; + DebugLeave('TASQLite3DB.FGetDriverDLL'); +end; + +function TASQLite3DB.FGetDefaultExt: string; +begin + DebugEnter('TASQLite3DB.FGetDefaultExt'); + if FDefaultExt = '' then + FDefaultExt := '.sqb'; + FGetDefaultExt := FDefaultExt; + DebugLeave('TASQLite3DB.FGetDefaultExt'); +end; + +procedure TASQLite3DB.FSetDatabase(Database: string); +begin + DebugEnter('TASQLite3DB.FSetDatabase ' + Database); + FDatabase := Trim(Database); + if ExtractFileExt(FDataBase)='' Then // GPA + FDatabase:=FDataBase+FDefaultExt; // GPA + DebugLeave('TASQLite3DB.FSetDatabase'); +end; + +procedure TASQLite3DB.ShowDatabases(List: TStrings); +var + sr : TSearchRec; +begin + DebugEnter('TASQLite3DB.ShowDatabases'); + if DefaultExt = '' then + DefaultExt := '.sqb'; + if DefaultExt[1] <> '.' then + DefaultExt := '.' + DefaultExt; + if DefaultDir <> '' then + if DefaultDir[Length(DefaultDir)] <> '\' then + DefaultDir := DefaultDir + '\'; + if FindFirst(FDefaultDir + '*' + DefaultExt, faAnyFile, sr) = 0 then + begin + repeat + List.Add(sr.Name); + until FindNext(sr) <> 0; + SysUtils.FindClose(sr); + end; + DebugLeave('TASQLite3DB.ShowDatabases'); +end; + +procedure TASQLite3DB.GetTableNames(List: TStrings; SystemTables: boolean = false); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'SELECT name FROM sqlite_master WHERE type="table" ORDER BY name'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr); // ignore header + for i := 1 to RowCount do + begin + if (CompareText('name', PAnsiChar(ResultStr^)) <> 0) then + List.Add(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableNames'); +end; + +procedure TASQLite3DB.GetIndexFieldNames(IndexName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetIndexFieldNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA index_info("' + IndexName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 5); + for i := 1 to RowCount do + begin + List.Insert(0, PAnsiChar(ResultStr^)); + Inc(ResultStr, 3); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetIndexFieldNames'); +end; + +procedure TASQLite3DB.GetIndexNames(List: TStrings; SystemTables: boolean = false); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetIndexNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'SELECT name FROM sqlite_master WHERE type="index" ORDER BY name'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr); // ignore header + for i := 1 to RowCount do + begin + List.Add(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetIndexNames'); +end; + +procedure TASQLite3DB.GetFieldNames(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetFieldNames ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 6); // headers can be ignored + for i := 1 to RowCount do + begin + Inc(ResultStr); + List.Add(PAnsiChar(ResultStr^)); // the second field contains the fieldname + Inc(ResultStr, 5); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetFieldNames'); +end; + +procedure TASQLite3DB.GetPrimaryKeys(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; +// PK: ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + Temp : string; + i : integer; +begin + DebugEnter('TASQLite3DB.GetPrimaryKeys ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 6); // headers can be ignored + for i := 1 to RowCount do + begin + Inc(ResultStr); + Temp := PAnsiChar(ResultStr^); // the second field contains the fieldname + Inc(ResultStr, 4); + // the last field reveils a indicator for primary key + if PAnsiChar(ResultStr^) = '1' then + List.Add(Temp); + Inc(ResultStr); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetPrimaryKeys'); +end; + +procedure TASQLite3DB.GetTableInfo(TableName: string; List: TList); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + Field : TASQLite3Field; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableInfo ' + Tablename); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar('PRAGMA table_info("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + while List.Count > 0 do + begin + TASQLite3Field(List[0]).Free; + List.Delete(0); + end; + List.Clear; + + Inc(ResultStr,6); + for i := 1 to RowCount do + begin + Field := TASQLite3Field.Create; + with Field do + begin + FieldNumber := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + FieldName := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldType := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldNN := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + FieldDefault := PAnsiChar(ResultStr^); + Inc(ResultStr); + FieldPK := StrToIntX(PAnsiChar(ResultStr^)); + Inc(ResultStr); + end; + List.Add(Field); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableInfo'); +end; + +// retrieves the user version +function TASQLite3DB.GetUserVersion(database : string=''): integer; +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; +begin + DebugEnter('TASQLite3DB.GetTableIndexNames'); + GetUserVersion := -1; + if not FConnected then + Connected := true; + if FConnected then + begin + if database <> '' then database := database +'.'; + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA '+Database+'user_version'), + ResultPtr, RowCount, ColCount, ErrMsg); + ResultStr := ResultPtr; + Inc(ResultStr); + GetUserVersion := StrToIntX(PAnsiChar(ResultStr^)); + end; +end; + +// sets user version. +procedure TASQLite3DB.SetUserVersion(Version : integer; Database : string=''); +begin + if Database <> '' then Database := Database +'.'; + SQLite3_ExecSQL('PRAGMA '+Database+'user_version='+IntToStr(Version)); +end; + +procedure TASQLite3DB.GetTableIndexNames(TableName: string; List: TStrings); +var + ResultPtr : Pointer; + ResultStr : ^Pointer; + RowCount : cardinal; + ColCount : cardinal; + ErrMsg : PAnsiChar; + i : integer; +begin + DebugEnter('TASQLite3DB.GetTableIndexNames'); + if not FConnected then + Connected := true; + if FConnected then + begin + SQLite3_GetTable(DBHandle, PAnsiChar( + 'PRAGMA index_list("' + TableName + '");'), + ResultPtr, RowCount, ColCount, ErrMsg); + + ResultStr := ResultPtr; + List.Clear; + Inc(ResultStr, 4); // Skip header + 1st col. + for i := 1 to RowCount do + begin + List.Insert(0, PAnsiChar(ResultStr^)); + Inc(ResultStr, 3); + end; + if Assigned(ResultPtr) then SQLite3_FreeTable(ResultPtr); + end; + DebugLeave('TASQLite3DB.GetTableIndexNames'); +end; + +procedure TASQLite3DB.DBConnect(Connected: boolean); +var + ErrMsg : PAnsiChar; + DBMS : string; + rv : integer; + i : integer; // GPA +begin + DebugEnter('TASQLite3DB.DBConnect'); + +// ShowMessage(FCharEnc); + if (CompareText(FCharEnc,'utf8')=0) or (FCharEnc='') then + FUtf8 := true + else + FUtf8 := false; + + if (Connected) and (FDatabase = '') then + begin + DebugLeave('TASQLite3DB.DBConnect Exit'); + raise AsgError.Create('Missing database property'); + SQLite3_FreeMem(ErrMsg); + FConnected := false; + exit; + end; + + if not Connected then + begin + if FConnected then + begin + if DLLHandle <> 0 then + begin + Debug('freeing sqlite dll'); + if Assigned(FBeforeDisconnect) then + FBeforeDisconnect(self); + // if closed then all Datasets must be closed (GPA) + if Assigned(Owner) Then + For I:=0 to Owner.ComponentCount-1 do + if Owner.Components[I] is TASQLite3BaseQuery Then + TASQLite3BaseQuery(Owner.Components[I]).Active:=False; + + if Assigned(@SQLite3_Close) then + SQLite3_Close(DBHandle); + + {$IFNDEF SQLite_Static} + FreeLibrary(DLLHandle); + {$ENDIF} + + DLLHandle := 0; + if Assigned(FAfterDisconnect) then + FAfterDisconnect(self); + end; + FConnected := false; + DebugLeave('TASQLite3DB.DBConnect'); + exit; + end + end + else + begin + if CompareText(':memory:', Database) <> 0 then begin + if DefaultDir <> '' then begin + if DefaultDir[Length(DefaultDir)] <> '\' then + DefaultDir := DefaultDir + '\'; + DBMS := DefaultDir + Database; + end else begin + if Pos('\', Database) = 0 then + DBMS := GetCurrentDir + '\' + DataBase + else + DBMS := Database; + end; + + if FMustExist then begin + if not FileExists(DBMS) then begin + DebugLeave('TASQLite3DB.DBConnect ' + 'Database ' + DBMS + ' does not exist'); + raise EDatabaseError.Create('Database ' + DBMS + ' does not exist'); + end; + end; + end else DBMS := Database; // in memory database + + if DLLHandle = 0 then + begin + if not LoadLibs then + begin + FConnected := false; + DebugLeave('TASQLite3DB.DBConnect ' + 'Could Not load SQLite Library'); + raise AsgError.Create('Could not load SQLite library'); + end; + end; + + FConnected := true; + FVersion := SQLite3_LibVersion; + + DBHandle := nil; + ErrMsg := nil; + if Assigned(FBeforeConnect) then + FBeforeConnect(self); + +{$IFDEF ASQLITE_D6PLUS} + if Assigned(@SQLite3_Open) then + if FVersion > '3.2.5' then + rv := SQLite3_Open(PAnsiChar(AnsiToUTF8(DBMS)), DBHandle) + else +{$endif} + rv := SQLite3_Open(PAnsiChar(DBMS), DBHandle); + + if Assigned(FAfterConnect) then + FAfterConnect(self); + + if DBHandle = nil then + FConnected := false; + + if Assigned(FASQLitePragma) then + ExecPragma; + + FLastError := ErrMsg; + if ErrMsg <> nil then + SQLite3_FreeMem(ErrMsg); + // GPA Added to execute InlineSQL in case of use Connected:=True instead of Open + if ExecuteInlineSQL and Assigned(FInlineSQL) then Try // GPA + ExecStartTransaction(''); // GPA + SQLite3_ExecSQL(FInlineSQL.FSQL.Text); // GPA + Commit; // GPA + finally // GPA + ExecuteInlineSQL:=False; //GPA Assure just one execution in case of reopen + end; // GPA + end; + DebugLeave('TASQLite3DB.DBConnect'); +end; + +function TASQLite3DB.RowsAffected: integer; +begin + DebugEnter('TASQLite3DB.RowsAffected'); + if not FConnected then + Result := -1 + else + Result := SQLite3_Changes(DBHandle); + DebugLeave('TASQLite3DB.RowsAffected'); +end; + +//------------------------------------------------------------------------------ +// By Ralf, The Delphi Inspiration +//------------------------------------------------------------------------------ + +function TableExistsCallback(UserData: Pointer; ColumnCount: Integer; ColumnValues, ColumnNames: PPointer): Integer; cdecl; +begin + if AnsiStrIComp(UserData, ColumnValues^) <> 0 then + Result := 0 + else + Result := 1; // Abort +end; + +//------------------------------------------------------------------------------ + +function TASQLite3DB.TableExists(const ATableName: AnsiString): Boolean; +var + ErrMsg: PAnsiChar; +begin + try + { No WHERE clause is used in the SQL statement below. + Instead, the callback function compares without case sensitivity. } + Result := SQLite3_Exec(DBHandle, 'SELECT name FROM sqlite_master', + TableExistsCallback,Pointer(ATableName), ErrMsg) = SQLITE_ABORT; + finally + if ErrMsg <> nil then + begin + SQLite3_FreeMem(ErrMsg); + ShowError; + end; + end; +end; + +//------------------------------------------------------------------------------ +procedure TASQLite3DB.ExecStartTransaction(TransType: string); +begin +// if no transaction type available then use default from asqlitedb + if (TransType = '') then TransType := FTransactionType; + + if ((TransType = '') or (CompareText(TransType, 'DEFAULT') = 0)) then StartTransaction + else if (CompareText(TransType, 'DEFERRED') = 0) then StartDeferredTransaction + else if (CompareText(TransType, 'IMMEDIATE') = 0) then StartImmediateTransaction + else if (CompareText(TransType, 'EXCLUSIVE') = 0) then StartExclusiveTransaction + else StartTransaction; +end; + +procedure TASQLite3DB.StartTransaction; +begin + DebugEnter('TASQLite3DB.StartTransaction'); + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin transaction'); + DebugLeave('TASQLite3DB.StartTransaction'); +end; + +procedure TASQLite3DB.StartDeferredTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin deferred transaction'); +end; + +procedure TASQLite3DB.StartImmediateTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin immediate transaction'); +end; + +procedure TASQLite3DB.StartExclusiveTransaction; +begin + if not FConnected then // open database if necessary + Connected := true; // trigger the 'dbconnect' event + if FConnected then SQLite3_ExecSQL('begin exclusive transaction'); +end; + +procedure TASQLite3DB.Open; +begin + DebugEnter('TASQLite3DB.Open'); + Connected := true; + + if DLLHandle = 0 then + Connected := false; + + DebugLeave('TASQLite3DB.Open'); +end; + +procedure TASQLite3DB.Close; +begin + DebugEnter('TASQLite3DB.Close'); + Connected := false; + DebugLeave('TASQLite3DB.Close'); +end; + +procedure TASQLite3DB.ExecPragma; +var + Cmd : string; +begin + DebugEnter('TASQLite3DB.ExecPragma'); + if not FConnected then + Connected := true; + if FConnected then + begin + if FASQLitePragma.FTempCacheSize <> 0 then + begin + cmd := FASQLitePragma.GetTempCacheSize; + SQLite3_ExecSQL(cmd); + end; + if FASQLitePragma.FDefaultCacheSize <> 0 then + begin + cmd := FASQLitePragma.GetDefaultCacheSize; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FDefaultSynchronous <> '' then + begin + cmd := FASQLitePragma.GetDefaultSynchronous; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FDefaultTempStore <> '' then + begin + cmd := FASQLitePragma.GetDefaultTempStore; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FTempStore <> '' then + begin + cmd := FASQLitePragma.GetTempStore; + SQLite3_ExecSQL(cmd); + end; + + if FASQLitePragma.FSynchronous <> '' then + begin + cmd := FASQLitePragma.GetSynchronous; + SQLite3_ExecSQL(cmd); + end; + end; + DebugLeave('TASQLite3DB.ExecPragma'); +end; + +procedure TASQLite3DB.Commit; +begin + DebugEnter('TASQLite3DB.Commit'); + if not FConnected then + Connected := true; + if FConnected then SQLite3_ExecSQL('commit transaction'); + DebugLeave('TASQLite3DB.Commit'); +end; + +procedure TASQLite3DB.RollBack; +begin + DebugEnter('TASQLite3DB.RollBack'); + if not FConnected then + Connected := true; + if FConnected then + SQLite3_ExecSQL('rollback transaction'); + DebugLeave('TASQLite3DB.RollBack'); +end; + +constructor TASQLite3DB.Create(AOwner: TComponent); +//var fn : TextFile; +begin + DebugEnter('TASQLite3DB.Create'); + Connected := false; + ASQLiteLog := nil; + ASQLitePragma := nil; + inherited Create(AOwner); + DebugLeave('TASQLite3DB.Create'); +end; + +destructor TASQLite3DB.Destroy; +//var fn : TextFile; +begin + DebugEnter('TASQLite3DB.Destroy'); + FConnected := false; + ASQLiteLog := nil; + ASQLitePragma := nil; + inherited Destroy; + DebugLeave('TASQLite3DB.Destroy'); +end; + +//============================================================================== TASQLite3BaseQuery + +function TASQLite3BaseQuery.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; //MS +begin + result := sign(integer(Bookmark1^)-integer(Bookmark2^)); +end; + +// Is one or more fields a calculated field? (John Lito) +function TASQLite3BaseQuery.CalcFieldInList(const List: string): Boolean; +var i: Integer; + Fields: TList; +begin + if Pos(';', List) <> 0 then + begin + Result := False; + Fields := TList.Create; + try + GetFieldList(Fields, List); + for i := 0 to Fields.Count - 1 do + if TField(Fields[I]).FieldKind in [fkCalculated, fkLookup] then Result := True; + finally + Fields.Free; + end; + end else + Result := (FieldByName(List).FieldKind in [fkCalculated, fkLookup]); +end; + +function TASQLite3BaseQuery.Lookup(const KeyFields: string; const KeyValues: Variant; + const ResultFields: string): Variant; +var OldState: TDataSetState; +begin + Result := ''; + if Locate(KeyFields, KeyValues, []) then + begin + if CalcFieldInList(ResultFields) then GetCalcFields(PChar(FResult.GetData(FCurRec))); + OldState := SetTempState(dsFilter); + try + Result := FieldValues[ResultFields]; + finally + RestoreState(OldState); + end; + end; +end; + +{ + support routine for UTF16 +} + +procedure TASQlite3BaseQuery.DataConvert(Field: TField; Source, Dest: Pointer; + ToNative: Boolean); +const x: Word = 0; +var L: Integer; +begin + try + case Field.DataType of + ftWideString: + begin + if ToNative then + begin + L := Length(PWideChar(Source^)); + if (L <= 0) then + Move(x,Dest^,2) + else + begin + if (L <= Field.Size) then + Move(PWideChar(Source^)^, Dest^, (L+1)*2) + else + begin + Move(PWideChar(Source^)^, Dest^, Field.Size*2); + //Move(x,(PChar(Dest)+Field.Size-(Field.Size mod 2))^,2+(Field.Size mod 2)); + Move(x, (PChar(Dest)+Field.Size*2 - 2)^, 2); + end; + end; + end + else + begin + WideString(Dest^) := WideString(PWideChar(Source)); + end; + end;//ftWideString + else + begin + inherited DataConvert(Field, Source, Dest, ToNative); + end + end;//case + finally + end; +end;//DataConvert + + +{ + Register detail dataset for a master-detail relationship +} +procedure TASQLite3BaseQuery.RegisterDetailDataset(DetailDataSet: TASQLite3BaseQuery); +var + i : integer; +begin + DebugEnter('TASQLite3BaseQuery.RegisterDetailDataset'); + try + for i := 0 to DetailList.Count - 1 do + if DetailList[i] = DetailDataset then exit; + DetailList.Add(DetailDataSet); + finally + DebugLeave('TASQLite3BaseQuery.RegisterDetailDataset'); + end; +end; + +{ compatibility isue } +procedure TASQLite3BaseQuery.SQLiteMasterChanged; +begin + DebugEnter('TASQLite3BaseQuery.SQLiteMasterChanged'); + DebugLeave('TASQLite3BaseQuery.SQLiteMasterChanged'); +end; + +{ + notify that the master has changed and a requery on the detail has + to be done +} + +procedure TASQLite3BaseQuery.NotifySQLiteMasterChanged; +var + i : integer; +begin + DebugEnter('TASQLite3BaseQuery.NotifySQLiteMasterChanged'); + for i := 0 to DetailList.Count - 1 do + begin + TASQLite3BaseQuery(DetailList[i]).SQLiteMasterChanged; + end; + DebugLeave('TASQLite3BaseQuery.NotifySQLiteMasterChanged'); +end; + +{ + This function returns a string representing the value of the specified field + in SQLite format. Floating point values always use '.' as a decimal separator. + Date values use 'yyyy-mm-dd' format, unless SQLiteDateFormat is set to false, + which results in using TableDateFormat, or system dependent ShortDateFormat + if TableDateFormat is not set. Same goes for DateTime and Time values, for + which default formats are 'yyyy-mm-ss hh:nn:ss' and 'hh:nn:ss.zzz', respectively. + Setting SQLiteDateFormat to false is discouraged. + Result is quoted when necessary. +} +// added by Donnie + +function TASQLite3BaseQuery.GetFieldValue(const AField: TField; const Blobs: TList = nil): string; +var + MS: TMemoryStream; + DateTimeFormat: string; +begin + if (AField.DataSet <> Self) then + raise EInvalidArgument.Create('Only own fields are accepted'); + case AField.DataType of + ftString: +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + Result := QuotedStr(UTF8Encode(VarToWideStr(AField.Value))) + else +{$endif} + Result := QuotedStr(AField.AsString); + ftSmallint, ftInteger, ftWord: + Result := AField.AsString; + ftFloat: + if DecimalSeparator <> '.' then +{$IFDEF ASQLITE_D6PLUS} + Result := AnsiReplaceStr(AField.AsString, DecimalSeparator, '.') +{$else} + Result := StringReplace(AField.AsString, DecimalSeparator, '.', [rfReplaceAll]) +{$endif} + else + Result := AField.AsString; + ftDate: begin + if FSQLiteDateFormat then + DateTimeFormat := 'yyyy"-"mm"-"dd' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := ShortDateFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftDateTime: begin + if FSQLiteDateFormat then + DateTimeFormat := 'yyyy"-"mm"-"dd" "hh":"nn":"ss"."zzz' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := ShortDateFormat + '" "' + LongTimeFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftTime: begin + if FSQLiteDateFormat then + DateTimeFormat := 'hh":"nn":"ss"."zzz' + else if TableDateFormat <> '' then + DateTimeFormat := TableDateFormat + else + DateTimeFormat := LongTimeFormat; + Result := QuotedStr(FormatDateTime(DateTimeFormat, AField.AsDateTime)); + end; + ftBlob, ftGraphic, ftMemo, ftFmtMemo: begin + if Blobs = nil then + raise EInvalidArgument.Create('No place to store a blob field'); + MS := TMemoryStream.Create; + TBlobField(AField).SaveToStream(MS); + Result := #2 + IntToStr(1 + Blobs.Add(MS)); + end + else + Result := QuotedStr(AField.AsString); + end; +end; // GetFieldValue + +{ + Unpack the buffer (if necessary) and convert it to a valid representation + this is necessary for sqlite since it it typeless. If typed has been + defined then the fields have to be converted to the appropiate datatype +} + +function TASQLite3BaseQuery.UnpackBuffer(Buffer: PAnsiChar; FieldType: TFieldType): TConvertBuffer; +var + TempInt : integer; + TempDouble : double; + TempBool : wordbool; + TempT : TDateTimeRec; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.UnpackBuffer: ' + Buffer); +{$ENDIF} + case FieldType of + ftString: + begin +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.UnpackBuffer'); +{$ENDIF} + exit; + end; + ftInteger, ftSmallInt: + begin + TempInt := StrToIntX(Buffer); + Move(TempInt, result, sizeof(TempInt)); + end; + ftTime: + begin + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftDate: + begin + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftDateTime: + begin + if FSQLiteDateFormat then // aducom + TempT := DateTimeToNative(FieldType, YYYYMMDDParser(Buffer)) // jpierce + else + TempT := DateTimeToNative(FieldType, StrToDateTimeX(Buffer)); + Move(TempT, result, sizeof(TDateTime)); + end; + ftFloat, ftBCD, ftCurrency: + begin + TempDouble := StrToFloatX(FloatParser(Buffer)); + Move(TempDouble, result, sizeof(TempDouble)); + end; + +{$IFDEF ASQLITE_D6PLUS} + ftBoolean: + begin + TempBool := StrToBool(Buffer); + Move(TempBool, result, sizeof(TempBool)); + end; +{$ENDIF} + ftMemo, ftGraphic, ftBlob, ftFMTMemo: // pointer to stream + begin + TempInt := StrToInt(Buffer); + Move(TempInt, result, sizeof(TempInt)); + end; + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.UnpackBuffer'); +{$ENDIF} +end; + +{ This method is called by TDataSet.Open and also when FieldDefs need to + be updated (usually by the DataSet designer). Everything which is + allocated or initialized in this method should also be freed or + uninitialized in the InternalClose method. } + +constructor TASQLite3BaseQuery.Create(AOwner: TComponent); +begin + DebugEnter('TASQLite3BaseQuery.Create'); + MaxStrLen := 0; + FSQL := TStringList.Create; + FParams := TParams.Create(Self); + DetailList := TList.Create; + FConnection := nil; + FResult := nil; + GetMem(ResultStr, MaxBuf); + SQLCursor := true; + SQLiteDateFormat := true; + TypeLess := false; + ReadOnly := false; + inherited; + DebugLeave('TASQLite3BaseQuery.Create'); +end; + +function TASQLite3BaseQuery.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; +begin + Result := TASQLite3BlobStream.Create(Field as TBlobField, Mode); +end; + +destructor TASQLite3BaseQuery.Destroy; +begin + DebugEnter('TASQLite3BaseQuery.Destroy'); +// Close; +// inherited Destroy; + + if Assigned(FSQL) then begin + TStringList(FSQL).OnChange := nil; + FSQL.Free; + end; + FSQL := nil; + + if Assigned(FParams) then + begin + FParams.Free; + FParams := nil; + end; + + if Assigned(DetailList) then + DetailList.Free; + DetailList := nil; + + if Assigned(FConnection) then + FConnection := nil; + + if Assigned(ResultStr) then + FreeMem(ResultStr); + ResultStr := nil; + + if Assigned(FResult) then + FResult.Free; + FResult := nil; + + inherited; + DebugLeave('TASQLite3BaseQuery.Destroy'); +end; + +procedure TASQLite3BaseQuery.StartTransaction; +begin + if Assigned(FConnection) then + FConnection.ExecStartTransaction(FTransActionType); +end; + +procedure TASQLite3BaseQuery.StartDeferredTransaction; +begin + if Assigned(FConnection) then + FConnection.StartDeferredTransaction; +end; + +procedure TASQLite3BaseQuery.StartImmediateTransaction; +begin + if Assigned(FConnection) then + FConnection.StartImmediateTransaction; +end; + +procedure TASQLite3BaseQuery.StartExclusiveTransaction; +begin + if Assigned(FConnection) then + FConnection.StartExclusiveTransaction; +end; + +procedure TASQLite3BaseQuery.Commit; +begin + if Assigned(FConnection) then + FConnection.Commit; +end; + +procedure TASQLite3BaseQuery.RollBack; +begin + if Assigned(FConnection) then + FConnection.RollBack; +end; + +//function TASQLite3BaseQuery.LocateNearest(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; + //begin + //end; + +// implementation by J Bannon, implementing partial key too. +function TASQLite3BaseQuery.Locate(const KeyFields: string; + const KeyValues: variant; Options: TLocateOptions): boolean; +//loCaseInsensitive, loPartialKey +var + bOk : boolean; + i, j, p : integer; + Fields, SearchValue: string; //Variable SearchValue added by bobmitch + FieldList : TStringList; + DebugStr : string; + DoEnableControls : boolean; +begin + DebugEnter('TASQLite3BaseQuery.Locate ' + Keyfields); + DoEnableControls := not ControlsDisabled; {used to determine whether to EnableControls at end of function} + DisableControls; + FieldList := TStringList.Create; + bOk := false; + try + Fields := KeyFields; + p := pos(';', Fields); + while p > 0 do + begin + FieldList.Add(Copy(Fields, 1, p - 1)); + System.Delete(Fields, 1, p); + p := pos(';', Fields); + end; + if Fields <> '' then + FieldList.Add(Fields); + + First; + for i := 1 to FResult.Data.Count do + begin + SetRecNo(i); + bOk := true; + for j := 0 to FieldList.Count - 1 do + begin + if loCaseInsensitive in Options then + begin + if FieldList.Count = 1 then + begin //Lines 2303 - 2338 by bobmitch, replaces original lines 2303 - 2336 + SearchValue := VarToStr(KeyValues); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := CompareText(Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)), SearchValue) = 0 + else + bOk := CompareText(FieldByName(FieldList[j]).AsString, SearchValue) = 0 + end {end loCaseInsensitive in Options AND FieldList.Count = 1} + else + begin + SearchValue := VarToStr(KeyValues[j]); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := CompareText(Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)), SearchValue) = 0 + else + bOk := CompareText(FieldByName(FieldList[j]).AsString, SearchValue) = 0 + end {end loCaseInsensitive in Options AND FieldList.Count greater than 1} + end {end loCaseInsensitive in Options} + else + begin {begin loCaseInsensitive NOT in Options} + if FieldList.Count = 1 then + begin + SearchValue := VarToStr(KeyValues); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)) = SearchValue + else + bOk := FieldByName(FieldList[j]).AsString = SearchValue + end {end loCaseInsensitive NOT in Options AND FieldList.Count = 1} + else + begin + SearchValue := VarToStr(KeyValues[j]); + if (loPartialKey in Options) and (Length(SearchValue) <= Length(FieldByName(FieldList[j]).AsString)) then + bOk := Copy(FieldByName(FieldList[j]).AsString, 1, Length(SearchValue)) = SearchValue + else + bOk := FieldByName(FieldList[j]).AsString = SearchValue + end; {end loCaseInsensitive NOT in Options AND FieldList.Count greater than 1} + end; {end loCaseInsensitive NOT in Options} + if bOk = false then + break; + end; {end for j := 0 to FieldList.Count - 1} + if bOk then + begin + break; + end; + end; {end for i := 1 to FResult.Data.Count} + if bOk then + begin + Locate := true; + DebugStr := 'TASQLite3BaseQuery.Locate true'; + end + else + begin + Locate := false; + DebugStr := 'TASQLite3BaseQuery.Locate false'; + end; + finally + FieldList.Free; + if DoEnableControls then {restore original state of the controls} + EnableControls; + DebugLeave(DebugStr); + end; +end; + + +function TASQLite3BaseQuery.GetDataSource: TDataSource; + +begin + DebugEnter('TASQLite3BaseQuery.GetDataSource'); + Result := FMasterSource; + DebugLeave('TASQLite3BaseQuery.GetDataSource'); +end; + +procedure TASQLite3BaseQuery.SetSQLiteDateFormat(const Value: boolean); +begin + FSQLiteDateFormat := Value; +end; + +procedure TASQLite3BaseQuery.SetDataSource(Value: TDataSource); +begin + DebugEnter('TASQLite3BaseQuery.SetDataSource'); + if IsLinkedTo(Value) then + DatabaseError('circular references are not allowed', Self); + FMasterSource := Value; + DebugLeave('TASQLite3BaseQuery.SetDataSource'); +end; + +function TASQLite3BaseQuery.GetMasterFields: string; +begin + DebugEnter('TASQLite3BaseQuery.GetMasterFields'); + Result := FMasterFields; //FMasterLink.FieldNames; + DebugLeave('TASQLite3BaseQuery.GetMasterFields'); +end; + +procedure TASQLite3BaseQuery.SetMasterFields(const Value: string); +begin + DebugEnter('TASQLite3BaseQuery.SetMasterFields ' + Value); + FMasterFields := Value; // FMasterLink.FieldNames := Value; + DebugLeave('TASQLite3BaseQuery.SetMasterFields'); +end; + //Checks the State and Results a defined Buffer; + +function TASQLite3BaseQuery.GetActiveBuffer(var Buffer: PAnsiChar): boolean; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetActiveBuffer'); +{$ENDIF} + case State of + dsBrowse: if IsEmpty then + Buffer := nil + else + Buffer := ActiveBuffer; + + dsEdit: Buffer := ActiveBuffer; + dsInsert: Buffer := ActiveBuffer; + dsFilter: Buffer := ActiveBuffer; //FFilterBuffer; + dsCalcFields: Buffer := CalcBuffer; + else + Buffer := nil; + end; + Result := Buffer <> nil; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetActiveBuffer ' + PAnsiChar(Buffer)); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetNativeFieldSize(FieldNo: integer): integer; +begin + DebugEnter('TASQLite3BaseQuery.GetNativeFieldSize'); + Result := 0; + case FieldDefs.Items[FieldNo - 1].Datatype of + ftString: Result := FieldDefs.Items[FieldNo - 1].Size + 1; + ftWideString: Result := FieldDefs.Items[FieldNo - 1].Size + 1; + ftInteger, ftSmallInt, ftDate, ftTime: Result := 12; + ftDateTime: Result := 20; + ftFloat, ftBCD, ftCurrency: Result := 12; + ftBoolean: Result := 12; + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Result := 12; // space for memory handles + else + raise AsgError.Create('Fieldtype of Field "' + FieldDefs.Items[FieldNo - 1].Name + + '" not supported!'); + end; + DebugLeave('TASQLite3BaseQuery.GetNativeFieldSize'); +end; + +function TASQLite3BaseQuery.GetFieldSize(FieldNo: integer): integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldSize'); +{$ENDIF} + // try + Result := 0; + case FieldDefs.Items[FieldNo - 1].Datatype of + ftString: Result := FieldDefs.Items[FieldNo - 1].Size+ 1 ; // GPA - Warning UTF-8 length can be potentially > Ansi length + ftWideString: Result := FieldDefs.Items[FieldNo - 1].Size+ 1 ; + ftInteger, ftSmallInt, ftDate, ftTime: Inc(Result, sizeof(integer)); + ftDateTime: Inc(Result, sizeof(TDateTime)); + ftFloat, ftBCD, ftCurrency: Inc(Result, sizeof(double)); + ftBoolean: Inc(Result, sizeof(wordbool)); + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Inc(Result, sizeof(pointer)); + else + raise AsgError.Create('Fieldtype of Field "' + FieldDefs.Items[FieldNo - 1].Name + + '" not supported!'); + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldSize'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetFieldSize(Field: TField): integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLiteBaseQuery.GetFieldSize'); +{$ENDIF} + // try + Result := 0; + case Field.DataType of + ftString: Result := Field.Size + 1; + ftWideString: Result := Field.Size + 1; + ftInteger, ftSmallInt, ftDate, ftTime: Inc(Result, sizeof(integer)); + ftDateTime: Inc(Result, sizeof(TDateTime)); + ftFloat, ftBCD, ftCurrency: Inc(Result, sizeof(double)); + ftBoolean: Inc(Result, sizeof(wordbool)); + ftGraphic, ftMemo, ftBlob, ftFmtMemo: Inc(Result, sizeof(pointer)); + else + raise AsgError.Create('Fieldtype of Field "' + Field.FieldName + + '" not supported!'); + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLiteBaseQuery.GetFieldSize'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetFieldOffset(FieldNo: integer): integer; +var + i : integer; + Offset : integer; +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldOffset'); +{$ENDIF} + Offset := 0; + if FieldNo > 1 then + begin + for i := 1 to FieldNo - 1 do + OffSet := OffSet + GetFieldSize(i); + end; + GetFieldOffset := Offset; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldOffset'); +{$ENDIF} +end; + +function TASQLite3BaseQuery.GetCalcFieldOffset(Field: TField): integer; +var + i : integer; + Offset : integer; +begin + +// calcfieldoffset is appended to record (after bookmarkinfo) + +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLiteBaseQuery.GetCalcFieldOffset'); +{$ENDIF} + Offset := FRecBufSize + sizeof(TRecInfo); // startlocation of offsetbuffer + for i := 0 to FieldList.Count - 1 do begin + if CompareText(FieldList[i].FieldName, Field.FieldName) = 0 then begin + GetCalcFieldOffset := Offset; + exit; + end; + if FieldList[i].Calculated then + OffSet := OffSet + GetFieldSize(Field); + end; + GetCalcFieldOffset := Offset; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLiteBaseQuery.GetCalcFieldOffset'); +{$ENDIF} +end; + +procedure TASQLite3BaseQuery.SetSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3BaseQuery.SetSQL'); + Close; + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; + DebugLeave('TASQLite3BaseQuery.SetSQL'); +end; + +procedure TASQLite3BaseQuery.LoadQueryData; +begin + DebugEnter('TASQLite3BaseQuery.LoadQueryData'); + if Connection.FConnected then begin + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(FPrepared), FParams, self); + end; + DebugLeave('TASQLite3BaseQuery.LoadQueryData'); +end; + +procedure TASQLite3BaseQuery.InternalOpen; +begin + DebugEnter('TASQLite3BaseQuery.InternalOpen'); +{$IFDEF ASQLITE_D6PLUS} + if UniDirectional then + SetUnidirectional(true) + else + SetUniDirectional(false); +{$endif} + MaxStrLen := 0; + if (Connection = nil) then + begin // check to see if a valid database + raise AsgError.Create('no database connection'); + end + else + begin + + if Connection.Connected = false then // open database if necessary + Connection.Connected := true; // trigger the 'dbconnect' event + + if (Connection.Connected) and (Connection.DLLHandle <> 0) then + if Assigned(MasterSource) then + begin // notify master about existance! + if (MasterSource.DataSet <> nil) then + begin + if CompareText(Copy(MasterSource.DataSet.ClassName, 1, 9), 'TASQLite3') = 0 then + begin + TASQLite3BaseQuery(MasterSource.DataSet).RegisterDetailDataset( + TASQLite3BaseQuery(Self)); + end + else + begin + raise AsgError.Create('master dataset ' + MasterSource.DataSet.ClassName + + ' is not of TSQLiteBaseQuery type'); + DebugLeave('TASQLite3BaseQuery.InternalOpen'); + exit; + end; + end + else + begin + raise AsgError.Create('master dataset undefined'); + DebugLeave('TASQLite3BaseQuery.InternalOpen'); + exit; + end; + end; + + if not FUniDir then begin + { Load the result into a resultlist } + FResult := TFResult.Create(Self); + LoadQueryData; + end else begin + FResult := TFResult.Create(Self); + FStatement := Connection.SQLite3_PrepareResult(Connection.DBHandle, PAnsiChar(FPrepared),FParams, self); +// ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); + end; + + { Initialize our internal position. + We use -1 to indicate the "crack" before the first record. } + FCurRec := -1; + + { Initialize an offset value to find the TRecInfo in each buffer } + FRecInfoOfs := MaxStrLen; + + { Calculate the size of the record buffers. + Note: This is NOT the same as the RecordSize property which + only gets the size of the data in the record buffer } + FRecBufSize := FRecInfoOfs + SizeOf(TRecInfo); + + { Tell TDataSet how big our Bookmarks are (REQUIRED) } + BookmarkSize := SizeOf(integer); + + { Initialize the FieldDefs } + InternalInitFieldDefs; + + { Create TField components when no persistent fields have been created } + if DefaultFields then + CreateFields; + + { Bind the TField components to the physical fields } + BindFields(true); + + end; + DebugLeave('TASQLite3BaseQuery.InternalOpen'); +end; + +procedure TASQLite3BaseQuery.InternalClose; +begin + DebugEnter('TASQLite3BaseQuery.InternalClose'); + + if (FUniDir) and (FStatement <> nil) and (active) then begin + Connection.SQLite3_CloseResult(FStatement); + FStatement := nil; + end; + + if Assigned(FResult) then + begin + FResult.Free; + FResult := nil; + end; + + { Destroy the TField components if no persistent fields } + if DefaultFields then + DestroyFields; + + { Reset these internal flags } + // FLastBookmark := 0; + FCurRec := -1; + DebugLeave('TASQLite3BaseQuery.InternalClose'); +end; + +{ This property is used while opening the dataset. + It indicates if data is available even though the + current state is still dsInActive. } + +function TASQLite3BaseQuery.IsCursorOpen: boolean; +begin + Result := Assigned(FResult); +end; + +procedure TASQLite3BaseQuery.OpenCursor(InfoQuery: Boolean); +begin + if InfoQuery then + Begin + if Assigned(FConnection) Then Begin + InternalOpen; + InternalClose; + End; + End + else if State <> dsOpening then + inherited OpenCursor(InfoQuery); +end; + +procedure TASQLite3BaseQuery.InternalInitFieldDefs; +begin +// Just here for compatibility +end; + +{ This is the exception handler which is called if an exception is raised + while the component is being stream in or streamed out. In most cases this + should be implemented useing the application exception handler as follows. } + +procedure TASQLite3BaseQuery.InternalHandleException; +begin + DebugEnter('TASQLite3BaseQuery.InternalHandleException'); + ApplicationHandleException(Self); + DebugLeave('TASQLite3BaseQuery.InternalHandleException'); +end; + + { Bookmarks } + { ========= } + +{ In this sample the bookmarks are stored in the Object property of the + TStringList holding the data. Positioning to a bookmark just requires + finding the offset of the bookmark in the TStrings.Objects and using that + value as the new current record pointer. } + +procedure TASQLite3BaseQuery.InternalGotoBookmark(Bookmark: Pointer); +var + Index : integer; +begin + DebugEnter('TASQLite3BaseQuery.InternalGotoBookmark'); +// inherited; + Index := FResult.IndexOf(TObject(PInteger(Bookmark)^)); + if Index <> -1 then + FCurRec := Index + else + if not FUniDir then DatabaseError('Bookmark not found'); + DebugLeave('TASQLite3BaseQuery.InternalGotoBookmark'); +end; + +function TASQLite3BaseQuery.BookmarkValid(Bookmark: Pointer): boolean; +var + Index : integer; +begin + DebugEnter('TASQLite3BaseQuery.BookmarkValid'); + Index := FResult.IndexOf(TObject(PInteger(Bookmark)^)); + if Index <> -1 then + BookmarkValid := true + else + BookmarkValid := false; + DebugLeave('TASQLite3BaseQuery.BookmarkValid'); +end; + +{ This function does the same thing as InternalGotoBookmark, but it takes + a record buffer as a parameter instead } + +procedure TASQLite3BaseQuery.InternalSetToRecord(Buffer: PAnsiChar); +begin + DebugEnter('TASQLite3BaseQuery.InternalSetToRecord'); + InternalGotoBookmark(@PRecInfo(Buffer + FRecInfoOfs).Bookmark); +// NotifySQLiteMasterChanged; + DebugLeave('TASQLite3BaseQuery.InternalSetToRecord'); +end; + +{ Bookmark flags are used to indicate if a particular record is the first + or last record in the dataset. This is necessary for "crack" handling. + If the bookmark flag is bfBOF or bfEOF then the bookmark is not actually + used; InternalFirst, or InternalLast are called instead by TDataSet. } + +function TASQLite3BaseQuery.GetBookmarkFlag(Buffer: PAnsiChar): TBookmarkFlag; +begin + DebugEnter('TASQLite3BaseQuery.GetBookmarkFlag'); + Result := PRecInfo(Buffer + FRecInfoOfs).BookmarkFlag; + DebugLeave('TASQLite3BaseQuery.GetBookmarkFlag'); +end; + +procedure TASQLite3BaseQuery.SetBookmarkFlag(Buffer: PAnsiChar; Value: TBookmarkFlag); +begin + DebugEnter('TASQLite3BaseQuery.SetBookmarkFlag'); + PRecInfo(Buffer + FRecInfoOfs).BookmarkFlag := Value; + DebugLeave('TASQLite3BaseQuery.SetBookmarkFlag'); +end; + +{ These methods provide a way to read and write bookmark data into the + record buffer without actually repositioning the current record } + +procedure TASQLite3BaseQuery.GetBookmarkData(Buffer: PAnsiChar; Data: Pointer); +begin + DebugEnter('TASQLite3BaseQuery.GetBookmarkData'); + PInteger(Data)^ := PRecInfo(Buffer + FRecInfoOfs).Bookmark; + DebugLeave('TASQLite3BaseQuery.GetBookmarkData'); +end; + +procedure TASQLite3BaseQuery.SetBookmarkData(Buffer: PAnsiChar; Data: Pointer); +begin + DebugEnter('TASQLite3BaseQuery.SetBookmarkData'); + PRecInfo(Buffer + FRecInfoOfs).Bookmark := PInteger(Data)^; + DebugLeave('TASQLite3BaseQuery.SetBookmarkData'); +end; + + { Record / Field Access } + { ===================== } + +{ This method returns the size of just the data in the record buffer. + Do not confuse this with RecBufSize which also includes any additonal + structures stored in the record buffer (such as TRecInfo). } + +function TASQLite3BaseQuery.GetRecordSize: word; +begin + DebugEnter('TASQLite3BaseQuery.GetRecordSize'); + Result := MaxStrLen; + DebugLeave('TASQLite3BaseQuery.GetRecordSize'); +end; + +{ TDataSet calls this method to allocate the record buffer. Here we use + FRecBufSize which is equal to the size of the data plus the size of the + TRecInfo structure. } + +function TASQLite3BaseQuery.AllocRecordBuffer: PAnsiChar; +begin + DebugEnter('TASQLiteBaseQuery.AllocRecordBuffer'); + GetMem(Result, FRecBufSize + CalcFieldsSize + sizeof(TRecinfo) + 5); + FillChar(Result^, FRecBufSize + CalcFieldsSize + sizeof(TRecinfo) + 5, 0); +// FillChar(Result^, GetRecordSize+CalcFieldsSize+10, 0); + DebugLeave('TASQLiteBaseQuery.AllocRecordBuffer'); +end; + +{ Again, TDataSet calls this method to free the record buffer. + Note: Make sure the value of FRecBufSize does not change before all + allocated buffers are freed. } + +procedure TASQLite3BaseQuery.FreeRecordBuffer(var Buffer: PAnsiChar); +begin + DebugEnter('TASQLiteBaseQuery.FreeRecordBuffer'); + try FreeMem(Buffer); //, FRecBufSize+CalcFieldsSize+sizeof(TRecinfo)); + except end; +// Buffer := nil; + DebugLeave('TASQLiteBaseQuery.FreeRecordBuffer'); +end; + +{ This multi-purpose function does 3 jobs. It retrieves data for either + the current, the prior, or the next record. It must return the status + (TGetResult), and raise an exception if DoCheck is True. } + +function TASQLite3BaseQuery.GetRecord(Buffer: PAnsiChar; GetMode: TGetMode; + DoCheck: boolean): TGetResult; +var + ptr : pointer; +begin + DebugEnter('TASQLite3BaseQuery.GetRecord'); +// if Active then CheckBrowseMode; + if (not (FUniDir)) and (FResult.Count < 1) then + Result := grEOF + else + begin + Result := grOK; + case GetMode of + gmNext: + if FUniDir then begin +// ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); +// if ptr <> nil then +// Move(ptr^, Buffer^, MaxStrLen) +// else +// Result := grEOF; + end else begin + if FCurRec >= RecordCount - 1 then + Result := grEOF + else + Inc(FCurRec); + end; + gmPrior: begin + if FUniDir then +// Result := grOK + raise AsgError.Create('operation PRIOR not allowed on unidirectional dataset') + else begin + if FCurRec <= 0 then + Result := grBOF + else + Dec(FCurRec); + end; + end; + gmCurrent: + begin + if (FCurRec < 0) or (FCurRec >= RecordCount) then + Result := grError; + end; + end; + if Result = grOK then + begin + if FUniDir then begin + ptr := Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self); + if ptr <> nil then begin + Move(ptr^, ActiveBuffer^, MaxStrLen); + end else Result := grEOF; + end else begin + ptr := FResult.GetData(FCurRec); + if FResult.Count = 0 then + InternalInitRecord(Buffer) + else + if ptr <> nil then Move(ptr^, Buffer^, MaxStrLen); // albert 17/11/2004 + end; + + with PRecInfo(Buffer + FRecInfoOfs)^ do + begin + BookmarkFlag := bfCurrent; + Bookmark := FResult.GetBookMark(FCurRec); + end; + + if CalcFieldsSize > 0 then + GetCalcFields(Buffer) + + end + else if (Result = grError) and DoCheck then + DatabaseError('No Records'); + end; + DebugLeave('TASQLite3BaseQuery.GetRecord: ' + Buffer); +end; + +{ This routine is called to initialize a record buffer. } + +procedure TASQLite3BaseQuery.InternalInitRecord(Buffer: PAnsiChar); +var + i : integer; + TempT : TDateTimeRec; + Stream : TMemoryStream; +begin + DebugEnter('TASQLite3BaseQuery.InternalInitRecord'); + + for i := 0 to FieldDefs.Count - 1 do + begin + if not (Fields[i].Calculated) then begin + case FieldDefs.Items[i].Datatype of + ftMemo, ftGraphic, ftBlob, ftFmtMemo: begin + Stream := TMemoryStream.Create; + Move(Pointer(Stream), (Buffer + GetFieldOffset(i + 1))^, sizeof(Pointer)); + end; + ftString: PAnsiChar(Buffer + GetFieldOffset(i + 1))^ := #0; + ftBoolean: pBoolean(Buffer + GetFieldOffset(i + 1))^ := false; + ftFloat: pFloat(Buffer + GetFieldOffset(i + 1))^ := 0; + ftSmallInt: pSmallInt(Buffer + GetFieldOffset(i + 1))^ := 0; + ftInteger: pInteger(Buffer + GetFieldOffset(i + 1))^ := integer(nil); + ftCurrency: pFloat(Buffer + GetFieldOffset(i + 1))^ := 0; + ftDate: + begin + TempT := DateTimeToNative(ftDate, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + ftTime: + begin + TempT := DateTimeToNative(ftTime, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + ftDateTime: + begin + TempT := DateTimeToNative(ftDateTime, now); + Move(TempT, (Buffer + GetFieldOffset(i + 1))^, sizeof(TDateTime)); + end; + end; + end; + end; + +// if FMasterSource <> nil then begin +// FMasterSource.DataSet.FieldByName() +// end; + + + DebugLeave('TASQLite3BaseQuery.InternalInitRecord'); +end; + +{ Here we copy the data from the record buffer into a field's buffer. + This function, and SetFieldData, are more complex when supporting + calculated fields, filters, and other more advanced features. + See TBDEDataSet for a more complete example. } + +function TASQLite3BaseQuery.GetFieldData(Field: TField; Buffer: Pointer): boolean; +var +// SrcBuffer : PAnsiChar; + MyBuf : string; + + SrcBuffer : PAnsiChar; +// MasterField : TField; +// EqualPos : Integer; +/// MasterFieldName, DetailFieldName : string; + +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3BaseQuery.GetFieldData'); +{$ENDIF} + if Field.FieldNo > 0 then begin + // load masterfield data if there's a master-detail relationship + // key-data should not be NULL!! + if pos(UpperCase(Field.FieldName), UpperCase(FMasterFields)) > 0 then begin + MasterSource.DataSet.GetFieldData(Field, Buffer); + Result := true; + exit; + end; + +// if FMasterFields <> '' then begin +// EqualPos := Pos('=',FMasterFields); +// DetailFieldName := Copy(FMasterFields,1, EqualPos - 1); +// MasterFieldName := Copy(FMasterFields,EqualPos + 1, Length(FMasterFields) - EqualPos -1); +// if UpperCase(Field.FieldName) = UpperCase(DetailFieldName) then begin +// // locate and get master field by name +// MasterField := MasterSource.DataSet.FieldByName(MasterFieldName); +// MasterSource.DataSet.GetFieldData(MasterField, Buffer); +// Result := true; +// exit; +// end; +// end; + + Result := true; // indicates NotNull + if GetActiveBuffer(SrcBuffer) then begin + if (Assigned(Buffer)) and (Assigned(SrcBuffer)) then begin + Move((SrcBuffer + GetFieldOffset(Field.FieldNo))^, Buffer^, GetFieldSize(Field.FieldNo)); + if Field.DataType = ftString then begin // GPA + MyBuf := PChar(Buffer); +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + Move(Utf8ToAnsi(MyBuf)[1], Buffer^, Length(MyBuf)) // GPA - Warning UTF-8 length can be potentially > Ansi length + else +{$endif} + Move(MyBuf[1], Buffer^, Length(MyBuf)); // GPA - Warning UTF-8 length can be potentially > Ansi length + PAnsiChar(PAnsiChar(Buffer) + GetFieldSize(Field.FieldNo))^ := #0; // dev + end; + Result := true; + exit; + end; + if Assigned(SrcBuffer) then + if (Field.DataType <> ftDateTime) and ((SrcBuffer + GetFieldOffset(Field.FieldNo))^ = #0) then + Result := false + end else begin + if assigned(Buffer) then PAnsiChar(Buffer)^ := #0; + Result := false; + end; + end else begin {calcfields} + Result := GetActiveBuffer(SrcBuffer); + if Result and (State in [dsBrowse, dsEdit, dsInsert, dsCalcFields, dsBlockRead]) then begin + if (Assigned(Buffer)) then + Move((SrcBuffer + GetCalcFieldOffset(Field))^, Buffer^, GetFieldSize(Field)); + end; + end; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3BaseQuery.GetFieldData: ' + PAnsiChar(Buffer)); +{$ENDIF} +end; + +// The next two functions are added to increase compatibility with +// components that require it (like DevExpress) + +function TASQLite3BaseQuery.GetFieldData(FieldNo: integer; Buffer: Pointer): boolean; +begin + Result := GetFieldData(FieldByNumber(FieldNo), Buffer); +end; + +{$IFDEF ASQLITE_D6PLUS} +//function TASQLite3BaseQuery.GetFieldData(Field: TField; Buffer: Pointer; +// NativeFormat: boolean): boolean; +//begin +// Result := GetFieldData(Field, Buffer); +//end; +{$ENDIF} + +{ returns the field data back to callee } + +procedure TASQLite3BaseQuery.SetFieldData(Field: TField; Buffer: Pointer); +var + DestBuffer : PAnsiChar; + MyBuf : string; +begin + DebugEnter('TASQLite3BaseQuery.SetFieldData'); + GetActiveBuffer(DestBuffer); + if (Field.FieldNo > 0) and (Assigned(Buffer)) and (Assigned(DestBuffer)) then + begin + if Field.DataType = ftString then + Begin // GPA + MyBuf := PChar(Buffer); +{$IFDEF ASQLITE_D6PLUS} + if Connection.FUtf8 then + MyBuf := AnsiToUTF8(MyBuf); +{$endif} + if Length(MyBuf)>0 then + Move(MyBuf[1], (DestBuffer + GetFieldOffset(Field.FieldNo))^, Length(MyBuf)+1) // GPA - Warning UTF-8 length can be potentially > Ansi length + else begin + MyBuf := #0; + Move(MyBuf[1], (DestBuffer + GetFieldOffset(Field.FieldNo))^, Length(MyBuf)); // GPA - Warning UTF-8 length can be potentially > Ansi length + end; + End + else + Move(Buffer^, (DestBuffer + GetFieldOffset(Field.FieldNo))^, GetFieldSize(Field.FieldNo)); + end else {fkCalculated, fkLookup} begin + if (State in [dsBrowse, dsEdit, dsInsert, dsCalcFields, dsBlockRead]) then begin + if (Field.FieldNo < 0) and (Assigned(Buffer)) and (Assigned(DestBuffer)) then begin + Move(Buffer^, (CalcBuffer + GetCalcFieldOffset(Field))^, GetFieldSize(Field)); + end; + end; + end; + + if not (State in [dsCalcFields, dsFilter, dsNewValue]) then + DataEvent(deFieldChange, Longint(Field)); + DebugLeave('TASQLite3BaseQuery.SetFieldData'); +end; + +{ Record Navigation / Editing } +{ =========================== } + +{ This method is called by TDataSet.First. Crack behavior is required. + That is we must position to a special place *before* the first record. + Otherwise, we will actually end up on the second record after Resync + is called. } + +procedure TASQLite3BaseQuery.InternalFirst; +begin + DebugEnter('TASQLite3BaseQuery.InternalFirst'); + FCurRec := -1; + DebugLeave('TASQLite3BaseQuery.InternalFirst'); +end; + +{ Again, we position to the crack *after* the last record here. } + +procedure TASQLite3BaseQuery.InternalLast; +begin + DebugEnter('TASQLite3BaseQuery.InternalLast'); + FCurRec := FResult.Count; + DebugLeave('TASQLite3BaseQuery.InternalLast'); +end; + +function TASQLite3BaseQuery.GetLastInsertRow: integer; +begin + if Assigned(Connection) then + result := Connection.SQLite3_LastInsertRow(Connection.DBHandle) + else + result := -1; +end; + +{ This method is called by TDataSet.Post. } + +procedure TASQLite3BaseQuery.InternalPost; +var + ptr : Pointer; +begin + DebugEnter('TASQLite3BaseQuery.InternalPost'); + FSaveChanges := true; + { For inserts, just update the data in the string list } + if State = dsEdit then + begin + if FUniDir then + Connection.SQLite3_GetNextResult(Connection.DBHandle, FStatement, FParams,self) + else begin + ptr := FResult.GetData(FCurrec); + if ptr <> nil then + move(ActiveBuffer^, ptr^, FRecBufSize); // albert 17/11/2004 + end;//2006 + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data } + FResult.Insert(FCurRec, ActiveBuffer, + Connection.SQLite3_LastInsertRow(Connection.DBHandle)); + end; + DebugLeave('TASQLite3BaseQuery.InternalPost'); +end; + +{ This method is similar to InternalPost above, but the operation is always + an insert or append and takes a pointer to a record buffer as well. } + +procedure TASQLite3BaseQuery.InternalAddRecord(Buffer: Pointer; Append: boolean); +begin + DebugEnter('TASQLite3BaseQuery.InternalAddRecord'); + if FReadOnly then + raise AsgError.Create('Cannot write to a read-only dataset'); + + FSaveChanges := true; + if Append then + InternalLast; + Post; + DebugLeave('TASQLite3BaseQuery.InternalAddRecord'); +end; + +{ This method is called by TDataSet.Delete to delete the current record } + +procedure TASQLite3BaseQuery.InternalDelete; +begin + DebugEnter('TASQLite3BaseQuery.InternalDelete'); + FSaveChanges := true; + FResult.Delete(FCurRec); + if FCurRec >= FResult.Count then + Dec(FCurRec); + DebugLeave('TASQLite3BaseQuery.InternalDelete'); +end; + + { Optional Methods } + { ================ } + +{ The following methods are optional. When provided they will allow the + DBGrid and other data aware controls to track the current cursor postion + relative to the number of records in the dataset. Because we are dealing + with a small, static data store (a stringlist), these are very easy to + implement. However, for many data sources (SQL servers), the concept of + record numbers and record counts do not really apply. } + +function TASQLite3BaseQuery.GetRecordCount: longint; +begin + DebugEnter('TASQLite3BaseQuery.GetRecordCount'); + Result := FResult.Count; + DebugLeave('TASQLite3BaseQuery.GetRecordCount ' + IntToStr(Result)); +end; + +function TASQLite3BaseQuery.GetRecNo: longint; +begin + DebugEnter('TASQLite3BaseQuery.GetRecNo'); + UpdateCursorPos; + if (FCurRec = -1) and (RecordCount > 0) then + Result := 1 + else + Result := FCurRec + 1; + NotifySQLiteMasterChanged; //20040819 + DebugLeave('TASQLite3BaseQuery.GetRecNo'); +end; + +procedure TASQLite3BaseQuery.SetRecNo(Value: integer); +begin + DebugEnter('TASQLite3BaseQuery.SetRecNo'); + if (Value >= 0) and (Value < FResult.Count + 2) then // value < resultetc + begin + FCurRec := Value - 1; + Resync([]); + end; + DebugLeave('TASQLite3BaseQuery.SetRecNo'); +end; + +procedure TASQLite3BaseQuery.SetFiltered(Value: Boolean); +begin + inherited; +end; + +procedure TASQLite3BaseQuery.SetFilterText(const Value: string); +begin + DebugEnter('TASQLite3BaseQuery.SetFilterText ' + Value); + if Active then begin + Close; + inherited; + Open; + end else Inherited; + DebugLeave('TASQLite3BaseQuery.SetFilterText'); +end; + +function TASQLite3BaseQuery.SetQueryParams(InStr: string): string; +var + i : integer; + TempParam : string; + ThisDateFormat : string; + OldDateFormat : string; +begin + if FSQLiteDateFormat then + ThisDateFormat := 'yyyy-mm-dd hh:nn:ss.zzz' + else if (FTableDateFormat <> '') then + ThisDateFormat := FTableDateFormat + else + ThisDateFormat := ShortDateFormat; + + for i := 0 to FParams.Count - 1 do begin + if (FParams.Items[i].DataType <> ftBlob) and + (FParams.Items[i].DataType <> ftGraphic) then begin + TempParam := Fparams.Items[i].AsString; + if (TempParam = '') and (FParams.Items[i].bound) then begin + InStr := StringReplace(Instr, '?', 'NULL', []); + end else begin + //Here we'll replace legitimate '?' characters with an unprintable character + TempParam := StringReplace(TempParam, '?', #1, [rfReplaceAll]); + + //Okay, we need to check string dates and times + if FParams[i].DataType = ftDate then begin + end else if FParams[i].DataType = ftTime then begin + end else if FParams[i].DataType = ftDateTime then begin + OldDateFormat := ShortDateFormat; + ShortDateFormat := ThisDateFormat; + TempParam := DateToStr(FParams[i].AsDateTime); + ShortDateFormat := OldDateFormat; + end; + + InStr := StringReplace(Instr, '?', QuotedStr(TempParam), [rfIgnoreCase]); + end; + end else begin // BLOB !! + //Here we'll replace legitimate '?' characters with an unprintable character + InStr := StringReplace(Instr, '?', #2, [rfIgnoreCase]); + end; + end; + //Here we'll restore legitimate '?' characters + InStr := StringReplace(Instr, #1, '?', [rfReplaceAll]); + SetQueryParams := InStr; +end; + +// ============================================================================= TASQLite3 UPDATE SQL + +constructor TASQLite3UpdateSQL.Create(AOWner: TComponent); +begin + DebugEnter('TASQLite3UpdateSQL.Create'); + inherited Create(AOwner); + FInsertSQL := TStringList.Create; + FUpdateSQL := TStringList.Create; + FDeleteSQL := TStringList.Create; + DebugLeave('TASQLite3UpdateSQL.Create'); +end; + +destructor TASQLite3UpdateSQL.Destroy; +begin + DebugEnter('TASQLite3UpdateSQL.Destroy'); + inherited; + if Assigned(FInsertSQL) then + FInsertSQL.Free; + if Assigned(FUpdateSQL) then + FUpdateSQL.Free; + if Assigned(FDeleteSQL) then + FDeleteSQL.Free; + DebugLeave('TASQLite3UpdateSQL.Destroy'); +end; + +procedure TASQLite3UpdateSQL.SetInsertSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetInsertSQL'); + if Assigned(FInsertSQL) then + FInsertSQL.Assign(Value) + else + FInsertSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetInsertSQL'); +end; + +procedure TASQLite3UpdateSQL.SetUpdateSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetUpdateSQL'); + if Assigned(FUpdateSQL) then + FUpdateSQL.Assign(Value) + else + FUpdateSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetUpdateSQL'); +end; + +procedure TASQLite3UpdateSQL.SetDeleteSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3UpdateSQL.SetDeleteSQL'); + if Assigned(FDeleteSQL) then + FDeleteSQL.Assign(Value) + else + FDeleteSQL := Value; + DebugLeave('TASQLite3UpdateSQL.SetDeleteSQL'); +end; +// ============================================================================= TASQLite3 QUERY + +constructor TASQLite3Query.Create(AOwner: TComponent); +begin + DebugEnter('TASQLite3Query.Create'); + inherited Create(AOwner); +// FParams := TParams.Create(Self); + TStringList(FSQL).OnChange := QueryChanged; + DebugLeave('TASQLite3Query.Create'); +end; + +destructor TASQLite3Query.Destroy; +begin + DebugEnter('TASQLite3Query.Destroy'); + + if Assigned(FSQL) then + TStringList(FSQL).OnChange := nil; + + inherited Destroy; + DebugLeave('TASQLite3Query.Destroy'); +end; + +procedure TASQLite3Query.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Query.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then begin + if Assigned(FUpdateSQL) and (AComponent is TASQLite3UpdateSQL) then begin + if TASQLite3UpdateSQL(AComponent) = FUpdateSQL then + FUpdateSQL := nil; + end else + + if Assigned(FConnection) then begin + if (AComponent is TASQLite3DB) and + (TASQLite3Db(AComponent) = FConnection) then begin + Close; + Connection := nil; + end; + end else + + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3Query.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Query.QueryChanged(Sender: TObject); +begin + DebugEnter('TASQLite3Query.QueryChanged'); + FNoResults := false; + Close; + if not FRawSQL then begin + if assigned(FParams) then FParams.Clear; // new + SQLStr := FParams.ParseSQL(SQL.Text, true) + end else SQLStr := SQL.Text; + DebugLeave('TASQLite3Query.QueryChanged'); +end; + +procedure TASQLite3Query.SetSQL(const Value: TStrings); +begin + DebugEnter('TASQLite3Query.SetSQL'); + FNoResults := false; + Close; + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; +// FText := FParams.ParseSQL(SQL.Text, False); + DebugLeave('TASQLite3Query.SetSQL'); +end; + +function TASQLite3Query.GetSQL: TStrings; +begin + DebugEnter('TASQLite3Query.GetSQL'); + GetSQL := FSQL; + DebugLeave('TASQLite3Query.GetSQL'); +end; + +procedure TASQLite3Query.InternalDelete; +var + MySQL : string; + TempSQL : string; + SQLStr : string; // added by Donnie + TheWord : string; + TableId : string; + FieldId : string; + startpos : integer; + vartype : integer; + p : integer; + Blobs : TList; // added by Donnie +label + Ende; +begin + DebugEnter('TASQLite3Query.InternalDelete'); + if FReadOnly then + raise AsgError.Create('Cannot delete from a read-only dataset'); + + if Connection.FConnected then + begin + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + + if not Assigned(FUpdateSQL) then + begin + raise AsgError.Create('Missing TASQLite3UpdateSQL component'); + goto ende; + end; + // MyFieldList := TStringList.Create; + // MyFieldValues := TStringList.Create; + Blobs := TList.Create; + MySQL := FUpdateSQL.FDeleteSQL.Text; + startpos := 1; + + TheWord := GetWord(MySQL, startpos, vartype); // delete + if not SyntaxCheck(TheWord, 'delete') then + goto ende; + + TheWord := GetWord(MySQL, startpos, vartype); // from + if not SyntaxCheck(TheWord, 'from') then + goto ende; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // where + if not SyntaxCheck(TheWord, 'where') then + goto ende; + + SQLStr := 'delete from ' + TableId + ' where '; + TempSQL := Copy(MySQL, startpos, 999); + + p := pos(':', TempSQL); + while p > 0 do + begin + SQLStr := SQLStr + Copy(TempSQL, 1, p - 1); + System.Delete(TempSQL, 1, p); + startpos := 1; + FieldId := GetWord(TempSQL, startpos, vartype); // variable + System.Delete(TempSQL, 1, startpos); // Tzvetan + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString); + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs); + p := pos(':', TempSQL); + end; + SQLStr := SQLStr + Copy(TempSQL, StartPos, 999); + try + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(SQLStr), FParams, self); + if FAutoCommit then + Connection.Commit; + except + if FAutoCommit then begin + Connection.RollBack; + raise; + end; + end; + if Assigned(Blobs) then begin + for p := 0 to Blobs.Count - 1 do + TMemoryStream(Blobs.Items[p]).Free; + Blobs.Free; + end; + inherited InternalDelete; + end; + Ende: + DebugLeave('TASQLite3Query.InternalDelete'); +end; + + //============================================================================== + // This is probabely the most difficult thing about these components. + // To be able to have a live resultset a tupdatequery must be used to + // supply the correct sql on the events. In the internalpost the insert and + // update are handled. The routine will take the given sql and remodel it + // to a workable sql which is executed. Keep in mind that this routine + // is far more difficult then the TASQLite3Table, since the last one is depending + // on a unique rownumber, available in the resultset, which might not be + // available to user queries + // There are several syntaxes allowed: + // + // insert into table * + // this will generate an insert statement for each field and values + // i.e. insert into table a,b,c values :a, :b, :c; + // + // insert into table (a, b, c) values * + // this will generate an insert statement like + // insert into table (a, b, c) values (:a, :b, :c); + // + // insert into table (a, b, c) values (:a, :b, :c); + // insert into table (a, b, c) values (:a, "bvalue", :c) etc. + // + // update table set * where + // this will generate a update for all fields like + // update a=:a, b=:b, c=:c where + // + //============================================================================== + +procedure TASQLite3Query.InternalPost; +var + i : integer; + p : integer; + startpos : integer; + MyFieldList : TStringList; + MyFieldValues : TStringList; + MySQL : string; + TheWord : string; + TempSQL : string; + SQLStr : string; // added by Donnie + TableId : string; + FieldId : string; + varType : integer; + Blobs : TList; // added by Donnie +begin + DebugEnter('TASQLite3Query.InternalPost'); + if FReadOnly then + raise AsgError.Create('Cannot post into a read-only dataset'); + MyFieldList := nil; + MyFieldValues := nil; + try + if not Connection.FConnected then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + if not Assigned(FUpdateSQL) then + begin + DebugLeave('TASQLite3Query.InternalPost Exception'); + raise AsgError.Create('Missing TASQLite3UpdateSQL component'); + end; + + Blobs := TList.Create; + if (State = dsEdit) and (FResult.Count > 0) then + begin + MyFieldList := TStringList.Create; + MyFieldValues := TStringList.Create; + MySQL := FUpdateSQL.FUpdateSQL.Text; + startpos := 1; + TheWord := GetWord(MySQL, startpos, vartype); // update + if not SyntaxCheck(TheWord, 'update') then + exit; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // set or '*' + if TheWord = '*' then + begin + for i := 0 to FieldList.Count - 1 do + begin + MyFieldList.Add(FieldList[i].FieldName); + MyFieldValues.Add(':' + FieldList[i].FieldName); + end; + TheWord := GetWord(MySQL, startpos, vartype); // where + end + else + begin + if not SyntaxCheck(TheWord, 'set') then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + + repeat + TheWord := GetWord(MySQL, startpos, vartype); // fieldname + MyFieldList.Add(TheWord); + + TheWord := GetWord(MySQL, startpos, vartype); // '=' + if not SyntaxCheck(TheWord, '=') then + begin + DebugLeave('TASQLite3Query.InternalPost'); + exit; + end; + TheWord := GetWord(MySQL, startpos, vartype); // 2004-14-09 (rps) ':' or 'where' ---> + if vartype = vtcDelimiter then // <--- + TheWord := GetWord(MySQL, startpos, vartype); // fieldvalue + if TheWord = '*' then + MyFieldValues.Add(':' + MyFieldList[MyFieldList.Count - 1]) + else + MyFieldValues.Add(':' + TheWord); + + TheWord := GetWord(MySQL, startpos, vartype); // , or 'where' + until CompareText(TheWord, 'where') = 0; + end; + + if not SyntaxCheck(TheWord, 'where') then + exit; + + SQLStr := 'update ' + TableId + ' set '; + // for i := 0 to FieldList.Count - 1 do + // typo corrected by Donnie + for i := 0 to MyFieldList.Count - 1 do + begin + // SQLStr := SQLStr + FieldList[i].FieldName + '='; + // typo corrected by Donnie + SQLStr := SQLStr + MyFieldList.Strings[i] + '='; + FieldId := MyFieldValues[i]; + if FieldId[1] = ':' then + begin + System.Delete(FieldId, 1, 1); + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString) + ',' + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs) + ',' + end + else + SQLStr := SQLStr + QuotedStr(FieldId) + ',' + end; + System.Delete(SQLStr, Length(SQLStr), 1); // get rid of ',' + TempSQL := ' where ' + Copy(MySQL, startpos, 999); + + p := pos(':', TempSQL); + while p > 0 do + begin + SQLStr := SQLStr + Copy(TempSQL, 1, p - 1); + System.Delete(TempSQL, 1, p); + startpos := 1; + FieldId := GetWord(TempSQL, startpos, vartype); // variable + System.Delete(TempSQL, 1, startpos); // Tzvetan + // SQLStr := SQLStr + QuotedStr(FieldToStr(FieldByName(FieldId))); + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs); + p := pos(':', TempSQL); + end; + SQLStr := SQLStr + Copy(TempSQL, StartPos, 999); + + // Connection.SQLite3_ExecSQL(SQLStr); + // edited by Donnie + Connection.SQLite3_ExecSQL(SQLStr, Blobs); + inherited InternalPost; // rework internals + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data. Sytax should be: insert into * or + insert into
(field, field) values (field, field) | * + The sql is parsed and a new (valid) sql generated + } + MyFieldList := TStringList.Create; + MyFieldValues := TStringList.Create; + MySQL := FUpdateSQL.FInsertSQL.Text; + startpos := 1; + TheWord := GetWord(MySQL, startpos, vartype); // insert + if not SyntaxCheck(TheWord, 'insert') then + exit; + + TheWord := GetWord(MySQL, startpos, vartype); // into + if not SyntaxCheck(TheWord, 'into') then + exit; + + Tableid := GetWord(MySQL, startpos, vartype); // tablename + + TheWord := GetWord(MySQL, startpos, vartype); // ( or * + if TheWord = '*' then + begin + for i := 0 to FieldList.Count - 1 do + begin + MyFieldList.Add(FieldList[i].FieldName); + MyFieldValues.Add(':' + FieldList[i].FieldName); + end; + end + else if TheWord = '(' then + begin + repeat + TheWord := GetWord(MySQL, startpos, vartype); // fieldname + MyFieldList.Add(TheWord); + TheWord := GetWord(MySQL, startpos, vartype); // ',' or ')' + until theword = ')'; + TheWord := GetWord(MySQL, startpos, vartype); // values + TheWord := GetWord(MySQL, startpos, vartype); // '(' or '*' + if TheWord = '*' then + begin + for i := 0 to MyFieldList.Count - 1 do + MyFieldValues.Add(':' + MyFieldList[i]); + end + else + begin +// 2004-14-09 (rps) original - does not work + repeat + TheWord := GetWord(MySQL, startpos, vartype); // ':' or fieldname + if vartype = vtcDelimiter then begin + TheWord := GetWord(MySQL, startpos, vartype); // fieldname !! + MyFieldValues.Add(':' + TheWord); + end else + MyFieldValues.Add(TheWord); + TheWord := GetWord(MySQL, startpos, vartype); // ',' or ')' + until theword = ')'; + end; + end + else + begin + raise AsgError.Create('SQL macro syntax error on insertsql, expected ( or *'); + end; + + SQLStr := 'insert into ' + TableId + ' ('; + for i := 0 to MyFieldList.Count - 1 do + SQLStr := SQLStr + MyFieldList[i] + ','; + SQLStr[Length(SQLStr)] := ')'; + SQLStr := SQLStr + ' values ('; + for i := 0 to MyFieldList.Count - 1 do + begin + FieldId := MyFieldValues[i]; + if FieldId[1] = ':' then begin + System.Delete(FieldId, 1, 1); + // SQLStr := SQLStr + QuotedStr(FieldByName(FieldId).AsString) + ',' + // edited by Donnie + SQLStr := SQLStr + GetFieldValue(FieldByName(FieldId), Blobs) + ',' + end else begin + if CompareText(FieldId,'null')=0 then + SQLStr := SQLStr + FieldId+',' + else + SQLStr := SQLStr + QuotedStr(FieldId) + ',' + end; + end; + SQLStr[Length(SQLStr)] := ')'; + // Connection.SQLite3_ExecSQL(SQLStr); + // edited by Donnie + Connection.SQLite3_ExecSQL(SQLStr, Blobs); + if FResult.Count = 0 then + Inc(FCurrec); + inherited InternalPost; // rework internals + end; + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + finally + if Assigned(MyFieldList) then MyFieldList.Free; + if Assigned(MyFieldValues) then MyFieldValues.Free; + if Assigned(Blobs) then begin + for i := 0 to Blobs.Count - 1 do + try + TMemoryStream(Blobs.Items[i]).Free; + except + end; + Blobs.Free; + end; + end; + DebugLeave('TASQLite3Query.InternalPost'); +end; + +procedure TASQLite3Query.InternalClose; +begin + DebugEnter('TASQLite3Query.InternalClose'); + FPrepared := ''; + inherited; + DebugLeave('TASQLite3Query.InternalClose'); +end; + +procedure TASQLite3Query.InternalOpen; +//var +// p : integer; +begin + DebugEnter('TASQLite3Query.InternalOpen'); + if Trim(FSQL.Text) = '' then + begin + raise AsgError.Create('no query specified'); + abort; + end; + + if (FMaxResults = 0) and (FStartResult <> 0) then + FMaxResults := -1; + + // SQLStr contains the 'raw' interpreted SQL, with ? as parameterlist + // This string has to be preserved, since it was parsed on entering the sql. + // On close and open (i.e. in case of master-detail) the parsed data still + // must be available + + // We'll prepare the SQL statement into FPrepared. This is also the var + // containing the SQL statement to be executed. + FPrepared := SQLStr; + +// FPrepared := FSql.Text; // 2004-14-09 (rps) changed SqlStr (current) -> FSql.Text (property), + // to bring Close; Open; to work. (Full refresh.) + // this will block parameterized queries to function right (Aducom) + + if (Filtered) and (Filter <> '') then + begin + //in order to let a filter work we use a little trick: + //select * from (my select statement) + FPrepared := 'select * from (' + FPrepared + ') where ' + Filter; + end; + + if FParams.Count > 0 then + FPrepared := SetQueryParams(FPrepared); + + if FMaxResults <> 0 then + FPrepared := FPrepared + ' limit ' + IntToStr(FMaxResults); + if FStartResult <> 0 then + FPrepared := FPrepared + ' offset ' + IntToStr(FStartResult); + inherited; + DebugLeave('TASQLite3Query.InternalOpen'); +end; + + // ============================================================================= + // The master-detail is implemented through the filter object + // in the future perhaps a separate filter object will be used allowing + // to add your own criteria too, but for the time being.. + //============================================================================== + +procedure TASQLite3Query.SQLiteMasterChanged; +var + r, s : string; + m, d : string; + p : integer; + cAnd : string; +begin + DebugEnter('TASQLite3Query.SQLiteMasterChanged'); + Close; + cAnd := ''; + r := FMasterFields; + Filter := ''; + Filtered := false; + while r <> '' do + begin // build the filter sql syntax + p := pos(';', r); + if p = 0 then + begin + if Trim(r) <> '' then + s := r; + r := ''; + end + else + begin + s := Trim(Copy(r, 1, p - 1)); + System.Delete(r, 1, p); + end; + + p := pos('=', s); + if p = 0 then + begin + raise AsgError.Create('Syntax error: Masterfields not build of a=b;... pairs'); + end + else + begin + d := copy(s, 1, p - 1); + m := copy(s, p + 1, 99); + end; +// Filter := Filter + cAnd + d + '=' + FMasterSource.DataSet.FieldByName(m).AsString; + Filter := Filter + cAnd + d + '=' + QuotedStr(FMasterSource.DataSet.FieldByName(m).AsString) ; + cAnd := ' and '; + end; + if (Filter <> '') and (Active) then begin + filtered := true; + Open; + end; + DebugLeave('TASQLite3Query.SQLiteMasterChanged'); +end; + + //============================================================================== + // execsql is used for sql statements which do not require cursors. For this + // reason the fnoresults is set, to prevent building a result set + //============================================================================== + +procedure TASQLite3BaseQuery.ExecSQL; +begin + DebugEnter('TASQLite3BaseQuery.ExecSQL'); + FNoResults := true; + Close; + if FAutoCommit then + begin + Connection.ExecStartTransaction(FTransactionType); + Open; + try + Connection.Commit + except + Connection.RollBack; + raise; + end; + end + else + Open; + DebugLeave('TASQLite3BaseQuery.ExecSQL'); +end; + +procedure TASQLite3BaseQuery.SetParamsList(Value: TParams); +begin + DebugEnter('TASQLite3BaseQuery.SetParamsList'); + FParams.AssignValues(Value); + DebugLeave('TASQLite3BaseQuery.SetParamsList'); +end; + +function TASQLite3BaseQuery.GetParamsCount: word; +begin + DebugEnter('TASQLite3BaseQuery.GetParamsCount'); + Result := FParams.Count; + DebugLeave('TASQLite3BaseQuery.GetParamsCount'); +end; + +procedure TASQLite3Table.SetFOrderBy(OrderBy : string); +begin + if FOrderBy <> OrderBy then begin + Close; + FOrderBy := OrderBy; + end; +end; + +procedure TASQLite3Table.SetFTableName(TableName : string); +begin + Close; + FTableName := TableName; +end; + +procedure TASQLite3Table.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Table.Notification'); +{$ENDIF} +// Application.ProcessMessages; + if Assigned(AComponent) then + begin + if (Operation = opRemove) then + begin + if (AComponent is TASQLite3DB) and Assigned(FConnection) then + begin + if TASQLite3DB(AComponent) = FConnection then begin + Close; + FConnection := nil; + end; + end else + + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3Table.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Table.InternalOpen; +begin + DebugEnter('TASQLite3Table.InternalOpen'); + + if FTableName = '' then + begin + raise AsgError.Create('no table specified'); + exit; + end; + FSQL.Clear; + FSQL.Add('select *, rowid as rowid from ' + TableName); + if Filtered then + if Filter <> '' then + FSQL.Add(' where ' + Filter); + if (FMaxResults = 0) and (FStartResult <> 0) then + FMaxResults := -1; + if FMaxResults <> 0 then + FSQL.Add(' limit ' + IntToStr(FMaxResults)); + if FStartResult <> 0 then + FSQL.Add(' offset ' + IntToStr(FStartResult)); + if FOrderBy <> '' then + FSQL.Add(' order by ('+FOrderBy+')'); + SQLStr := FSQL.Text; + FPrepared := SQLStr; + inherited; + DebugLeave('TASQLite3Table.InternalOpen'); +end; + +procedure TASQLite3Table.SQLiteMasterChanged; +var + r, s : string; + m, d : string; + p : integer; + cAnd : string; +begin + DebugEnter('TASQLite3Table.SQLiteMasterChanged'); + Close; + cAnd := ''; + r := FMasterFields; + Filter := ''; + while r <> '' do + begin + p := pos(';', r); + if p = 0 then + begin + if Trim(r) <> '' then + s := r; + r := ''; + end + else + begin + s := Trim(Copy(r, 1, p - 1)); + System.Delete(r, 1, p); + end; + + p := pos('=', s); + if p = 0 then + begin + raise AsgError.Create('Syntax error: Masterfields not build of a=b;... pairs'); + end + else + begin + d := copy(s, 1, p - 1); + m := copy(s, p + 1, 99); + end; +// Filter := Filter + cAnd + d + '=' + FMasterSource.DataSet.FieldByName(m).AsString; + Filter := Filter + cAnd + d + '=' + QuotedStr(FMasterSource.DataSet.FieldByName(m).AsString) ; + cAnd := ' and '; + end; + if Filter <> '' then + filtered := true; + Open; + DebugLeave('TASQLite3Table.SQLiteMasterChanged'); +end; + +procedure TASQLite3Table.InternalDelete; +begin + DebugEnter('TASQLite3Table.InternalDelete'); + if FReadOnly then + raise AsgError.Create('Cannot delete from a read-only dataset'); + + if not Connection.FConnected then + exit; + if FAutoCommit then + Connection.ExecStartTransaction(FTransactionType); + + SQLStr := ''; + CurrentRowId := FResult.GetRowId(FCurRec); + FSQL.Clear; + FSQL.Add('delete from ' + Tablename + ' where rowid=' + QuotedStr(IntToStr(CurrentRowId))); +// SQLStr := StringReplace(FSQL.Text, crlf, #10, [rfReplaceAll, rfIgnoreCase]); // albert + SQLStr := FSQL.Text; + Connection.SQLite3_execute(Connection.DBHandle, PAnsiChar(SQLStr), FParams, self); + + inherited InternalDelete; + + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + DebugLeave('TASQLite3Table.InternalDelete'); +end; + +procedure TASQLite3Table.InternalPost; +var + i : integer; + n: Integer; + ThisDateFormat, + tmpMasterDetail, MasterField, chDelim: string; + slDetail, slValues: TStringList; + lsBlobs: TList; //GPA + M:TMemoryStream; //GPA + + // this function will return the fielvalue of an indicated fieldbyordinalnumber + // if the fieldtype is tdatetime it is transfered to the right date notation as + // indicated by jpierce. + + function GetFieldValue(const AField: TField): string; // DI + begin // DI + if AField.DataType = ftDateTime then // DI + GetFieldValue := QuotedStr(FormatDateTime(ThisDateFormat, FieldByName(AField.FieldName).AsDateTime)) // DI + else if (AField.DataType = ftBlob) or (AField.DataType = ftMemo) or (AField.DataType = ftFmtMemo) or (AField.DataType = ftGraphic) then //GPA + begin //GPA + M:=TMemoryStream.Create; //GPA + TBlobField(FieldByName(AField.FieldName)).SaveToStream(M); + GetFieldValue := #2+IntToStr(1+lsBlobs.Add(Pointer(M))) //GPA + end + else + GetFieldValue := QuotedStr(FieldByName(AField.FieldName).AsString); // DI + end; // DI + +var + f: TField; // DI + OldDecimalSeparator: ansiChar; // DI +begin + DebugEnter('TASQLite3Table.InternalPost'); + + if FReadOnly then + raise AsgError.Create('Cannot post into a read-only dataset'); + + // determine datetime style of dataset (if any) + + if FSQLiteDateFormat then + ThisDateFormat := 'yyyy-mm-dd hh:nn:ss.zzz' + else if (FTableDateFormat <> '') then + ThisDateFormat := FTableDateFormat + else + ThisDateFormat := ShortDateFormat; + + if not Connection.FConnected then Exit; + if FAutoCommit then Connection.StartTransaction; + + lsBlobs := TList.Create; //GPA + OldDecimalSeparator := DecimalSeparator; // DI + try // DI + DecimalSeparator := '.'; // DI: Force Delphi's DecimalSeparator to SQL style syntax. + + if (State = dsEdit) and (FResult.Count > 0) then + begin + CurrentRowId := FResult.GetRowId(FCurRec); + FSQL.Clear; + FSQL.Add('update ' + TableName + ' set '); + SQLStr := ''; + for i := 0 to FieldList.Count - 1 do begin + f := FieldList[i]; // DI + if not (f.Calculated or f.Lookup) then // DI + SQLStr := SQLStr + f.FieldName + '=' + GetFieldValue(f) + ','; // DI + end; + SQLStr[Length(SQLStr)] := ' '; + FSQL.Add(SQLStr); + FSQL.Add(' where rowid=' + QuotedStr(IntToStr(CurrentRowId))); + + SQLStr := FSQL.Text; // DI + // DI SQLStr := StringReplace(FSQL.Text, CRLF, #10, [rfReplaceAll, rfIgnoreCase]); + + Connection.SQLite3_ExecSQL(SQLStr,lsBlobs); + inherited InternalPost; // rework internals + end + else + begin + { If inserting (or appending), increment the bookmark counter and + store the data } + FSQL.Clear; + FSQL.Add('insert into ' + TableName + ' ('); + SQLStr := ''; + + for i := 0 to FieldList.Count - 1 do begin + if not (FieldList[i].Calculated or FieldList[i].Lookup) then // aducom + SQLStr := SQLStr + FieldList[i].FieldName + ','; + end; + + SQLStr[Length(SQLStr)] := ')'; + SQLStr := SQLStr + ' values ('; + FSQL.Add(SQLStr); + SQLStr := ''; + + slDetail := TStringList.Create; + slValues := TStringList.Create; + i := 0; chDelim := ';'; + if FMasterSource <> nil then + begin + while i < Length(FMasterFields) do + begin + tmpMasterDetail := GetWordByDelim(FMasterFields, i, chDelim); + n := Pos('=', tmpMasterDetail); + if n <> 0 then + begin + slDetail.Add(Copy(tmpMasterDetail, 1, n - 1)); + MasterField := Copy(tmpMasterDetail, n + 1, Length(tmpMasterDetail) - n); + slValues.Add(FMasterSource.DataSet.FieldByName(MasterField).AsString); + end; + end; + end; + + if (FPrimaryAutoInc) and (FieldDefs[0].DataType = ftInteger) then begin + SQLStr := SQLStr + 'null,'; + n := 1; // aducom + end else begin // aducom + n := 0; // aducom + end; // aducom + + for i := n to FieldList.Count - 1 do // aducom + begin // DI + f := FieldList[i]; + if not (f.Calculated or f.Lookup) then // DI + if slDetail.Find(f.FieldName, n) then // DI + SQLStr := SQLStr + QuotedStr(slValues.Strings[n]) + ',' + else + SQLStr := SQLStr + GetFieldValue(f) + ','; // DI + end; // DI + + slDetail.Free; + slValues.Free; + + SQLStr[Length(SQLStr)] := ')'; + FSQL.Add(SQLStr); + + SQLStr := FSQL.Text; // DI + // DI SQLStr := StringReplace(FSQL.Text, CRLF, #10, [rfReplaceAll, rfIgnoreCase]); + + Connection.SQLite3_ExecSQL(SQLStr, lsBlobs); + if FPrimaryAutoInc then + if FieldDefs[0].DataType = ftInteger then + FieldByName(FieldList[0].FieldName).AsInteger := + Connection.SQLite3_LastInsertRow(Connection.DBHandle); + if FResult.Count = 0 then + Inc(FCurRec); + inherited InternalPost; // rework internals + end; + + finally // DI + DecimalSeparator := OldDecimalSeparator; // DI + For I:=0 to lsBlobs.Count-1 do begin // GPA + M:=TMemoryStream(lsBlobs.Items[I]); // GPA + M.Free; // GPA + end; // GPA + lsBlobs.Free; // GPA + + end; // DI + + if FAutoCommit then + begin + try + Connection.Commit; + except + Connection.RollBack; + raise; + end; + end; + DebugLeave('TASQLite3Table.InternalPost'); +end; + +// Blobfields in SQLite are in fact CLOB fields. However, since it is a large +// chunk of data for all types the ftBlob is used. Keep in mind that blobs are +// stored separately of TResult. Within the result structure only the memory +// handle of the blob is stored. + +constructor TASQLite3BlobStream.Create(Field: TBlobField; Mode: TBlobStreamMode); +begin +// inherited Create; + FField := Field; + FMode := Mode; + FDataSet := FField.DataSet as TASQLite3BaseQuery; + if Mode <> bmWrite then + LoadBlobData; +end; + +destructor TASQLite3BlobStream.Destroy; +begin + DebugEnter('TASQLite3BlobStream.Destroy'); + if FModified then + SaveBlobData; + inherited Destroy; +end; + +function TASQLite3BlobStream.Read(var Buffer; Count: Longint): Longint; +begin + DebugEnter('ASQLiteBlobStream.Read'); + Result := inherited Read(Buffer, Count); + FOpened := True; +end; + +function TASQLite3BlobStream.Write(const Buffer; Count: Longint): Longint; +begin + DebugEnter('ASQLiteBlobStream.Write'); + Result := inherited Write(Buffer, Count); + FModified := True; + FDataSet.SetModified(true); +end; + +procedure TASQLite3BlobStream.LoadBlobData; +var + Stream : TMemoryStream; + Offset : Integer; + RecBuffer : PAnsiChar; +begin + DebugEnter('ASQLiteBlobStream.LoadBlobData'); + Self.Size := 0; + FDataset.GetActiveBuffer(RecBuffer); + +// recbuffer := nil; + + if RecBuffer <> nil then + begin + Offset := FDataset.GetFieldOffset(FField.FieldNo); + Move((RecBuffer + Offset)^, Pointer(Stream), sizeof(Pointer)); + Self.CopyFrom(Stream, 0); + end; + Position := 0; +end; + +procedure TASQLite3BlobStream.SaveBlobData; +var + Stream : TMemoryStream; + Offset : Integer; + RecBuffer : PAnsiChar; +begin + DebugEnter('ASQLiteBlobStream.SaveBlobData'); + FDataset.GetActiveBuffer(RecBuffer); + if RecBuffer <> nil then + begin + Offset := FDataset.GetFieldOffset(FField.FieldNo); + Move((RecBuffer + Offset)^, Pointer(Stream), sizeof(Pointer)); + Stream.Size := 0; + Stream.CopyFrom(Self, 0); + Stream.Position := 0; + end; +end; + +// Inline sql can be used to store sqlstatements outside of the pascal source. +// it prevents large 'sql.add' rows. Also it can be used to generate an in-memory +// database structure if needed + +constructor TASQLite3InlineSQL.Create; +begin + inherited; + FSQL := TStringList.Create; +end; + +destructor TASQLite3InlineSQL.Destroy; +begin + if Assigned(FSQL) then FSQL.Free; + inherited; +end; + +procedure TASQLite3InlineSQL.SetSQL(const Value: TStrings); +begin + if Assigned(FSQL) then + FSQL.Assign(Value) + else + FSQL := Value; +end; + +function TASQLite3InlineSQL.GetSQL: TStrings; +begin + GetSQL := FSQL; +end; + +// save resultset as text, html or xml. Depending on type the following +// will happen: +// +// text: all rows will be output, separated by the given separation symbol +// xml: all rows will be output, tags are the fieldnames +// +// +// fieldvalue +// .... +// +// html: a table will be generated with the given classnames (if available) + +constructor TASQLite3Output.Create; +begin + inherited; + FOutput := TStringList.Create; +end; + +destructor TASQLite3Output.Destroy; +begin + if Assigned(FOutput) then FOutput.Free; + inherited; +end; + +procedure TASQLite3Output.SetFActive(Active: boolean); +begin + FActive := Active; + if FActive = false then begin + end else begin + if Assigned(FDataSource) then begin + if Assigned(FDataSource.DataSet) then begin + Execute(FDataSource.DataSet); + end else raise AsgError.Create('Missing Datasource.Dataset'); + end else raise AsgError.Create('Missing Datasource'); + end; +end; + +procedure TASQLite3Output.SetOutput(const Value: TStrings); +begin + if Assigned(FOutput) then + FOutput.Assign(Value) + else + FOutput := Value; +end; + +function TASQLite3Output.GetOutput: TStrings; +begin + GetOutput := FOutput; +end; + +procedure TASQLite3Output.Notification(AComponent: TComponent; Operation: TOperation); +begin +{$IFDEF DEBUG_VERY_LOUD} + DebugEnter('TASQLite3Output.Notification'); +{$ENDIF} + if Assigned(AComponent) then begin + if (Operation = opRemove) then begin + if (AComponent is TDataSource) then begin + if Assigned(FDataSource) then begin + if TDataSource(AComponent) = FDataSource then + FDataSource := nil; + end; + end + end; + end; + inherited; +{$IFDEF DEBUG_VERY_LOUD} + DebugLeave('TASQLite3DB.Notification'); +{$ENDIF} +end; + +procedure TASQLite3Output.Execute(MyDataSet: TDataSet); +const eXML = 0; + eHTML = 1; + eTXT = 2; +var FType : integer; + i : integer; + Line : string; + Sep : string; +// Indent : integer; +begin + if Assigned(MyDataset) then begin + if MyDataSet.Active = false then MyDataSet.Open; + Output.Clear; + FType := ETxt; + Line := ''; + + if CompareText(FOutputType[1], 'X') = 0 then begin + FType := eXML; + Line := Line + '
' + #10; + end else if CompareText(FOutputType[1], 'H') = 0 then begin + FType := eHTML; + Line := Line + '' + #10 + '' + #10 + + 'Table ' + MyDataSet.Name + '' + #10 + + '' + #10 + + '
' + #10 + + '' + #10; + end else if CompareText(FOutputType[1], 'T') = 0 then begin + FType := eTXT; + end; + + Sep := ''; + + for i := 0 to MyDataSet.FieldDefs.Count - 1 do begin + case FType of + eXML: begin + end; + eHTML: begin + Line := Line + ''; + end; + eTXT: begin + Line := Line + Sep + MyDataSet.FieldDefs[i].Name; + end; + end; + Sep := FSeparator; + end; + + Output.Add(Line); Line := ''; Sep := ''; + MyDataSet.First; + +// Indent := 0; + while not MyDataSet.Eof do begin + + case FType of + eXML: Line := Line + ' ' + #10; + eHTML: Line := Line + '' + #10; + end; + + for i := 0 to MyDataSet.FieldDefs.Count - 1 do begin + case FType of + eXML: begin + Line := Line + ' <' + MyDataSet.FieldDefs[i].Name + '>' + + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString + + '' + #10; + end; + eHTML: begin + Line := Line + ''; + end; + eTXT: begin + Line := Line + Sep + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString; + end; + end; + Sep := FSeparator; + end; + + case FType of + eXML: Line := Line + ' ' + #10; + eHTML: Line := Line + '' + #10; + end; + + Output.Add(Line); Line := ''; Sep := ''; + MyDataSet.Next; + end; + + case FType of + eXML: Line := Line + '
' + MyDataSet.FieldDefs[i].Name + '
' + MyDataSet.FieldByName(MyDataSet.FieldDefs[i].Name).AsString + '
' + #10; + eHTML: Line := Line + '' + #10 + '' + #10 + '' + #10; + end; + Output.Add(Line); + end; +end; + +{$IFDEF IPROVIDER} +procedure TASQLite3BaseQuery.PSEndTransaction(Commit: Boolean); +begin + // qui non sono molto sicuro... + if Assigned(Connection) then + if Commit then + Connection.Commit + else + Connection.RollBack; +end; + +procedure TASQLite3BaseQuery.PSExecute; +begin + UniDirectional := true; + ExecSQL; +end; + +function TASQLite3BaseQuery.PSExecuteStatement(const ASQL: string; + AParams: TParams; ResultSet: Pointer): Integer; +var + AsqlQry : TASQLite3BaseQuery; +begin + if Assigned(ResultSet) then + begin + TDataSet(ResultSet^) := TASQLite3Query.Create(nil); +{$IFDEF ASQLITE_D6PLUS} + TASQlite3Query(ResultSet^).SetUniDirectional(true);// := true; // just store data in provider. +{$endif} + with TASQLite3BaseQuery(ResultSet^) do begin + Connection := self.Connection; + Params.Assign(AParams); + FPrepared := ASql; + if FParams.Count > 0 then + FPrepared := SetQueryParams(FPrepared); + Open; + Result := Connection.RowsAffected; + end; + end + else + begin + AsqlQry := TASQLite3BaseQuery.Create(nil); + try + with AsqlQry do begin + Connection := self.Connection; + FPrepared := ASql; + FParams.Assign(AParams); + if FParams.Count > 0 then + FPrepared := SetQueryParams(AsqlQry.FPrepared); + ExecSQL; + Result := Connection.RowsAffected; + end; + finally + AsqlQry.Free; + end; + end; +end; + +function TASQLite3BaseQuery.PSGetParams: TParams; +begin + Result := Params; +end; + +function TASQLite3BaseQuery.PSGetQuoteChar: string; +begin + Result := '"'; +end; + +function TASQLite3BaseQuery.PSGetTableName: string; +begin + Result := GetTableNameFromSQL(FSQL.Text); +end; + +function TASQLite3BaseQuery.PSInTransaction: Boolean; +begin + Result := Assigned(Connection); +end; + +function TASQLite3BaseQuery.PSIsSQLBased: Boolean; +begin + Result := True; +end; + +function TASQLite3BaseQuery.PSIsSQLSupported: Boolean; +begin + Result := True; +end; + +procedure TASQLite3BaseQuery.PSSetCommandText(const CommandText: string); +begin + if CommandText <> '' then begin + FSQL.Text := CommandText; + FPrepared := CommandText; + end; +end; + +procedure TASQLite3BaseQuery.PSSetParams(AParams: TParams); +begin + if AParams.Count <> 0 then + Params.Assign(AParams); + Close; +end; + +procedure TASQLite3BaseQuery.PSStartTransaction; +begin + StartTransaction; +end; + +procedure TASQLite3BaseQuery.PSReset; +begin + if Active then + begin + Close; + Open; + end; +end; + +function TASQLite3BaseQuery.PSGetUpdateException(e: Exception; Prev: EUpdateError): EUpdateError; +var + PrevErr : Integer; +begin + // Generates an EUpdateError object based on another exception object. + if e is ASGError then begin + if Prev = nil then + PrevErr := Prev.errorCode + else + PrevErr := 0; + with ASGError(e) do + Result := EUpdateError.Create(e.Message, '', -1, PrevErr, e); + end else + Result := EUpdateError.Create(e.Message, '', -1, -1, e); +end; + +function TASQLite3BaseQuery.PSUpdateRecord(UpdateKind: TUpdateKind; Delta: TDataSet): Boolean; +begin + // OnUpdateRecord is not supported + Result := False; +end; + +function TASQlite3BaseQuery.PSGetKeyFields: string; +var + i : integer; +begin + Result := ''; + for i := 0 to (Fields.Count - 1) do begin + if pfInKey in Fields[i].ProviderFlags then begin + if Result <> '' then + Result := Result + ';'; + Result := Result + Fields[i].FieldName; + end; + end; +end; + +{$ENDIF} +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc new file mode 100644 index 0000000..bbd5e3b --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/asqlite_def.inc @@ -0,0 +1,99 @@ +{ + +Aducom Software SQLite components +Copyright (C) 2003-2006 by Aducom Software +Albert Drent +a.drent@aducom.com +for questions please register on the forum on www.aducom.com/sqlite +} + +{$IFDEF VER125}{C4}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER110}{C3}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER93}{C1}{$B-}{$X+}{$T-}{$H+}{$ENDIF} +{$IFDEF VER180} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {$DEFINE ASQLite_D2005PLUS} + {$DEFINE ASQLite_D2006PLUS} + {DELPHI10} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER170} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {$DEFINE ASQLite_D2005PLUS} + {DELPHI9} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER150} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {$DEFINE ASQLite_D7PLUS} + {DELPHI7} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER140} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {$DEFINE ASQLite_D6PLUS} + {DELPHI6} + {$B-}{$X+}{$T-}{$H+} + {$DEFINE ASQLite_DYNARRAY} +{$ENDIF} +{$IFDEF VER130} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {$DEFINE ASQLite_D5PLUS} + {DELPHI5} + {$DEFINE ASQLite_DYNARRAY} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER120} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_D4PLUS} + {DELPHI4} + {$DEFINE ASQLite_DYNARRAY} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER100} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_D3PLUS} + {$DEFINE ASQLite_NOINT64} + {DELPHI3} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} +{$IFDEF VER90} + {$DEFINE ASQLite_D2PLUS} + {$DEFINE ASQLite_NOINT64} + {$DEFINE ASQLite_NOWIDESTRING} + {DELPHI2} + {$B-}{$X+}{$T-}{$H+} +{$ENDIF} + +{$IFDEF LINUX}{KYLIX}{$DEFINE CLX}{$ENDIF} +{$IFDEF FPC}{$H+}{$MODE DELPHI}{$ENDIF} +{$IFDEF ASQLite_D4PLUS}{$DEFINE ASQLite_HAVEVARIANT}{$ENDIF} +{$R-}{$Q-} + +{$IFDEF CLX} +{$DEFINE ASQLite_NOIDISPATCH} // not implemented +{$ENDIF} + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas new file mode 100644 index 0000000..3ee7b35 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAADODriver.pas @@ -0,0 +1,1795 @@ +unit uDAADODriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_ADODriver_Glyphs.res} + +// with included option, you can receive errors like +// Access violation at address 6BD7297F in module 'msado15.dll'. Read of address 00000068. +{.$DEFINE ADOMONITOR_SHOWPARAMVALUES} + +interface + +uses Windows, Classes, DB, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, ADODB, + uDAInterfacesEx, uDAUtils, uDAOracleInterfaces; + +type { TDAADODriver } + TDAADODriver = class(TDADriverReference) + end; + TDAEADODriver = class; + + TDAADOMonitor = class + private + FDriver: TDAEADODriver; + FEnabled: Boolean; + FOnCallback: TDALogTraceEvent; + FTraceFlags: TDATraceOptions; + procedure SetEnabled(const Value: Boolean); + procedure SetTraceFlags(const Value: TDATraceOptions); + procedure SetOnCallback(const Value: TDALogTraceEvent); + procedure ADOConnectionBeginTransComplete(Connection: TADOConnection; + TransactionLevel: Integer; const Error: Error; + var EventStatus: TEventStatus); + procedure ADOConnectionCommitTransComplete(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionConnectComplete(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionExecuteComplete(Connection: TADOConnection; + RecordsAffected: Integer; const Error: Error; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); + procedure ADOConnectionInfoMessage(Connection: TADOConnection; + const Error: Error; var EventStatus: TEventStatus); + procedure ADOConnectionRollbackTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); + procedure ADOConnectionDisconnect(Connection: TADOConnection; + var EventStatus: TEventStatus); + procedure ADOConnectionWillConnect(Connection: TADOConnection; + var ConnectionString, UserID, Password: WideString; + var ConnectOptions: TConnectOption; var EventStatus: TEventStatus); + procedure ADOConnectionWillExecute(Connection: TADOConnection; + var CommandText: WideString; var CursorType: TCursorType; + var LockType: TADOLockType; var CommandType: TCommandType; + var ExecuteOptions: TExecuteOptions; var EventStatus: TEventStatus; + const Command: _Command; const Recordset: _Recordset); + public + constructor Create(ADriver: TDAEADODriver); + procedure ReAssignEvents; + procedure AssignEvents(AConnection:TADOConnection); + procedure UnAssignEvents(AConnection:TADOConnection); + property Enabled : Boolean read FEnabled write SetEnabled; + property TraceFlags: TDATraceOptions read FTraceFlags write SetTraceFlags; + property OnCallback: TDALogTraceEvent read FOnCallback write SetOnCallback; + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAEDriver, IDADriver40) + private + FConnectionList: TThreadList; + FMonitor: TDAADOMonitor; + protected + procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + procedure RegisterConnection(AConnection: TADOConnection); + procedure UnregisterConnection(AConnection: TADOConnection); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string;override; safecall; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + + { TDAEADOConnection } + TDAEADOConnection = class(TDAEConnection, + IDAADOConnection, IDAConnectionModelling, IDACanQueryDatabaseNames,IDAFileBasedDatabase, + IDAUseGenerators,IDAUseGenerators2,IDAOracleConnection) + private + fProviderName: string; + fSchemaEnabled: Boolean; + fProviderType: TDAOleDBProviderType; + fADOConnection: TADOConnection; + fQuery_CursorType: TCursorType; + fQuery_CursorLocation: TCursorLocation; + fQuery_ADOLockType: TADOLockType; + procedure GetViewOrTableNames(const aType: string; const aSystemTables: boolean; List: IROStrings); + function CreateCompatibleQuery: IDADataset; + + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + + function GetQuoteChars: TDAQuoteCharArray; override; + function isAlive: Boolean; override; safecall; + + // IADOConnection + function GetProviderName: string; safecall; + function GetProviderType: TDAOleDBProviderType; safecall; + function GetCommandTimeout: Integer; safecall; + procedure SetCommandTimeout(const Value: Integer); safecall; + + // IDAConnectionModelling + function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; safecall; + procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); safecall; + function FieldToDeclaration(aField: TDAField): string; safecall; + + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + function GetSPSelectSyntax(HasArguments: Boolean): String; override; safecall; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + { IDAUseGenerators } + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + { IDAUseGenerators2 } + function GetNextAutoinc2(const GeneratorName: string): variant; safecall; + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + destructor Destroy; override; + property SchemaEnabled: Boolean read fSchemaEnabled write fSchemaEnabled; + end; + + { TDAEADOQuery } + TDAEADOQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + + + // IDAMustSetParams + procedure SetParamValues(Params: TDAParamCollection); override;safecall; + procedure RefreshParams; override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override;safecall; + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + + // IDAMustSetParams + procedure SetParamValues(Params: TDAParamCollection); override;safecall; + procedure GetParamValues(Params: TDAParamCollection); override;safecall; + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, ADOInt, uDAMacroProcessors, + Math, uDAHelpers, uROBinaryHelpers, uDAPostgresInterfaces; + +const + Default_CursorType = ctOpenForwardOnly; + Default_CursorLocation = clUseServer; + Default_ADOLockType = ltReadOnly; + +const + TConnectOptionStr: array[TConnectOption] of string = ('coConnectUnspecified', 'coAsyncConnect'); + TCursorLocationStr: array[TCursorLocation] of string = ('clUseServer', 'clUseClient'); + TCursorTypeStr: array[TCursorType] of string = ('ctUnspecified', 'ctOpenForwardOnly', 'ctKeyset', 'ctDynamic','ctStatic'); + TEventStatusStr: array[TEventStatus] of string = ('esOK', 'esErrorsOccured', 'esCantDeny', 'esCancel', 'esUnwantedEvent'); + TADOLockTypeStr: array[TADOLockType] of string = ('ltUnspecified', 'ltReadOnly', 'ltPessimistic', 'ltOptimistic', 'ltBatchOptimistic'); + TCommandTypeStr: array[TCommandType] of string = ('cmdUnknown', 'cmdText', 'cmdTable', 'cmdStoredProc', 'cmdFile', 'cmdTableDirect'); + TExecuteOptionStr: array[TExecuteOption] of string = ('eoAsyncExecute', 'eoAsyncFetch', 'eoAsyncFetchNonBlocking','eoExecuteNoRecords'); + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAADODriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +type + TDecimalVariant = packed record + VarType: TVarType; + scale: Byte; + sign: Byte; + Hi32: Cardinal; + Lo32: Cardinal; + Mid32: Cardinal; + Dummy: Cardinal; + end; + +function DecimalToInt64(const V: Variant): variant; +var + vData: TDecimalVariant absolute V; +begin + if VarIsNull(v) or VarIsEmpty(v) then + VarClear(Result) + else if (vData.VarType = 14) and (vData.scale = 0) and (vData.Hi32 = 0) then begin + Result := Int64(vData.Lo32) or (Int64(vData.Mid32) shl 32); + if vData.sign <> 0 then result := -Result; + end else result := v; +end; + +function Int64ToDecimal(Data: Variant): Variant; +var + vd: TDecimalVariant absolute Result; + lint64: int64; +begin + VarClear(Result); + if VarIsNull(Data) or VarIsEmpty(Data) then Exit; + lint64 := Data; + vd.scale := 0; + if lint64 < 0 then begin + vd.Sign := 128; + lint64 := -lint64; + end else + vd.sign := 0; + vd.Hi32 := 0; + vd.Mid32 := int64(lint64 shr 32); + vd.Lo32 := lint64; + vd.VarType := 14; +end; + + +{ TDAEADOConnection } + +procedure TDAEADOConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + lConnectionString: string; + i: Integer; + sName,sValue: string; +begin + inherited; + + with aConnStrParser do begin + lConnectionString := ''; + if AuxDriver <> '' then lConnectionString := lConnectionString + 'Provider=' + AuxDriver + ';' else + raise EDADriverException.Create('No aux driver specified for ADO connection'); + + fProviderName := AuxDriver; + fProviderType := OleDBDriverIdToOleDBProviderType(fProviderName); + + if (Self.UserID <> '') then + lConnectionString := lConnectionString + 'User ID=' + Self.UserID + ';' + else if (UserID <> '') then + lConnectionString := lConnectionString + 'User ID=' + UserID + ';'; + + if (Self.Password <> '') then + lConnectionString := lConnectionString + 'Password=' + Self.Password + ';' + else if (Password <> '') then + lConnectionString := lConnectionString + 'Password=' + Password + ';'; + + if fProviderType = oledb_Jet then begin + lConnectionString := lConnectionString + 'Data Source=' + Database+';'; + end else begin + if Database <> '' then begin + if fProviderType = oledb_Postgresql then + lConnectionString := lConnectionString + 'Location=' + Database + ';' + else + lConnectionString := lConnectionString + 'Initial Catalog=' + Database + ';'; + end; + if Server <> '' then lConnectionString := lConnectionString + 'Data Source=' + Server + ';'; + + if fProviderType <> oledb_Postgresql then + lConnectionString := lConnectionString + 'OLE DB SERVICES=-2;'; + end; + fSchemaEnabled := false; + for i := 0 to AuxParamsCount -1 do + begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if AnsiSameText('SCHEMAS',sName) then + fSchemaEnabled := sValue = '1' + else if AnsiSameText(sName, 'CursorLocation') then begin + if AnsiSameText('clUseServer',sValue) then + fQuery_CursorLocation:= clUseServer + else if AnsiSameText('clUseClient',sValue) then + fQuery_CursorLocation:= clUseClient; + end else if AnsiSameText(sName,'CursorType') then begin + if AnsiSameText('ctUnspecified',sValue) then + fQuery_CursorType:=ctUnspecified + else if AnsiSameText('ctOpenForwardOnly',sValue) then + fQuery_CursorType:=ctOpenForwardOnly + else if AnsiSameText('ctKeyset',sValue) then + fQuery_CursorType:=ctKeyset + else if AnsiSameText('ctDynamic',sValue) then + fQuery_CursorType:=ctDynamic + else if AnsiSameText('ctStatic',sValue) then + fQuery_CursorType:=ctStatic; + end else if AnsiSameText(sName, 'LockType') then begin + if AnsiSameText('ltUnspecified',sValue) then + fQuery_ADOLockType:= ltUnspecified + else if AnsiSameText('ltReadOnly',sValue) then + fQuery_ADOLockType:= ltReadOnly + else if AnsiSameText('ltPessimistic',sValue) then + fQuery_ADOLockType:= ltPessimistic + else if AnsiSameText('ltOptimistic',sValue) then + fQuery_ADOLockType:= ltOptimistic + else if AnsiSameText('ltBatchOptimistic',sValue) then + fQuery_ADOLockType:= ltBatchOptimistic; + end else begin + if sName[1] = '@' then sName:= Pchar(sName)+1; + lConnectionString := lConnectionString + sName + '=' + sValue +';'; + end; + end; + fADOConnection.ConnectionString := lConnectionString; + end; + SchemaEnabled := fSchemaEnabled or ((UpperCase(GetProviderName) = 'SQLNCLI') or (UpperCase(GetProviderName) ='SQLNCLI.1')); + if fProviderType = oledb_Postgresql then fQuery_CursorLocation:=clUseClient; // ADOQuery can't process correctly "name" datatype of Postgres + if fProviderType = oledb_Oracle then fQuery_CursorLocation:=clUseClient; // Oracle don't work correctly without clUseClient +end; + +function TDAEADOConnection.DoBeginTransaction: integer; +begin + result := fADOConnection.BeginTrans +end; + +procedure TDAEADOConnection.DoCommitTransaction; +begin + fADOConnection.CommitTrans +end; + +function TDAEADOConnection.CreateCustomConnection: TCustomConnection; +begin + fSchemaEnabled := true; + fADOConnection := TADOConnection.Create(nil); + fADOConnection.LoginPrompt := FALSE; + if Assigned(fADOConnection) then TDAEADODriver(Driver).RegisterConnection(fADOConnection); + result := fADOConnection; +end; + +function TDAEADOConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEADOQuery; +end; + +function TDAEADOConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +procedure TDAEADOConnection.DoGetStoredProcedureNames(out List: IROStrings); +var + Schema, NameField: TField; + DataSet: TADODataSet; + lName: string; + p: integer; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotProcedure,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotProcedure); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotProcedure); + else + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedures, EmptyParam, EmptyParam, DataSet); + NameField := DataSet.FieldByName('PROCEDURE_NAME'); + Schema := DataSet.Findfield('PROCEDURE_SCHEMA'); + while not DataSet.EOF do begin + lName := NameField.AsString; + if (Schema <> nil) and (Schema.Value = 'sys') then begin dataset.Next; continue; end; + p := Pos(';', lName); + if p > 1 then begin + if P+1 >= length(lName) then begin + if lName[p+1] = '0' then // function + begin + Dataset.Next; + continue; + end; + end; + SetLength(lName, p-1); + end; + if fSchemaEnabled and (Schema <> nil) and not (VarIsNull(Schema.Value)) then + List.Add(Schema.AsString + '.' + lName) + else + List.Add(lName); + DataSet.Next; + end; + finally + DataSet.Free; + end; + end; +end; + +function ADOTypeToFieldType(const ADOType: DataTypeEnum; EnableBCD: Boolean = False): TFieldType; +begin + case ADOType of + adEmpty: Result := ftUnknown; + adTinyInt, adSmallInt: Result := ftSmallint; + adError, adInteger, adUnsignedInt: Result := ftInteger; + adBigInt, adUnsignedBigInt: Result := ftLargeInt; + adUnsignedTinyInt, adUnsignedSmallInt: Result := ftWord; + adSingle, adDouble: Result := ftFloat; + adCurrency: Result := ftCurrency; + adBoolean: Result := ftBoolean; + adDBDate: Result := ftDate; + adDBTime: Result := ftTime; + adDate, adDBTimeStamp, adFileTime, adDBFileTime: Result := ftDateTime; + adChar: Result := ftFixedChar; + adVarChar: Result := ftString; + adBSTR, adWChar, adVarWChar: Result := ftWideString; + adLongVarChar, adLongVarWChar: Result := ftMemo; + adLongVarBinary: Result := ftBlob; + adBinary: Result := ftBytes; + adVarBinary: Result := ftVarBytes; + adChapter: Result := ftDataSet; + adPropVariant, adVariant: Result := ftVariant; + adIUnknown: Result := ftInterface; + adIDispatch: Result := ftIDispatch; + adGUID: Result := ftGUID; + adDecimal, adNumeric, adVarNumeric: + if EnableBCD then + Result := ftBCD + else + Result := ftFloat; + else + Result := ftUnknown; + end; +end; + +(*procedure TDAEADOConnection.DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); +var + DataSet: TADODataSet; +begin + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedureParameters, VarArrayOf([Null, Null, aStoredProcedureName]), EmptyParam, DataSet); + //NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + Params := TDAParamCollection.Create(NIL); + while not DataSet.EOF do begin + with Params.Add() do begin + Name := DataSet.FieldByName('PARAMETER_NAME').AsString; + ParamType := TDAParamType(DataSet.FieldByName('PARAMETER_TYPE').AsInteger); + //DataType := TDADataType(DataSet.FieldByName('DATA_TYPE').AsInteger); + DataType := VCLTypeToDAType(ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger)); + Size := DataSet.FieldByName('CHARACTER_MAXIMUM_LENGTH').AsInteger + //more info available: + //'PARAMETER_HASDEFAULT' + //'PARAMETER_DEFAULT' + //'IS_NULLABLE' + //'DATA_TYPE' + //'CHARACTER_MAXIMUM_LENGTH' + //'CHARACTER_OCTET_LENGTH' + //'DESCRIPTION' + //'TYPE_NAME' + //'LOCAL_TYPE_NAME' + end; + //List.Add(NameField.AsString); + DataSet.Next; + end; + finally + DataSet.Free; + end; +end;*) + +procedure TDAEADOConnection.DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); +var + lField: TDAField; + //i: Integer; + DataSet: TADODataSet; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + oledb_Postgresql: Postgres_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + oledb_Oracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),CreateCompatibleQuery,Fields); + else + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + if (pos('.', aTableName) > 0) and (SchemaEnabled) then + fADOConnection.OpenSchema(siColumns, VarArrayOf([Unassigned, Copy(aTableName, 1, Pos('.', aTableName)-1), Copy(aTableName, Pos('.', aTableName)+1, MaxInt)]), EmptyParam, DataSet) + else + fADOConnection.OpenSchema(siColumns, VarArrayOf([Unassigned, Unassigned, aTableName]), EmptyParam, DataSet); + //NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + if DataSet.EOF then begin + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + exit ; + end; + + Fields := TDAFieldCollection.Create(nil); + + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Wre(DataSet.Fields[i].FieldName); + end; { for } + + while not DataSet.EOF do begin + with Fields.Add() do begin + Name := DataSet.FieldByName('COLUMN_NAME').AsString; + DataType := VCLTypeToDAType(ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger)); + Size := DataSet.FieldByName('CHARACTER_MAXIMUM_LENGTH').AsInteger; + Description := DataSet.FieldByName('DESCRIPTION').AsString; + // NotNull := DataSet.FieldByName('IS_NULLABLE').AsBoolean; + Required := not DataSet.FieldByName('IS_NULLABLE').AsBoolean; + + { Hack: for Memo fields ADO seems to return datString, with a lenght of $7fffffff } + //if (DataType = datString) and (Size = $7FFFFFFF) then + if (DataType = datString) and (Size > $100000) then + DataType := datMemo; + if (DAtaType = datWideString) and (Size > $100000) then + DataType := datWideMemo; + + if DataSet.FieldByName('COLUMN_HASDEFAULT').AsBoolean then + begin + DefaultValue := DataSet.FieldByName('COLUMN_DEFAULT').AsString; + if not TestDefaultValue(DefaultValue, DataType) then + DefaultValue := ''; + end; + + if ADOTypeToFieldType(DataSet.FieldByName('DATA_TYPE').AsInteger) = ftGUID then begin + Size := 38; { Quickhack, until we have proper GUID support in 3.0 } + if DefaultValue = 'newid()' then DefaultValue := Unassigned; + end; + + + //more info available: + //'COLUMN_HASDEFAULT' + //'COLUMN_DEFAULT' + //'IS_NULLABLE' + //'DATA_TYPE' + //'CHARACTER_MAXIMUM_LENGTH' + end; + //List.Add(NameField.AsString); + DataSet.Next; + end; + + if (pos('.', aTableName) > 0) and (SchemaEnabled) then + fADOConnection.OpenSchema(siPrimaryKeys, VarArrayOf([Unassigned, Copy(aTableName, 1, Pos('.', aTableName)-1), Copy(aTableName, Pos('.', aTableName)+1, MaxInt)]), EmptyParam, DataSet) + else + fADOConnection.OpenSchema(siPrimaryKeys, VarArrayOf([Unassigned, Unassigned, aTableName]), EmptyParam, DataSet); + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Write(DataSet.Fields[i].FieldName); + end; { for } + while not DataSet.EOF do begin + lField := Fields.FieldByName(DataSet.FieldByName('COLUMN_NAME').AsString); + if Assigned(lField) then + lField.InPrimaryKey := true; + + DataSet.Next(); + end; + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); +var + //i: Integer; + DataSet: TADODataSet; + s: string; + PKSchema,FKSchema: TField; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys, SchemaEnabled); + oledb_Postgresql: Postgres_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys); + oledb_Oracle: Oracle_DoGetForeignKeys(CreateCompatibleQuery, ForeignKeys); + else + s := UpperCase(GetProviderName); + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siForeignKeys, EmptyParam, EmptyParam, DataSet); + {for i := 0 to DataSet.FieldCount-1 do begin + DebugServer.Write(DataSet.Fields[i].FieldName); + end; { for } + PKSchema := DataSet.FindField('PK_TABLE_SCHEMA'); + FKSchema := DataSet.FindField('FK_TABLE_SCHEMA'); + while not DataSet.EOF do begin + {lField := Fields.FieldByName(DataSet.FieldByName('COLUMN_NAME').AsString); + if Assigned(lField) then + lField.InPrimaryKey := true;} + with ForeignKeys.Add() do begin + FKField := DataSet.FieldByName('FK_COLUMN_NAME').AsString; + PKField := DataSet.FieldByName('PK_COLUMN_NAME').AsString; + //FKTable := DataSet.FieldByName('FK_TABLE_NAME').AsString; + //PKTable := DataSet.FieldByName('PK_TABLE_NAME').AsString; + if fSchemaEnabled and (PKSchema <> nil) and not (VarIsNull(PKSchema.Value)) then + PKTable := PKSchema.AsString + '.' + DataSet.FieldByName('PK_TABLE_NAME').AsString + else + PKTable := DataSet.FieldByName('PK_TABLE_NAME').AsString; + if fSchemaEnabled and (FKSchema <> nil) and not (VarIsNull(FKSchema.Value)) then + FKTable := FKSchema.AsString + '.' + DataSet.FieldByName('FK_TABLE_NAME').AsString + else + FKTable := DataSet.FieldByName('FK_TABLE_NAME').AsString; + + end; + {DebugServer.Write(DataSet.FieldByName('FK_TABLE_NAME').AsString+'.'+DataSet.FieldByName('FK_COLUMN_NAME').AsString+' => '+ + DataSet.FieldByName('PK_COLUMN_NAME').AsString);} + + DataSet.Next(); + end; + + + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.GetViewOrTableNames(const aType: string; const aSystemTables: boolean; List: IROStrings); +var + SchemaField, + TypeField, + NameField: TField; + TableType: string; + DataSet: TADODataSet; +begin + fADOConnection.Open(); + + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siTables, EmptyParam, EmptyParam, DataSet); + + TypeField := DataSet.FieldByName('TABLE_TYPE'); { do not localize } + NameField := DataSet.FieldByName('TABLE_NAME'); { do not localize } + SchemaField := DataSet.FindField('TABLE_SCHEMA'); + while not DataSet.EOF do begin + TableType := TypeField.AsString; + if (TableType = aType) or ((aType = 'TABLE') and (TableType ='ACCESS TABLE')) or (aSystemTables and (TableType = 'SYSTEM TABLE')) then + begin + if fSchemaEnabled and (SchemaField <> nil) and not (VarIsNull(SchemaField.Value)) then + List.Add(SchemaField.AsString + '.' + NameField.AsString) + else + List.Add(NameField.AsString); + end; + DataSet.Next; + end; + finally + DataSet.Free; + end; +end; + +procedure TDAEADOConnection.DoGetViewNames(out List: IROStrings); +var + Schema,NameField: TField; + DataSet: TADODataSet; + lName: string; + p: integer; +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotView,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotView); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotView); + else + GetViewOrTableNames('VIEW', false, List); + fADOConnection.Open(); + DataSet := TADODataSet.Create(nil); + try + fADOConnection.OpenSchema(siProcedures, EmptyParam, EmptyParam, DataSet); + NameField := DataSet.FieldByName('PROCEDURE_NAME'); { do not localize } + Schema := DataSet.Findfield('PROCEDURE_SCHEMA'); + if List = nil then + List := NewROStrings(); + while not DataSet.EOF do begin + lName := NameField.AsString; + if (Schema <> nil) and (Schema.Value = 'sys') then begin dataset.Next; continue; end; + p := Pos(';', lName); + if p > 1 then begin + if P+1 >= length(lName) then begin + if lName[p+1] = '1' then // procedure + begin + Dataset.Next; + continue; + end; + end; + SetLength(lName, p-1); + end; + if fSchemaEnabled and (Schema <> nil) and not (VarIsNull(Schema.Value)) then + List.Add(Schema.AsString + '.' + lName) + else + List.Add(lName); + DataSet.Next; + end; + finally + DataSet.Free; + end; + end; +end; + +procedure TDAEADOConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetNames(CreateCompatibleQuery,List,dotTable,SchemaEnabled); + oledb_Postgresql: Postgres_DoGetNames(CreateCompatibleQuery,List,dotTable); + oledb_Oracle: Oracle_DoGetNames(CreateCompatibleQuery,List,dotTable); + else + GetViewOrTableNames('TABLE', false, List); + end; +end; + +procedure TDAEADOConnection.DoRollbackTransaction; +begin + fADOConnection.RollbackTrans +end; + +function TDAEADOConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fProviderType of + oledb_Oracle: Result:= Oracle_GetQuoteChars; + else + result:=MSSQL_GetQuoteChars; + end; +end; + +function TDAEADOConnection.DoGetInTransaction: boolean; +begin + result := fADOConnection.InTransaction +end; + +function TDAEADOConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +var + ds: IDADataset; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: begin + Result := MSSQL_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + end; + oledb_Jet: begin + ds := NewDataset('SELECT @@Identity', ''); // Returns 0 by default + ds.Open; + result := ds.Fields[0].Value; + end; + oledb_Postgresql: Result := Postgres_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + oledb_Oracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,CreateCompatibleQuery); + else + result := inherited DoGetLastAutoInc(GeneratorName); + end; +end; + +function TDAEADOConnection.GetProviderName: string; +begin + result := fProviderName; +end; + +function TDAEADOConnection.GetProviderType: TDAOleDBProviderType; +begin + result := fProviderType; +end; + +function TDAEADOConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: Result := MSSQL_CreateMacroProcessor; + oledb_Jet: result := MSSQL_CreateMacroProcessor; + oledb_Oracle: Result := Oracle_CreateMacroProcessor; + else + Result:= inherited CreateMacroProcessor; + end; +end; + +procedure TDAEADOConnection.CreateTable(aDataSet: TDADataSet; const aOverrideName: string); +var + lSQL: string; +begin + lSQL := BuildCreateTableSQL(aDataSet, aOverrideName); + with NewCommand(lSQL, stSQL) do begin + Execute(); + end; { with } +end; + +function TDAEADOConnection.BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string): string; +var + lName: string; +begin + lName := aOverrideName; + if lName = '' then lName := aDataSet.Name; + result := uDAHelpers.BuildCreateStatementForTable(aDataSet, lName, self); +end; + +function TDAEADOConnection.FieldToDeclaration(aField: TDAField): string; +begin + case aField.DataType of + datUnknown: result := 'unknown'; + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'money'; + datAutoInc: result := 'int IDENTITY(1,1)'; + datLargeAutoInc: result := 'bigint IDENTITY(1,1)'; + datInteger: result := 'int'; + datLargeInt: result := 'largeint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datWideMemo: result := 'ntext'; + datBlob: result := 'image'; + //datGuid:result := 'uniqueidentifier'; + end; { case } +end; + +function TDAEADOConnection.GetDatabaseNames: IROStrings; +begin + case fProviderType of + oledb_Jet: Result := NewROStrings; + oledb_Postgresql: Result:= Postgres_GetDatabaseNames(Self); + else + Result := MSSQL_GetDatabaseNames(Self); + end; +end; + +function TDAEADOConnection.GetSPSelectSyntax( + HasArguments: Boolean): String; +begin + case fProviderType of + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: Result := MSSQL_GetSPSelectSyntax(HasArguments); + oledb_Oracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + oledb_Postgresql: Result:= Postgres_GetSPSelectSyntax(HasArguments); + else + Result := inherited GetSPSelectSyntax(HasArguments); + end; +end; + +function TDAEADOConnection.GetCommandTimeout: Integer; +begin + if fADOConnection <> nil then + Result:= fADOConnection.CommandTimeout + else + Result:=0; +end; + +procedure TDAEADOConnection.SetCommandTimeout(const Value: Integer); +begin + if fADOConnection <> nil then + fADOConnection.CommandTimeout:= Value; +end; + +function TDAEADOConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fProviderType of + oledb_Oracle: Result:= Oracle_IdentifierNeedsQuoting(iIdentifier); + oledb_Postgresql: Result:= Postgres_IdentifierNeedsQuoting(iIdentifier); + else + Result:= MSSQL_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEADOConnection.GetFileExtensions: IROStrings; +begin + case fProviderType of + oledb_Jet: Result:=MSACCESS_GetFileExtensions; + else + result := NewROStrings; + end; +end; + +function TDAEADOConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fProviderType in [oledb_Jet]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fProviderType in [oledb_Jet]) then Exit; + end + else if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fProviderType in [oledb_Oracle, oledb_Postgresql]) then Exit; + end + else if IsEqualGUID(IID, IDAOracleConnection) then begin + if (fProviderType <> oledb_Oracle) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +function TDAEADOConnection.isAlive: Boolean; +begin + Result:=(ConnectionObject <> nil) and not (stClosed in fADOConnection.State); +end; + +constructor TDAEADOConnection.Create(aDriver: TDAEDriver; aName: string); +begin + inherited Create(aDriver, aName); + fQuery_CursorType := Default_CursorType; + fQuery_CursorLocation := Default_CursorLocation; + fQuery_ADOLockType := Default_ADOLockType; +end; + +function TDAEADOConnection.GetNextAutoinc(const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +function TDAEADOConnection.CreateCompatibleQuery: IDADataset; +begin + Result := GetDatasetClass.Create(Self); + TADOQuery(Result.Dataset).CursorLocation:=clUseClient; +end; + +procedure TDAEADOConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fProviderType of + oledb_Postgresql: Postgres_DoGetStoredProcedureParams(aStoredProcedureName, CreateCompatibleQuery, Params); + oledb_Oracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, CreateCompatibleQuery, Params); + oledb_MSSQL, oledb_MSSQL2005, oledb_MSSQL2008: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName, CreateCompatibleQuery, Params); + else + inherited; + end; +end; + +destructor TDAEADOConnection.Destroy; +begin + if Assigned(fADOConnection) then TDAEADODriver(Driver).UnregisterConnection(fADOConnection); + inherited; +end; + +function TDAEADOConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + case fProviderType of + oledb_Oracle: Result:=Oracle_GetNextAutoinc(GeneratorName,CreateCompatibleQuery); + oledb_Postgresql: Result := Postgres_GetNextAutoInc(GeneratorName,CreateCompatibleQuery); + else + Result:=-1; + end; +end; + +{ TDAEADODriver } + +function TDAEADODriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEADOConnection; +end; + +function TDAEADODriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case OleDBDriverIdToOleDBProviderType(AuxDriver) of + oledb_MSSQL, + oledb_MSSQL2005, + oledb_MSSQL2008 :Result:=MSSQL_DriverType; + oledb_Jet: Result := Access_DriverType; + oledb_Oracle: Result := Oracle_DriverType; + oledb_ODBC: Result := ODBC_DriverType; + oledb_Postgresql : Result := PostgreSQL_DriverType; + oleDb_VisualFoxPro: Result := FoxPro_DriverType; + else + Result:= inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Borland ADOExpress Driver'; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'ADO'; +end; + +procedure TDAEADODriver.GetAuxDrivers(out List: IROStrings); +var + i: TDAOleDBProviderType; +begin + inherited; + for i := Low(TDAOleDBProviderType) to High(TDAOleDBProviderType) do + if (i <> oledb_Unknown) {// Redundant but safe if I change the enum later...} then List.Add(OleDBProviders[i]); +end; + +function TDAEADODriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + if Sametext(Trim(Provider), oledb_MSSQL2005id) or + Sametext(Trim(Provider), oledb_MSSQL2008id) then Result := 'Schemas=1;Integrated Security=SSPI;' else + if SameText(Trim(Provider), oledb_MSSQLId) then Result := 'Integrated Security=SSPI;'; +end; + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + if Sametext(Trim(AuxDriver), oledb_MSSQL2005id) or + SameText(Trim(AuxDriver), oledb_MSSQLId) or + Sametext(Trim(AuxDriver), oledb_MSSQL2008id) then + MSSQL_GetAuxParams(List); + List.Add('CursorLocation=(clUseServer,clUseClient)'); + List.Add('CursorType=(ctUnspecified,ctOpenForwardOnly,ctKeyset,ctDynamic,ctStatic)'); + List.Add('LockType=(ltUnspecified,ltReadOnly,ltPessimistic,ltOptimistic,ltBatchOptimistic)'); + List.Add(''); + List.Add('You can pass any parameters directly to driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('CursorLocation=clUseServer;@Mode=Read'); +end; + +procedure TDAEADODriver.CustomizeConnectionObject( + aConnection: TDAEConnection); +begin + inherited; + if Assigned(FMonitor) then fMonitor.AssignEvents(TDAEADOConnection(aConnection).fADOConnection); +end; + +constructor TDAEADODriver.Create(AOwner: TComponent); +begin + FConnectionList:= TThreadList.Create; + inherited; +end; + +destructor TDAEADODriver.Destroy; +begin + inherited; + FConnectionList.Free; +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; + TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + if TraceActive then begin + if (FMonitor = nil) then fMonitor := TDAADOMonitor.Create(Self); + fMonitor.Enabled := FALSE; + fMonitor.TraceFlags := TraceFlags; + FMonitor.OnCallback := Callback; + fMonitor.Enabled := TRUE; + end + else begin + if (FMonitor <> nil) then begin + fMonitor.Enabled:=False; + FreeAndNIL(fMonitor); + end; + end; +end; + +procedure TDAEADODriver.RegisterConnection(AConnection: TADOConnection); +begin + FConnectionList.Add(AConnection); + if FMonitor <> nil then FMonitor.AssignEvents(AConnection); +end; + +procedure TDAEADODriver.UnregisterConnection(AConnection: TADOConnection); +begin + FConnectionList.Remove(AConnection); + if FMonitor <> nil then FMonitor.UnAssignEvents(AConnection); +end; + +{ TDAEADOQuery } + +procedure TDAEADOQuery.ClearParams; +begin + inherited; + TADOQuery(Dataset).Parameters.Clear; +end; + +function TDAEADOQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADOQuery.Create(nil); + + TADOQuery(result).LockType := TDAEADOConnection(aConnection).fQuery_ADOLockType;// ltReadOnly; + TADOQuery(result).CursorLocation :=TDAEADOConnection(aConnection).fQuery_CursorLocation; // clUseClient; + TADOQuery(result).CursorType := TDAEADOConnection(aConnection).fQuery_CursorType; //ctOpenForwardOnly; + TADOQuery(result).Connection := TDAEADOConnection(aConnection).fADOConnection; + TADOQuery(result).EnableBCD := False; + TADOQuery(result).CacheSize := 25; +// TADOQuery(result).Prepared := TRUE; + if TADOQuery(result).Connection <> nil then + TADOQuery(result).CommandTimeout := TADOQuery(result).Connection.CommandTimeout; +end; + +function TDAEADOQuery.DoExecute: integer; +begin + result := TADOQuery(Dataset).ExecSQL; + if TADOQuery(Dataset).Connection.Errors.Count>0 then + raise Exception.Create(TADOQuery(Dataset).Connection.Errors.Item[0].Description); +end; + +function TDAEADOQuery.DoGetSQL: string; +begin + result := TADOQuery(Dataset).SQL.Text; +end; + +procedure TDAEADOQuery.DoSetSQL(const Value: string); +begin + TADOQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEADOQuery.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + inpar: TParameter; + ds: TADOQuery; +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + inpar := ds.Parameters[i]; + + par := Params.ParamByName(inpar.Name); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then begin + if inpar.DataType = ftLargeint then + par.Value := DecimalToInt64(inpar.Value) + else + par.Value := inpar.Value; + end; + end; +end; + +procedure TDAEADOQuery.RefreshParams; +var + i: Integer; + par: TDAParam; + outpar: TParameter; + ds: TADOQuery; +begin + inherited; + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + for i := 0 to ds.Parameters.Count -1 do begin + outpar := ds.Parameters[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then begin + par.DataType := VCLTypeToDAType(outpar.DataType); + par.Size := outpar.Size; + par.DecimalPrecision := outpar.Precision; + par.DecimalScale := outpar.NumericScale; + case outpar.Direction of + pdInput: par.ParamType := daptInput; + pdOutput: par.ParamType := daptOutput; + pdInputOutput: par.ParamType := daptInputOutput; + pdReturnValue: par.ParamType := daptResult; + end; + end; + end; +end; + +procedure TDAEADOQuery.SetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + outpar: TParameter; + ds: TADOQuery; + ft: TFieldType; + {$IFDEF DELPHI2009UP} + st: TROBinaryMemoryStream; + {$ENDIF} +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + outpar := ds.Parameters[i]; + + par := Params.ParamByName(outpar.Name); + ft := DATypeToVCLType(par.DataType); + case par.ParamType of + daptInput: outpar.Direction := pdInput; + daptOutput: outpar.Direction := pdOutput; + daptInputOutput: outpar.Direction := pdInputOutput; + daptResult: outpar.Direction := pdReturnValue; + end; + + if par.DataType in [datBlob, datMemo, datWideMemo] then begin + case par.DataType of + datBlob: outpar.DataType := ftBlob; + datMemo: outpar.DataType := ftMemo; + datWideMemo: outpar.DataType := {$IFDEF DA_WideMemoSupport}ftWideMemo{$ELSE}ftWideString{$ENDIF}; + end; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if VarIsEmpty(par.Value) or VarIsNull(par.Value) then begin + outpar.Value := NULL + end + else begin + {$IFDEF DELPHI2009UP} + // bug in ADODB, TParameter.SetValue at settings AnsiString+ftBlob + st := TROBinaryMemoryStream.Create(VariantToAnsiString(par.Value)); + try + outpar.LoadFromStream(st, outpar.DataType); + finally + st.Free; + end; + {$ELSE} + outpar.Value := VariantToAnsiString(par.Value); + {$ENDIF} + end; + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then begin + {$IFNDEF DELPHI2009UP} + // ADODB.pas doesn't support ftFMTBCD up to D2009 + if ft = ftFMTBcd then + ft := ftBCD + else + {$ENDIF} + outpar.DataType := ft; + end; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if outpar.DataType = ftLargeint then + Outpar.Value := Int64ToDecimal(par.Value) + else if ((par.DataType <> datString) and (par.DataType <> datWideString)) and VarIsStr(par.Value) and (VarToStr(par.Value)= '') then begin + par.Value := Null; + end; + outpar.Value := par.Value; + end; + end; + if (VarIsEmpty(par.Value) or VarIsNull(par.Value)) and (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + end; + end; +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADOStoredProc.Create(nil); + TADOStoredProc(result).Connection := TDAEADOConnection(aConnection).fADOConnection; + if TADOStoredProc(result).Connection <> nil then + TADOStoredProc(result).CommandTimeout := TADOStoredProc(result).Connection.CommandTimeout; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + outpar: TParameter; + ds: TADOStoredProc; + ft: TFieldType; + {$IFDEF DELPHI2009UP} + st: TROBinaryMemoryStream; + {$ENDIF} +begin + ds := TADOStoredProc(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + outpar := ds.Parameters[i]; + + par := Params.ParamByName(outpar.Name); + ft := DATypeToVCLType(par.DataType); + case par.ParamType of + daptInput: outpar.Direction := pdInput; + daptOutput: outpar.Direction := pdOutput; + daptInputOutput: outpar.Direction := pdInputOutput; + daptResult: outpar.Direction := pdReturnValue; + end; + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if VarIsEmpty(par.Value) or VarIsNull(par.Value) then begin + outpar.Value := NULL + end + else begin + {$IFDEF DELPHI2009UP} + // bug in ADODB, TParameter.SetValue at settings AnsiString+ftBlob + st := TROBinaryMemoryStream.Create(VariantToAnsiString(par.Value)); + try + outpar.LoadFromStream(st,ftBlob); + finally + st.Free; + end; + {$ELSE} + outpar.Value := VariantToAnsiString(par.Value); + {$ENDIF} + end; + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if outpar.DataType = ftLargeint then + Outpar.Value := Int64ToDecimal(par.Value) + else + outpar.Value := par.Value; + end; + end; + if (VarIsEmpty(par.Value) or VarIsNull(par.Value)) and + (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then + outpar.DataType := ft; + end; + end; +end; + +procedure TDAEADOStoredProcedure.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + inpar: TParameter; + ds: TADOQuery; +begin + ds := TADOQuery(Dataset); + if not Assigned(ds.Parameters) then + Exit; + + for i := 0 to (ds.Parameters.Count - 1) do begin + inpar := ds.Parameters[i]; + + par := Params.ParamByName(inpar.Name); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then begin + if inpar.DataType = ftLargeint then + par.Value := DecimalToInt64(inpar.Value) + else + par.Value := inpar.Value; + end; + end; +end; + + +type + TADOStoredProcHack = class(TADOStoredProc); + +function TDAEADOStoredProcedure.Execute: integer; +var + i: integer; + pstr: string; + params: TDAParamCollection; + ds: TADOStoredProc; + lParam: TParameter; +begin + params := GetParams; + if (Connection as TDAEADOConnection).fProviderType = oledb_Oracle then pstr := '' else pstr := '@'; + + ds := TADOStoredProc(Dataset); + + for i := ds.Parameters.Count -1 downto 0 do + begin + if (ds.Parameters[i].DataType = ftInterface) and (ds.Parameters[i].Direction in [pdOutput, pdInputOutput, pdReturnValue]) then + ds.Parameters.Delete(i); + end; + + if (ds.Parameters.Count<>Params.Count) then begin + ds.Parameters.Refresh; + end; + + {for i := 0 to (Parameters.Count - 1) do + if (Parameters[i].Direction in [pdInput, pdInputOutput]) + then Parameters.ParamByName('@'+params[i].Name) [i].Value := params[i].Value;} + + for i := 0 to (params.Count-1) do + begin + lParam:= ds.Parameters.ParamByName(pstr+params[i].Name); + if (params[i].ParamType = daptOutput) and (lParam.Direction <> pdOutput) then + lParam.Direction := pdOutput // ado sometimes doesn't set the direction properly + else if (params[i].ParamType in [daptInput, daptInputOutput]) then + lParam.Value := params[i].Value; + end; + + Result := DoExecute; + + {TADOStoredProcHack(Dataset).InitializeMasterFields(Self); + Command.Execute;} + + {for i := 0 to (Parameters.Count - 1) do + if (Parameters[i].Direction in [pdOutput, pdInputOutput, pdReturnValue]) + then params[i].Value := Parameters[i].Value;} + + for i := 0 to (params.Count-1) do + if (params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then params[i].Value := ds.Parameters.ParamByName(pstr+params[i].Name).Value; +end; + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TADOStoredProc(Dataset).ProcedureName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TADOStoredProc(Dataset).ProcedureName := Name; +end; + +procedure TDAEADOStoredProcedure.RefreshParams; +var + dsparams: TParameters; + dPar: TParameter; + i: integer; + par: TDAParam; + params: TDAParamCollection; + nme: string; +begin + dsparams := TADOStoredProc(Dataset).Parameters; + + dsparams.Refresh; + params := GetParams; + params.Clear; + + for i := 0 to (dsparams.Count - 1) do begin + par := params.Add; + dPar:=dsparams[i]; + nme := dPar.Name; + if Pos('@', nme) > 0 then + System.Delete(nme, Pos('@', nme), 1); + par.Name := nme; + + if (dPar.DataType = ftInterface) then + par.DataType := datUnknown + else + par.DataType := VCLTypeToDAType(dPar.DataType); + par.ParamType := TDAParamType(dPar.Direction); + par.Size := dPar.Size; + end; +end; + +exports + GetDriverObject name func_GetDriverObject; + + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + TADOStoredProcHack(TADOStoredProc(Dataset)).Command.Execute(result, EmptyParam); + + if TADOStoredProc(Dataset).Connection.Errors.Count >0 then + raise Exception.Create(TADOStoredProc(Dataset).Connection.Errors.Item[0].Description); +end; + +{ TDAADOMonitor } + +function ParseError(const AError: Error):string; +begin + if aError = nil then begin + Result:='' + end + else begin + Result:= + 'Error.Number: ' + IntToStr(AError.Number) + sLineBreak + + 'Error.NativeError: ' + IntToStr(AError.NativeError) + sLineBreak + + 'Error.Source: ' + AError.Source+sLineBreak + + 'Error.Description: ' + AError.Description + sLineBreak + + 'Error.SQLState: ' + AError.SQLState + sLineBreak; + end; +end; + +function ParseCommand(Const Command: _Command): string; +var + i: integer; + {$IFDEF ADOMONITOR_SHOWPARAMVALUES} + v: Variant; + {$ENDIF} + lItem: _Parameter; + s: String; +begin + if Command = nil then begin + Result:=sLineBreak; + end + else begin + s:= PWideChar(Command.CommandText); + Result:= + 'Command.CommandText: ' + StringReplace(s, sLineBreak,' ',[rfReplaceAll]) + sLineBreak + + 'Command.Parameters.Count: ' + IntToStr(Command.Parameters.Count) + sLineBreak; + for i:= 0 to Command.Parameters.Count-1 do begin + lItem:=Command.Parameters.Item[i]; + Result := Result + 'Command.Parameters['+intToStr(i)+ ']: '+ lItem.Name; + {$IFDEF ADOMONITOR_SHOWPARAMVALUES} + Result:= Result + ' = '; + v:=lItem.Value; + if VarIsNull(v) then Result := Result+ '' + else if VarIsEmpty(v) then Result := Result+ '' + else if lItem.Type_ in [adBinary, adVarBinary, adLongVarBinary, adLongVarChar] then Result:= Result + '' + else Result:= Result + VarToStr(v); + {$ENDIF} + Result:=Result+sLineBreak; + end; + Result:=Result+sLineBreak; + end; +end; + +function ParseEventStatus(const EventStatus: TEventStatus): string; +begin + Result := 'EventStatus: ' + TEventStatusStr[EventStatus]+sLineBreak; +end; + +procedure TDAADOMonitor.ADOConnectionBeginTransComplete( + Connection: TADOConnection; TransactionLevel: Integer; + const Error: Error; var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Begin transaction'+sLineBreak+ + '-----------------'+sLineBreak+ + 'TransactionLevel: ' +IntToStr(TransactionLevel)+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionCommitTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Commit transaction'+sLineBreak+ + '------------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionConnectComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Connect'+sLineBreak+ + '-------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionDisconnect(Connection: TADOConnection; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Disconnect'+sLineBreak+ + '----------'+sLineBreak+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionExecuteComplete( + Connection: TADOConnection; RecordsAffected: Integer; const Error: Error; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Execute'+sLineBreak+ + '-------'+sLineBreak+ + 'RecordsAffected: ' +IntToStr(RecordsAffected)+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus)+ + ParseCommand(Command), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionInfoMessage( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Info message'+sLineBreak+ + '------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionRollbackTransComplete( + Connection: TADOConnection; const Error: Error; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Rollback transaction'+sLineBreak+ + '-------------------'+sLineBreak+ + ParseError(Error)+ + ParseEventStatus(EventStatus), + 0); +end; + +procedure TDAADOMonitor.ADOConnectionWillConnect( + Connection: TADOConnection; var ConnectionString, UserID, + Password: WideString; var ConnectOptions: TConnectOption; + var EventStatus: TEventStatus); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Will connect'+sLineBreak+ + '------------'+sLineBreak+ + 'Connection string: ' + ConnectionString +sLineBreak+ + 'UserID: ' + UserID +sLineBreak+ + 'Password: ' + Password +sLineBreak+ + 'ConnectOptions: ' + TConnectOptionStr[ConnectOptions]+sLineBreak+ + ParseEventStatus(EventStatus), + 0); +end; + +function getExecuteOptionStr(const ExecuteOptions: TExecuteOptions): string; +var + i: TExecuteOption; +begin + Result:=''; + for i:= low(TExecuteOption) to High(TExecuteOption) do + if i in ExecuteOptions then Result:= Result + TExecuteOptionStr[i]+','; + if Length(Result) > 0 then SetLength(Result, Length(Result)-1); +end; + +procedure TDAADOMonitor.ADOConnectionWillExecute( + Connection: TADOConnection; var CommandText: WideString; + var CursorType: TCursorType; var LockType: TADOLockType; + var CommandType: TCommandType; var ExecuteOptions: TExecuteOptions; + var EventStatus: TEventStatus; const Command: _Command; + const Recordset: _Recordset); +begin + if Assigned(FOnCallback) then FOnCallback(Self, + 'Will execute' + sLineBreak+ + '------------' + sLineBreak+ + 'CommandText: ' + CommandText + sLineBreak+ + 'CursorType: ' + TCursorTypeStr[CursorType] + sLineBreak + + 'LockType: ' + TADOLockTypeStr[LockType] + sLineBreak + + 'CommandType: ' + TCommandTypeStr[CommandType] + sLineBreak + + 'ExecuteOptions: ' + getExecuteOptionStr(ExecuteOptions) + sLineBreak + + ParseEventStatus(EventStatus)+ + ParseCommand(Command), + 0); +end; + +procedure TDAADOMonitor.AssignEvents(AConnection: TADOConnection); +begin + if (AConnection <> nil) and FEnabled and Assigned(FOnCallback) then begin + // if toPrepare in FTraceFlags then AConnection. + if toExecute in FTraceFlags then begin + AConnection.OnExecuteComplete := ADOConnectionExecuteComplete; + AConnection.OnWillExecute := ADOConnectionWillExecute; + end; + // if toFetch in FTraceFlags then AConnection. + if toError in FTraceFlags then begin + AConnection.OnInfoMessage := ADOConnectionInfoMessage; + end; + // if toStmt in FTraceFlags then AConnection. + if toConnect in FTraceFlags then begin + AConnection.OnConnectComplete := ADOConnectionConnectComplete; + AConnection.OnWillConnect := ADOConnectionWillConnect; + AConnection.OnDisconnect := ADOConnectionDisconnect; + end; + if toTransact in FTraceFlags then begin + AConnection.OnBeginTransComplete := ADOConnectionBeginTransComplete; + AConnection.OnCommitTransComplete := ADOConnectionCommitTransComplete; + AConnection.OnRollbackTransComplete := ADOConnectionRollbackTransComplete; + end; + // if toBlob in FTraceFlags then AConnection. + // if toService in FTraceFlags then AConnection. + // if toMisc in FTraceFlags then AConnection. + // if toParams in FTraceFlags then AConnection. + end; +end; + +constructor TDAADOMonitor.Create(ADriver: TDAEADODriver); +begin + inherited Create; + FDriver := ADriver; + FEnabled := False; +end; + +procedure TDAADOMonitor.ReAssignEvents; +var + i: integer; + lmode: boolean; +begin + lMode:=FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback); + with FDriver.FConnectionList.LockList do try + for i:= 0 to Count-1 do + if lMode then + AssignEvents(TADOConnection(Items[i])) + else + UnAssignEvents(TADOConnection(Items[i])); + finally + FDriver.FConnectionList.UnLockList; + end; +end; + +procedure TDAADOMonitor.SetEnabled(const Value: Boolean); +begin + if FEnabled <> Value then begin + FEnabled := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.SetOnCallback(const Value: TDALogTraceEvent); +begin + if @fOnCallback <> @Value then begin + FOnCallback := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.SetTraceFlags(const Value: TDATraceOptions); +begin + if FTraceFlags <> Value then begin + FTraceFlags := Value; + if FEnabled and (fTraceFlags <> []) and Assigned(FOnCallback) then ReAssignEvents; + end; +end; + +procedure TDAADOMonitor.UnAssignEvents(AConnection: TADOConnection); +begin + if AConnection <> nil then begin + // toTransact + AConnection.OnBeginTransComplete := nil; + AConnection.OnCommitTransComplete := nil; + AConnection.OnRollbackTransComplete := nil; + + //toConnect + AConnection.OnConnectComplete := nil; + AConnection.OnWillConnect := nil; + AConnection.OnDisconnect := nil; + + //toExecute + AConnection.OnExecuteComplete := nil; + AConnection.OnWillExecute := nil; + + //toError + AConnection.OnInfoMessage := nil; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAbsoluteDBDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAbsoluteDBDriver.pas new file mode 100644 index 0000000..8d59023 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAbsoluteDBDriver.pas @@ -0,0 +1,868 @@ +unit uDAAbsoluteDBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up } +{ platform: Win32 } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ Originally was created by Steve Forbes } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + + +{$R DataAbstract_AbsoluteDBDriver_Glyphs.res} + +//{$I absvr.inc} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uROClasses, ABSMain, uDAUtils; + +type + { TDAAbsoluteDBDriver } + TDAAbsoluteDBDriver = class(TDADriverReference) + end; + + { IAbsoluteDBConnection } + IAbsoluteDBConnection = interface + ['{A0A17C42-D225-4610-83D5-FC6D2A554010}'] + end; + + { IABSConnectionProperties + Provides access to common properties of AbsoluteDB connections } + + IABSConnectionProperties = interface + ['{7B13C981-3131-47A5-A6AC-62635B1777AD}'] + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + + property KeepConnections: Boolean read GetKeepConnections write SetKeepConnections; + end; + + { TAbsoluteDBConnection } + TAbsoluteDBConnection = class(TDAConnectionWrapper) + private + FDatabase: TABSDatabase; + FSession: TABSSession; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TABSDatabase read FDatabase; + property Session: TABSSession read FSession; + end; + + { TDAEAbsoluteDBDriver } + TDAEAbsoluteDBDriver = class(TDAEDriver) + private + + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { TDAEAbsoluteDBConnection } + TDAEAbsoluteDBConnection = class(TDAEConnection, IAbsoluteDBConnection, IABSConnectionProperties) + private + FConnection: TAbsoluteDBConnection; + + protected + // IABSConnectionProperties + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: Boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection);override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEAbsoluteDBQuery } + TDAEAbsoluteDBQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: Boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +const + AbsoluteDB_DriverType = 'AbsoluteDB'; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, uDADriverManager, uDARes, uDAMacroProcessors, Variants, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + absolute_reservedwords: array of string; + +const + GEN_NAME_DELIMITER = '*'; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAAbsoluteDBDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEAbsoluteDBDriver.Create(nil); + result := _driver; +end; + +{ TAbsoluteDBConnection } + +constructor TAbsoluteDBConnection.Create(AOwner: TComponent); +begin + inherited; + + FSession := TABSSession.Create(Self); + FSession.AutoSessionName := TRUE; + + FDatabase := TABSDatabase.Create(Self); + FDatabase.SessionName := FSession.SessionName; + FDatabase.DatabaseName := 'ABSOLUTEDB'; +end; + +function TAbsoluteDBConnection.GetConnected: Boolean; +begin + result := FDatabase.Connected; +end; + +procedure TAbsoluteDBConnection.SetConnected(Value: Boolean); +begin + if not(csDestroying in FDatabase.ComponentState) then begin + try + FSession.Active := Value; + FDatabase.Connected := Value; + except + FSession.Active := FALSE; + FDatabase.Connected := FALSE; + raise; + end; + end; +end; + +{ TDAEAbsoluteDBConnection } + +procedure TDAEAbsoluteDBConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + with aConnStrParser do begin + FConnection.Database.DatabaseFileName := Database; + + if (AuxParams['DisableTempFiles'] = 'False') then + begin + FConnection.Database.DisableTempFiles := False; + end + else + begin + FConnection.Database.DisableTempFiles := True; + end; + + if (AuxParams['Exclusive'] = 'False') then + begin + FConnection.Database.Exclusive := False; + end + else + begin + FConnection.Database.Exclusive := True; + end; + + if (AuxParams['HandleShared'] = 'False') then + begin + FConnection.Database.HandleShared := False; + end + else + begin + FConnection.Database.HandleShared := True; + end; + + if (AuxParams['KeepConnections'] = 'False') then + begin + FConnection.Session.KeepConnections := False; + FConnection.Database.KeepConnection := False; + end + else if (AuxParams['KeepConnections'] = 'True') then + begin + FConnection.Session.KeepConnections := True; + FConnection.Database.KeepConnection := True; + end; + + if (AuxParams['MultiUser'] = 'False') then + begin + FConnection.Database.MultiUser := False; + end + else + begin + FConnection.Database.MultiUser := True; + end; + + if (AuxParams['DBPassword'] <> '') then + begin + fConnection.Database.Password := AuxParams['DBPassword']; + end; + end; +end; + +function TDAEAbsoluteDBConnection.DoBeginTransaction: integer; +begin + result := -1; + FConnection.Database.StartTransaction; +end; + +procedure TDAEAbsoluteDBConnection.DoCommitTransaction; +begin + with FConnection do + Database.Commit; +end; + +function TDAEAbsoluteDBConnection.CreateCustomConnection: TCustomConnection; +begin + result := TAbsoluteDBConnection.Create(nil); + FConnection := TAbsoluteDBConnection(result); +end; + +function TDAEAbsoluteDBConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEAbsoluteDBQuery +end; + +procedure TDAEAbsoluteDBConnection.DoGetTableNames(out List: IROStrings); +var + _database: string; +begin + List := TROStrings.Create; + _database := FConnection.Database.DatabaseName; + + FConnection.Session.GetTableNames(_database, List.Strings); +end; + +procedure TDAEAbsoluteDBConnection.DoRollbackTransaction; +begin + FConnection.Database.Rollback; +end; + +function TDAEAbsoluteDBConnection.DoGetInTransaction: Boolean; +begin + result := FConnection.Database.InTransaction; +end; + +function TDAEAbsoluteDBConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + result := TDADBISAMMacroProcessor.Create; +end; + +function TDAEAbsoluteDBConnection.GetKeepConnections: Boolean; +begin + result := FConnection.Session.KeepConnections; +end; + +procedure TDAEAbsoluteDBConnection.SetKeepConnections(Value: Boolean); +begin + FConnection.Session.KeepConnections := Value; + FConnection.Database.KeepConnection := Value; +end; + +function TDAEAbsoluteDBConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +var + lQuery: IDADataset; + TableName: String; + FieldName: String; +begin + try + if ((GeneratorName <> '') and (Pos(GEN_NAME_DELIMITER, GeneratorName) > 0)) then + begin + + TableName := Copy(GeneratorName, 1, + Pos(GEN_NAME_DELIMITER, GeneratorName) - 1); + FieldName := Copy(GeneratorName, + Pos(GEN_NAME_DELIMITER, GeneratorName) + 1, + Length(GeneratorName) - (Length(TableName) + 1)); + lQuery := GetDatasetClass.Create(Self); + try + lQuery.SQL := 'SELECT LASTAUTOINC(''' + TableName + ''', ''' + + FieldName + ''') from ' + QuoteIdentifierIfNeeded(TableName); + lQuery.Open; + Result := lQuery.Fields[0].AsInteger; + lQuery.Close; + finally + lQuery := nil; + end; + end + else + begin + Result := inherited DoGetLastAutoInc(GeneratorName); + end; + except + Result := inherited DoGetLastAutoInc(GeneratorName); + end; +end; + +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED OFF} +{$ENDIF DELPHI10UP} +procedure TDAEAbsoluteDBConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + i: integer; + pos1: integer; + fld: TDAField; + lofld:TFieldDef; + s: string; + ltable: TABSTable; +begin + Fields:=TDAFieldCollection.Create(nil); + ltable:=TABSTable.Create(nil); + try + ltable.DatabaseName := FConnection.Database.DatabaseName; + ltable.SessionName := FConnection.Session.SessionName; + ltable.TableName := aTableName; + ltable.FieldDefs.Update; + for i:=0 to ltable.FieldDefs.Count-1 do begin + lofld:=ltable.FieldDefs[i]; + fld:= Fields.Add; + fld.Name:= lofld.Name; + fld.DataType:= VCLTypeToDAType(lofld.DataType); + fld.Size:= lofld.Size; + fld.Required:= lofld.Required; + fld.ReadOnly:= DB.faReadonly in lofld.Attributes; + if fld.DataType = datAutoInc then fld.GeneratorName:= aTableName+GEN_NAME_DELIMITER+fld.Name; + if fld.DataType = datDecimal then begin + case lofld.DataType of + ftBCD: begin + fld.DecimalPrecision:=20; + fld.DecimalScale:=lofld.Size; + end; + end; + end; + end; + + //pk + ltable.IndexDefs.Update; + For i:=0 to ltable.IndexDefs.Count - 1 do + if ixPrimary in ltable.IndexDefs[i].Options then begin + Pos1 := 1; + s:=ltable.IndexDefs[i].Fields; + while Pos1 <= Length(s) do begin + fld := Fields.FindField(ExtractFieldName(s, Pos1)); + if fld <> nil then fld.InPrimaryKey:=True; + end; + end; + + finally + ltable.free; + end; +end; +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED ON} +{$ENDIF DELPHI10UP} + +function TDAEAbsoluteDBConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or TestIdentifier(iIdentifier,absolute_reservedwords); +end; + +{ TDAEAbsoluteDBDriver } + +procedure TDAEAbsoluteDBDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; + + List.Add('DBPassword='); + List.Add('DisableTempFiles=False,True'); + List.Add('Exclusive=False,True'); + List.Add('HandleShared=False,True'); + List.Add('KeepConnections=False,True'); + List.Add('MultiUser=False,True'); + + List.Sorted := True; +end; + +function TDAEAbsoluteDBDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doDatabaseName, doCustom]; +end; + +function TDAEAbsoluteDBDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEAbsoluteDBConnection +end; + +function TDAEAbsoluteDBDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + Result := AbsoluteDB_DriverType; +end; + +function TDAEAbsoluteDBDriver.GetDescription: string; +begin + result := 'AbsoluteDB Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEAbsoluteDBDriver.GetDriverID: string; +begin + result := 'AbsoluteDB'; +end; + +{ TDAEAbsoluteDBQuery } + +function TDAEAbsoluteDBQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TABSQuery.Create(nil); + + with TABSQuery(result) do begin + DatabaseName := TDAEAbsoluteDBConnection(aConnection).FConnection.Database.DatabaseName; + SessionName := TDAEAbsoluteDBConnection(aConnection).FConnection.Session.SessionName; + ReadOnly := True; + RequestLive := True; + end; +end; + +function TDAEAbsoluteDBQuery.DoExecute: integer; +begin + with TABSQuery(Dataset) do begin + ExecSQL; + result := RowsAffected; + end; +end; + +function TDAEAbsoluteDBQuery.DoGetSQL: string; +begin + result := TABSQuery(Dataset).SQL.Text +end; + +procedure TDAEAbsoluteDBQuery.DoPrepare(Value: Boolean); +begin + TABSQuery(Dataset).Prepared := Value; +end; + +procedure TDAEAbsoluteDBQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; + outpar: TParam; + ft: TFieldType; + lParIsEmpty: Boolean; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + outpar := TABSQuery(Dataset).Params.ParamByName(par.Name); + + ft := DATypeToVCLType(par.DataType); + + case par.ParamType of + daptInput: outpar.ParamType := ptInput; + daptOutput: outpar.ParamType := ptOutput; + daptInputOutput: outpar.ParamType := ptInputOutput; + daptResult: outpar.ParamType := ptResult; + end; + + lParIsEmpty := VarIsEmpty(par.Value) or VarIsNull(par.Value); + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if lParIsEmpty then + outpar.Value := Null + else + outpar.Value := VariantToAnsiString(par.Value); + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then outpar.Value := par.Value; + end; + + if lParIsEmpty and (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + end; + end; +end; + +procedure TDAEAbsoluteDBQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + if Par.ParamType in [daptOutput, daptInputOutput, daptResult] then + Par.Value := TABSQuery(Dataset).Params.ParamByName(par.Name).Value; + end; +end; + +procedure TDAEAbsoluteDBQuery.DoSetSQL(const Value: string); +begin + TABSQuery(Dataset).SQL.Text := Value; +end; + +exports GetDriverObject name func_GetDriverObject; + +procedure TDAEAbsoluteDBQuery.ClearParams; +begin + inherited; + TABSQuery(Dataset).Params.Clear; +end; + +procedure absolute_InitializeReservedWords; +begin + SetLength(absolute_reservedwords, 283); + // sorted with TStringList.Sort (bds2007) + absolute_reservedwords[0] := 'ABS'; + absolute_reservedwords[1] := 'ABSOLUTE'; + absolute_reservedwords[2] := 'ACOS'; + absolute_reservedwords[3] := 'ACTION'; + absolute_reservedwords[4] := 'ADD'; + absolute_reservedwords[5] := 'ALL'; + absolute_reservedwords[6] := 'ALLOCATE'; + absolute_reservedwords[7] := 'ALTER'; + absolute_reservedwords[8] := 'AND'; + absolute_reservedwords[9] := 'ANY'; + absolute_reservedwords[10] := 'ARE'; + absolute_reservedwords[11] := 'AS'; + absolute_reservedwords[12] := 'ASC'; + absolute_reservedwords[13] := 'ASIN'; + absolute_reservedwords[14] := 'ASSERTION'; + absolute_reservedwords[15] := 'AT'; + absolute_reservedwords[16] := 'ATAN'; + absolute_reservedwords[17] := 'AUTHORIZATION'; + absolute_reservedwords[18] := 'AUTOINC'; + absolute_reservedwords[19] := 'AUTOINDEXES'; + absolute_reservedwords[20] := 'AVG'; + absolute_reservedwords[21] := 'BEGIN'; + absolute_reservedwords[22] := 'BETWEEN'; + absolute_reservedwords[23] := 'BIT'; + absolute_reservedwords[24] := 'BIT_LENGTH'; + absolute_reservedwords[25] := 'BLOBBLOCKSIZE'; + absolute_reservedwords[26] := 'BLOBCOMPRESSIONALGORITHM'; + absolute_reservedwords[27] := 'BLOBCOMPRESSIONMODE'; + absolute_reservedwords[28] := 'BOTH'; + absolute_reservedwords[29] := 'BY'; + absolute_reservedwords[30] := 'CASCADE'; + absolute_reservedwords[31] := 'CASCADED'; + absolute_reservedwords[32] := 'CASE'; + absolute_reservedwords[33] := 'CAST'; + absolute_reservedwords[34] := 'CATALOG'; + absolute_reservedwords[35] := 'CEIL'; + absolute_reservedwords[36] := 'CHAR'; + absolute_reservedwords[37] := 'CHAR_LENGTH'; + absolute_reservedwords[38] := 'CHARACTER'; + absolute_reservedwords[39] := 'CHARACTER_LENGTH'; + absolute_reservedwords[40] := 'CHECK'; + absolute_reservedwords[41] := 'CLOSE'; + absolute_reservedwords[42] := 'COALESCE'; + absolute_reservedwords[43] := 'COLLATE'; + absolute_reservedwords[44] := 'COLLATION'; + absolute_reservedwords[45] := 'COLUMN'; + absolute_reservedwords[46] := 'COMMIT'; + absolute_reservedwords[47] := 'CONNECT'; + absolute_reservedwords[48] := 'CONNECTION'; + absolute_reservedwords[49] := 'CONSTRAINT'; + absolute_reservedwords[50] := 'CONSTRAINTS'; + absolute_reservedwords[51] := 'CONTINUE'; + absolute_reservedwords[52] := 'CONVERT'; + absolute_reservedwords[53] := 'CORRESPONDING'; + absolute_reservedwords[54] := 'COS'; + absolute_reservedwords[55] := 'COUNT'; + absolute_reservedwords[56] := 'CREATE'; + absolute_reservedwords[57] := 'CROSS'; + absolute_reservedwords[58] := 'CURRENT'; + absolute_reservedwords[59] := 'CURRENT_DATE'; + absolute_reservedwords[60] := 'CURRENT_TIME'; + absolute_reservedwords[61] := 'CURRENT_TIMESTAMP'; + absolute_reservedwords[62] := 'CURRENT_USER'; + absolute_reservedwords[63] := 'CURSOR'; + absolute_reservedwords[64] := 'CYCLED'; + absolute_reservedwords[65] := 'DATE'; + absolute_reservedwords[66] := 'DAY'; + absolute_reservedwords[67] := 'DEALLOCATE'; + absolute_reservedwords[68] := 'DEC'; + absolute_reservedwords[69] := 'DECIMAL'; + absolute_reservedwords[70] := 'DECLARE'; + absolute_reservedwords[71] := 'DEFAULT'; + absolute_reservedwords[72] := 'DEFERRABLE'; + absolute_reservedwords[73] := 'DEFERRED'; + absolute_reservedwords[74] := 'DELETE'; + absolute_reservedwords[75] := 'DESC'; + absolute_reservedwords[76] := 'DESCRIBE'; + absolute_reservedwords[77] := 'DESCRIPTOR'; + absolute_reservedwords[78] := 'DIAGNOSTICS'; + absolute_reservedwords[79] := 'DISCONNECT'; + absolute_reservedwords[80] := 'DISTINCT'; + absolute_reservedwords[81] := 'DOMAIN'; + absolute_reservedwords[82] := 'DOUBLE'; + absolute_reservedwords[83] := 'DROP'; + absolute_reservedwords[84] := 'ELSE'; + absolute_reservedwords[85] := 'END'; + absolute_reservedwords[86] := 'END-EXEC'; + absolute_reservedwords[87] := 'ESCAPE'; + absolute_reservedwords[88] := 'EXCEPT'; + absolute_reservedwords[89] := 'EXCEPTION'; + absolute_reservedwords[90] := 'EXEC'; + absolute_reservedwords[91] := 'EXECUTE'; + absolute_reservedwords[92] := 'EXISTS'; + absolute_reservedwords[93] := 'EXP'; + absolute_reservedwords[94] := 'EXTERNAL'; + absolute_reservedwords[95] := 'EXTRACT'; + absolute_reservedwords[96] := 'FALSE'; + absolute_reservedwords[97] := 'FETCH'; + absolute_reservedwords[98] := 'FIRST'; + absolute_reservedwords[99] := 'FLOAT'; + absolute_reservedwords[100] := 'FLOOR'; + absolute_reservedwords[101] := 'FLUSH'; + absolute_reservedwords[102] := 'FOR'; + absolute_reservedwords[103] := 'FOREIGN'; + absolute_reservedwords[104] := 'FOUND'; + absolute_reservedwords[105] := 'FROM'; + absolute_reservedwords[106] := 'FULL'; + absolute_reservedwords[107] := 'GET'; + absolute_reservedwords[108] := 'GLOBAL'; + absolute_reservedwords[109] := 'GO'; + absolute_reservedwords[110] := 'GOTO'; + absolute_reservedwords[111] := 'GRANT'; + absolute_reservedwords[112] := 'GROUP'; + absolute_reservedwords[113] := 'HAVING'; + absolute_reservedwords[114] := 'HOUR'; + absolute_reservedwords[115] := 'IDENTITY'; + absolute_reservedwords[116] := 'IF'; + absolute_reservedwords[117] := 'IMMEDIATE'; + absolute_reservedwords[118] := 'IN'; + absolute_reservedwords[119] := 'INCREMENT'; + absolute_reservedwords[120] := 'INDEX'; + absolute_reservedwords[121] := 'INDICATOR'; + absolute_reservedwords[122] := 'INITIALLY'; + absolute_reservedwords[123] := 'INITIALVALUE'; + absolute_reservedwords[124] := 'INNER'; + absolute_reservedwords[125] := 'INPUT'; + absolute_reservedwords[126] := 'INSENSITIVE'; + absolute_reservedwords[127] := 'INSERT'; + absolute_reservedwords[128] := 'INT'; + absolute_reservedwords[129] := 'INTEGER'; + absolute_reservedwords[130] := 'INTERSECT'; + absolute_reservedwords[131] := 'INTERVAL'; + absolute_reservedwords[132] := 'INTO'; + absolute_reservedwords[133] := 'IS'; + absolute_reservedwords[134] := 'ISOLATION'; + absolute_reservedwords[135] := 'JOIN'; + absolute_reservedwords[136] := 'KEY'; + absolute_reservedwords[137] := 'LANGUAGE'; + absolute_reservedwords[138] := 'LAST'; + absolute_reservedwords[139] := 'LASTAUTOINC'; + absolute_reservedwords[140] := 'LASTVALUE'; + absolute_reservedwords[141] := 'LEADING'; + absolute_reservedwords[142] := 'LEFT'; + absolute_reservedwords[143] := 'LENGTH'; + absolute_reservedwords[144] := 'LEVEL'; + absolute_reservedwords[145] := 'LIKE'; + absolute_reservedwords[146] := 'LOCAL'; + absolute_reservedwords[147] := 'LOG'; + absolute_reservedwords[148] := 'LOWER'; + absolute_reservedwords[149] := 'LTRIM'; + absolute_reservedwords[150] := 'MATCH'; + absolute_reservedwords[151] := 'MAX'; + absolute_reservedwords[152] := 'MAXVALUE'; + absolute_reservedwords[153] := 'MEMORY'; + absolute_reservedwords[154] := 'MIMETOBIN'; + absolute_reservedwords[155] := 'MIN'; + absolute_reservedwords[156] := 'MINUS'; + absolute_reservedwords[157] := 'MINUTE'; + absolute_reservedwords[158] := 'MINVALUE'; + absolute_reservedwords[159] := 'MODIFY'; + absolute_reservedwords[160] := 'MODULE'; + absolute_reservedwords[161] := 'MONTH'; + absolute_reservedwords[162] := 'NAMES'; + absolute_reservedwords[163] := 'NATIONAL'; + absolute_reservedwords[164] := 'NATURAL'; + absolute_reservedwords[165] := 'NCHAR'; + absolute_reservedwords[166] := 'NEW'; + absolute_reservedwords[167] := 'NEXT'; + absolute_reservedwords[168] := 'NO'; + absolute_reservedwords[169] := 'NOAUTOINDEXES'; + absolute_reservedwords[170] := 'NOCASE'; + absolute_reservedwords[171] := 'NOCYCLED'; + absolute_reservedwords[172] := ''; + absolute_reservedwords[173] := 'NOMAXVALUE'; + absolute_reservedwords[174] := 'NOMINVALUE'; + absolute_reservedwords[175] := 'NOT'; + absolute_reservedwords[176] := 'NOW'; + absolute_reservedwords[177] := 'NULL'; + absolute_reservedwords[178] := 'NULLIF'; + absolute_reservedwords[179] := 'NUMERIC'; + absolute_reservedwords[180] := 'OCTET_LENGTH'; + absolute_reservedwords[181] := 'OF'; + absolute_reservedwords[182] := 'ON'; + absolute_reservedwords[183] := 'ONLY'; + absolute_reservedwords[184] := 'OPEN'; + absolute_reservedwords[185] := 'OPTION'; + absolute_reservedwords[186] := 'OR'; + absolute_reservedwords[187] := 'ORDER'; + absolute_reservedwords[188] := 'OUTER'; + absolute_reservedwords[189] := 'OUTPUT'; + absolute_reservedwords[190] := 'OVERLAPS'; + absolute_reservedwords[191] := 'PAD'; + absolute_reservedwords[192] := 'PARTIAL'; + absolute_reservedwords[193] := 'PASSWORD'; + absolute_reservedwords[194] := 'POS'; + absolute_reservedwords[195] := 'POSITION'; + absolute_reservedwords[196] := 'POWER'; + absolute_reservedwords[197] := 'PRECISION'; + absolute_reservedwords[198] := 'PREPARE'; + absolute_reservedwords[199] := 'PRESERVE'; + absolute_reservedwords[200] := 'PRIMARY'; + absolute_reservedwords[201] := 'PRIOR'; + absolute_reservedwords[202] := 'PRIVILEGES'; + absolute_reservedwords[203] := 'PROCEDURE'; + absolute_reservedwords[204] := 'PUBLIC'; + absolute_reservedwords[205] := 'RAND'; + absolute_reservedwords[206] := 'READ'; + absolute_reservedwords[207] := 'REAL'; + absolute_reservedwords[208] := 'REFERENCES'; + absolute_reservedwords[209] := 'RELATIVE'; + absolute_reservedwords[210] := 'RENAME'; + absolute_reservedwords[211] := 'RESTRICT'; + absolute_reservedwords[212] := 'REVOKE'; + absolute_reservedwords[213] := 'RIGHT'; + absolute_reservedwords[214] := 'ROLLBACK'; + absolute_reservedwords[215] := 'ROUND'; + absolute_reservedwords[216] := 'ROWNUM'; + absolute_reservedwords[217] := 'ROWS'; + absolute_reservedwords[218] := 'RTRIM'; + absolute_reservedwords[219] := 'SCHEMA'; + absolute_reservedwords[220] := 'SCROLL'; + absolute_reservedwords[221] := 'SECOND'; + absolute_reservedwords[222] := 'SECTION'; + absolute_reservedwords[223] := 'SELECT'; + absolute_reservedwords[224] := 'SESSION'; + absolute_reservedwords[225] := 'SESSION_USER'; + absolute_reservedwords[226] := 'SET'; + absolute_reservedwords[227] := 'SIGN'; + absolute_reservedwords[228] := 'SIN'; + absolute_reservedwords[229] := 'SIZE'; + absolute_reservedwords[230] := 'SMALLINT'; + absolute_reservedwords[231] := 'SOME'; + absolute_reservedwords[232] := 'SPACE'; + absolute_reservedwords[233] := 'SQL'; + absolute_reservedwords[234] := 'SQLCODE'; + absolute_reservedwords[235] := 'SQLERROR'; + absolute_reservedwords[236] := 'SQLSTATE'; + absolute_reservedwords[237] := 'SQR'; + absolute_reservedwords[238] := 'SQRT'; + absolute_reservedwords[239] := 'START'; + absolute_reservedwords[240] := 'SUBSTRING'; + absolute_reservedwords[241] := 'SUM'; + absolute_reservedwords[242] := 'SYSDATE'; + absolute_reservedwords[243] := 'SYSTEM_USER'; + absolute_reservedwords[244] := 'TABLE'; + absolute_reservedwords[245] := 'TEMPORARY'; + absolute_reservedwords[246] := 'THEN'; + absolute_reservedwords[247] := 'TIME'; + absolute_reservedwords[248] := 'TIMESTAMP'; + absolute_reservedwords[249] := 'TIMEZONE_HOUR'; + absolute_reservedwords[250] := 'TIMEZONE_MINUTE'; + absolute_reservedwords[251] := 'TO'; + absolute_reservedwords[252] := 'TODATE'; + absolute_reservedwords[253] := 'TOP'; + absolute_reservedwords[254] := 'TOSTRING'; + absolute_reservedwords[255] := 'TRAILING'; + absolute_reservedwords[256] := 'TRANSACTION'; + absolute_reservedwords[257] := 'TRANSLATE'; + absolute_reservedwords[258] := 'TRANSLATION'; + absolute_reservedwords[259] := 'TRIM'; + absolute_reservedwords[260] := 'TRUE'; + absolute_reservedwords[261] := 'TRUNCATE'; + absolute_reservedwords[262] := 'UNION'; + absolute_reservedwords[263] := 'UNIQUE'; + absolute_reservedwords[264] := 'UNKNOWN'; + absolute_reservedwords[265] := 'UPDATE'; + absolute_reservedwords[266] := 'UPPER'; + absolute_reservedwords[267] := 'USAGE'; + absolute_reservedwords[268] := 'USER'; + absolute_reservedwords[269] := 'USING'; + absolute_reservedwords[270] := 'VALUE'; + absolute_reservedwords[271] := 'VALUES'; + absolute_reservedwords[272] := 'VARCHAR'; + absolute_reservedwords[273] := 'VARYING'; + absolute_reservedwords[274] := 'VIEW'; + absolute_reservedwords[275] := 'WHEN'; + absolute_reservedwords[276] := 'WHENEVER'; + absolute_reservedwords[277] := 'WHERE'; + absolute_reservedwords[278] := 'WITH'; + absolute_reservedwords[279] := 'WORK'; + absolute_reservedwords[280] := 'WRITE'; + absolute_reservedwords[281] := 'YEAR'; + absolute_reservedwords[282] := 'ZONE'; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + absolute_InitializeReservedWords; +finalization + absolute_reservedwords := nil; + UnregisterDriverProc(GetDriverObject); + FreeAndNil(_driver); + +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas new file mode 100644 index 0000000..ba8c006 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAAnyDACDriver.pas @@ -0,0 +1,2897 @@ +{-------------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up } +{ platform: Win32 } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{ } +{ Based on AnyDAC Driver by Dmitry Arefiev (www.da-soft.com) } +{-------------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$I uAD.inc} + +unit uDAAnyDACDriver; + +interface + +uses + DB, Classes, + uROClasses, + uDAEngine, uDAInterfaces, uDAInterfacesEx, uDAUtils, uDAOracleInterfaces, + uDAMySQLInterfaces, uDAADOInterfaces, uDAIBInterfaces, uDADB2Interfaces, + uDASybaseInterfaces, uDASQLiteInterfaces, uDAPostgresInterfaces, + uADStanIntf, uADStanOption, uADDatSManager, uADPhysIntf, uADCompClient +{$IFDEF AnyDAC_MONITOR} + ,uADMoniBase, uADMoniCustom +{$ENDIF} + ; + +const + C_DriverMajVer = 3; + C_DriverMinVer = 50; + +type + TDAAnyDACDriverType = TADRDBMSKind; + + { TDAAnyDACDriver } + TDAAnyDACDriver = class(TDADriverReference) + end; + + { TDAEAnyDACDriver } + TDAEAnyDACDriver = class(TDAEDriver, IDADriver40) + private + FConnectionDefs: TStringList; + FConnectionDefIndex: Integer; +{$IFDEF AnyDAC_MONITOR} + FMonitor: TADMoniCustomClientLink; + FTraceCallback: TDALogTraceEvent; + procedure DoTrace(ASender: TADMoniClientLinkBase; const AClassName, AObjName, AMessage: String); +{$ENDIF} + function LookupConnectionString(const AConnectionString: String; AParsedParams: TStringList): String; + protected +{$IFDEF AnyDAC_MONITOR} + procedure DoSetTraceOptions(TraceActive: Boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; +{$ENDIF} + function GetConnectionClass: TDAEConnectionClass; override; + // IDADriver + procedure Initialize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Finalize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDriverID: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDescription: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetMajVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetMinVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} // IDADriver40 + procedure GetAuxDrivers(out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetProviderDefaultCustomParameters(Provider: string): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEAnyDACConnection } + TDAEAnyDACConnection = class(TDAEConnection, IDAConnection, + IDAADOConnection, + IDAInterbaseConnection, + IDAIBTransactionAccess, + IDAIBConnectionProperties, + IDAOracleConnection, + IDAMySQLConnection, + IDADB2Connection, + IDAPostgresConnection, + IDASQLiteConnection, + IDASybaseConnection, + IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + IDAUseGenerators, + IDAUseGenerators2, + IDACanQueryGeneratorsNames, + IDATestableObject) + private + FADConnection: TADConnection; + fDriverType: TDAAnyDACDriverType; + fMSSQLSchemaEnabled: Boolean; + fBiDirectionalDataSets: Boolean; + fDirectMode: Boolean; + FDataTypeSchema: String; + FMySQLVersion: integer; + FDataBaseName: string; + procedure DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); + procedure Native_DoGetTableFields(aTableName: string; out Fields: TDAFieldCollection); + procedure Native_DoGetForeignKeys(ForeignKeys: TDADriverForeignKeyCollection); + function Native_DoGetLastAutoInc(const GeneratorName: string): variant; + function Native_GetQuoteChars: TDAQuoteCharArray; + function GetAnyDACPhysConnection:IADPhysConnection; + procedure MapAsFIB; + function GetMySQLVersion: integer; + function GetDataBaseName: string; + protected + // IInterface + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + procedure SetupDataset(ADataSet: TADRdbmsDataSet; AFetchMeta: Boolean); + procedure SetupOptions(AOptions: IADStanOptions; AFetchMeta: Boolean); + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + // IDATestObject + // nothing + // IDAConnection + function GetSPSelectSyntax(AHasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetQuoteChars: TDAQuoteCharArray; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function IdentifierNeedsQuoting(const AIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAADOConnection + function GetProviderName: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetProviderType: TDAOleDBProviderType; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCommandTimeout: Integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCommandTimeout(const Value: Integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAInterbaseConnection + // nothing + // IDAIBTransactionAccess + function GetTransaction: TObject; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAIBConnectionProperties + function GetRole: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetRole(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetSQLDialect: integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetSQLDialect(Value: integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCharset: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCharset(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Commit; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Rollback; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAOracleConnection + // nothing + // IDAConnectionModelling + function FieldToDeclaration(aField: TDAField): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + // IDADirectoryBasedDatabase + // nothing + // IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAUseGenerators2 + function GetNextAutoinc2(const GeneratorName: string): variant; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + end; + + { TDAEAnyDACQuery } + TDAEAnyDACQuery = class(TDAEDataset, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + // TDAEDataset + procedure DoPrepare(AValue: boolean); override; + function DoExecute: integer; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; + procedure DoSetSQL(const AValue: string); override; + procedure ClearParams; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEAnyDACStoredProcedure } + TDAEAnyDACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + // TDAEDataset + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + TDAEAnyDACNativeDatabaseAccess = class; + + { TDAEAnyDACNativeField } + TDAEAnyDACNativeField = class(TInterfacedObject, IDANativeField) + private + FCol: TADDatSColumn; + FCmd: IADPhysCommand; + fParent: TDAEAnyDACNativeDatabaseAccess; + protected + function GetNativeObject: TObject; + function isTFieldCompatible: Boolean; + function GetFieldName: string; + function GetDataType: TFieldType; + function GetSize: integer; + function GetDecimalPrecision: Integer; + procedure SetDecimalPrecision(Value: integer); + function GetDecimalScale: Integer; + procedure SetDecimalScale(Value: integer); + procedure SetDataType(Value: TFieldType); + function GetFieldIndex: integer; + function GetValue: Variant; + function IsNull: Boolean; + public + constructor Create(ACol: TADDatSColumn; const ACmd: IADPhysCommand; AParent: TDAEAnyDACNativeDatabaseAccess); + end; + + { TDAEAnyDACNativeDatabaseAccess } + TDAEAnyDACNativeDatabaseAccessFlags = set of (nfActive, nfBOF, nfEOF); + TDAEAnyDACNativeDatabaseAccess = class(TObject, IInterface, IDANativeDatabaseAccess) + private + FCmd: IADPhysCommand; + FTab: TADDatSTable; + FFlags: TDAEAnyDACNativeDatabaseAccessFlags; + FRowIndex: Integer; + FRowsPurged: Integer; + FBuffs: array of Pointer; + procedure First; + procedure CheckActive; + procedure CheckBidir; + function LocateRecord(const KeyFields: string; const KeyValues: Variant; + Options: TLocateOptions; AChangePos: Boolean): Integer; + function IsNull(Index: integer): Boolean; + protected + // IInterface + function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + // IDANativeDatabaseAccess + procedure ClearFieldDefs; + function GetRecordCount: Integer; + function GetBOF: Boolean; + function GetEOF: Boolean; + function GetActive: Boolean; + procedure SetActive(const aValue: Boolean); + procedure Next; + function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; + function GetFieldName(Index: Integer): string; + procedure DisableControls; + procedure EnableControls; + function GetIsEmpty: boolean; + procedure FreeBookmark(Bookmark: TBookmark); + function GetBookMark: pointer; + procedure GotoBookmark(Bookmark: TBookmark); + function GetState: TDatasetState; + function ControlsDisabled: Boolean; + procedure Prepare(const AValue: Boolean); + function GetFields(Index: integer): IDANativeField; + function FieldCount: Integer; + function FindField(const FieldName: string): IDANativeField; + function IsTDatasetCompatible: Boolean; + function GetNativeFieldData(Index: Integer; var Data: pointer; var DataSize: cardinal):Boolean; + function GetNativeFieldValue(Index: Integer): Variant; + function CanFreeNativeFieldData: Boolean; + public + Constructor Create(ADAEConnection: TDAEAnyDACConnection); + destructor Destroy; override; + end; + + { TDAEAnyDACQueryNative } + TDAEAnyDACQueryNative = class(TDAEDataset, IDAMustSetParams) + private + function GetNativeObject: TDAEAnyDACNativeDatabaseAccess; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function CreateNativeObject(aConnection: TDAEConnection): TObject; override; + function CreateNativeDatabaseAccess: IDANativeDatabaseAccess; override; + // TDAEDataset + procedure DoPrepare(AValue: boolean); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; + procedure DoSetSQL(const AValue: string); override; + procedure ClearParams; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + property NativeObject: TDAEAnyDACNativeDatabaseAccess read GetNativeObject; + end; + + { TDAEAnyDACStoredProcedureNative } + TDAEAnyDACStoredProcedureNative = class(TDAEStoredProcedure, IDAMustSetParams) + private + function GetNativeObject: TDAEAnyDACNativeDatabaseAccess; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function CreateNativeObject(aConnection: TDAEConnection): TObject; override; + function CreateNativeDatabaseAccess: IDANativeDatabaseAccess; override; + // TDAEDataset + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + property NativeObject: TDAEAnyDACNativeDatabaseAccess read GetNativeObject; + end; + +procedure Register; +function GetDriverObject: IDADriver; stdcall; +function AnyDACDriverIdToAnyDACDriverType(Provider: string): TDAAnyDACDriverType; + +implementation + +uses + {$IFDEF FPC} LResources, {$ENDIF} + {$IFDEF MSWINDOWS} Windows, {$ENDIF} + SysUtils, Variants, FmtBCD, + uDADriverManager, uDARes, uDAHelpers, uROBinaryHelpers, + uADStanDef, uADStanAsync, uADStanPool, uADStanExpr, uADStanExprFuncs, + uADStanParam, uADStanConst, uADStanFactory, +{$IFDEF AnyDAC_MONITOR} + uADMoniFlatFile, uADMoniRemoteClient, +{$ENDIF} + uADDAptManager, + uADGUIxConsoleWait, + uADPhysManager, uADPhysODBC, uADPhysOracl, uADPhysMySQL, uADPhysMSSQL, + uADPhysMSAcc, uADPhysDB2, uADPhysASA, uADPhysIB, uADPhysADS, uADStanUtil, + uADPhysSQLite, uADPhysPg +{$IFDEF AnyDAC_D11} + , uADPhysTDBX +{$ELSE} + {$IFDEF AnyDAC_D6} + , uADPhysDbExp + {$ENDIF} +{$ENDIF}; + +{$IFNDEF FPC} + {$R DataAbstract_AnyDACDriver_Glyphs.res} +{$ENDIF} + +{$IFDEF DataAbstract_SchemaModelerOnly} + {$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +{------------------------------------------------------------------------------} +{ Generic procedures } +{------------------------------------------------------------------------------} +function AnyDACDriverIdToAnyDACDriverType(Provider: string): TDAAnyDACDriverType; +var + FConnectionIntf: IADPhysConnection; + oConMeta: IADPhysConnectionMetadata; +begin + Result := mkUnknown; + if Provider = '' then + Exit; + try + with TADConnection.Create(nil) do + try + ResultConnectionDef.DriverID := Provider; + ADPhysManager.CreateConnection(ResultConnectionDef, FConnectionIntf); + if FConnectionIntf <> nil then begin + FConnectionIntf.CreateMetadata(oConMeta); + Result := oConMeta.Kind; + end; + finally + Free; + end; + except + // hide an exception + end; +end; + +{------------------------------------------------------------------------------} +procedure SetADParamValuesFromDA(ADAParams: TDAParamCollection; + AADParams: TADParams; ASetType: Boolean); +var + i: integer; + oDAPar: TDAParam; + oADPar: TADParam; +begin + for i := 0 to AADParams.Count - 1 do begin + oADPar := AADParams[i]; + oDAPar := ADAParams.ParamByName(oADPar.Name); + oADPar.ParamType := TParamType(oDAPar.ParamType); + if oDAPar.ParamType in [daptInput, daptInputOutput, daptUnknown] then + if oDAPar.DataType in [datBlob, datMemo, datWideMemo, datXml] then begin + if ASetType then + if oDAPar.BlobType = dabtUnknown then + case oDAPar.DataType of + datMemo: oADPar.DataType := ftMemo; + datBlob: oADPar.DataType := ftBlob; + datXml, + datWideMemo: oADPar.DataType := {$IFDEF AnyDAC_D10} ftWideMemo {$ELSE} ftFmtMemo {$ENDIF}; + end + else + oADPar.DataType := BlobTypeMappings[oDAPar.BlobType]; + if VarIsEmpty(oDAPar.Value) or VarIsNull(oDAPar.Value) then + oADPar.Clear + else + oADPar.AsBlob := VariantToAnsiString(oDAPar.Value); + end + else begin + if ASetType then + oADPar.DataType := DATypeToVCLType(oDAPar.DataType); + if VarIsEmpty(oDAPar.Value) or VarIsNull(oDAPar.Value) then + oADPar.Clear + else + oADPar.Value := oDAPar.Value; + end + else + if ASetType then begin + oADPar.DataType := DATypeToVCLType(oDAPar.DataType); + oADPar.Size := oDAPar.Size; + oADPar.Precision := oDAPar.DecimalPrecision; + oADPar.NumericScale := oDAPar.DecimalScale; + end; + end; +end; + +{------------------------------------------------------------------------------} +procedure GetDAParamValuesFromAD(Params: TDAParamCollection; AADParams: TADParams); +var + i: integer; + oDAPar: TDAParam; + oADPar: TADParam; +begin + if not Assigned(AADParams) then + Exit; + for i := 0 to AADParams.Count - 1 do begin + oADPar := AADParams[i]; + oDAPar := Params.ParamByName(oADPar.Name); + if oDAPar.ParamType in [daptOutput, daptInputOutput, daptResult] then + oDAPar.Value := oADPar.Value; + end; +end; + +{------------------------------------------------------------------------------} +function MapAD2DADataType(AADDataType: TADDataType; out ABlobType: TDABlobType): TDADataType; +begin + ABlobType := dabtUnknown; + case AADDataType of + dtUnknown: Result := datUnknown; + dtBoolean: Result := datBoolean; + dtSByte: Result := datShortInt; + dtInt16: Result := datSmallInt; + dtInt32: Result := datInteger; + dtInt64: Result := datLargeInt; + dtByte: Result := datByte; + dtUInt16: Result := datWord; + dtUInt32: Result := datCardinal; + dtUInt64: Result := datLargeUInt; + dtDouble: Result := datFloat; + dtCurrency: Result := datFloat; // Double + dtBCD: Result := datCurrency; // Currency + dtFmtBCD: Result := datDecimal; // TBcd + dtDateTime: Result := datDateTime; + dtTime: Result := datDateTime; + dtDate: Result := datDateTime; + dtDateTimeStamp: Result := datDateTime; + dtAnsiString: Result := datString; + dtWideString: Result := datWideString; + dtByteString: Result := datString; + dtBlob: begin Result := datBlob; ABlobType := dabtBlob; end; + dtMemo: begin Result := datMemo; ABlobType := dabtMemo; end; + dtWideMemo: begin Result := datWideMemo; ABlobType := dabtMemo; end; + dtHBlob: begin Result := datBlob; ABlobType := dabtOraBlob; end; + dtHMemo: begin Result := datMemo; ABlobType := dabtOraClob; end; + dtWideHMemo: begin Result := datWideMemo; ABlobType := dabtOraClob; end; + dtHBFile: begin Result := datBlob; ABlobType := dabtOraBlob; end; + dtGUID: Result := datGuid; + else raise Exception.CreateFmt('AnyDAC data type [%s] is not supported by DataAbstract', + [C_AD_DataTypeNames[AADDataType]]); + end; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACDriver } +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEAnyDACConnection; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDriverID: string; +begin + result := 'AnyDAC'; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDescription: string; +begin + result := 'RemObjects AnyDAC v ' + C_AD_Version + ' Driver' + {$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetMajVersion: byte; +begin + Result := C_DriverMajVer; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetMinVersion: byte; +begin + Result := C_DriverMinVer; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.GetAuxDrivers(out List: IROStrings); +begin + List := NewROStrings; + ADManager.GetDriverNames(List.Strings); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetProviderDefaultCustomParameters(Provider: string): string; +begin + Result := ''; + case AnyDACDriverIdToAnyDACDriverType(Provider) of + mkOracle: Result := S_AD_ConnParam_Common_OSAuthent + '=No;'; + mkMSSQL: Result := 'Schemas=1;Integrated Security=SSPI;'; + mkMySQL: Result := MYSQL_GetDefaultCustomParameters; + mkInterbase: Result := S_AD_ConnParam_IB_Protocol + '=TCPIP;'; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.GetDefaultConnectionType(const AuxDriver: string): string; +begin + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: Result := Oracle_DriverType; + mkMSSQL: Result := MSSQL_DriverType; + mkMSAccess: Result := Access_DriverType; + mkMySQL: Result := MySQL_DriverType; + mkDB2: Result := DB2_DriverType; + mkASA: Result := ASA_DriverType; + mkInterbase: Result := IB_DriverType; + mkSQLite: Result := SQLite_DriverType; + mkPostgreSQL:Result := PostgreSQL_DriverType; + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +const + C_Line: String = '-----------------------------'; +begin + inherited; + + List.Add('AnyDAC Driver parameters'); + List.Add(C_Line); + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: + ; + mkMSSQL: + MSSQL_GetAuxParams(List); + mkMSAccess: + ; + mkMySQL: + MYSQL_GetAuxParams(List); + mkDB2: + ; + mkASA: + ; + mkInterbase: + begin + AddIBAuxParams(List); + List.Add('DataTypeSchema='); + end; + end; + List.Add('ConnectionDefName='); + List.Add('BiDirectionalDataSets=0,1'); + List.Add('DirectMode=0,1'); + List.Add(''); + + case AnyDACDriverIdToAnyDACDriverType(AuxDriver) of + mkOracle: + begin + List.Add('Oracle AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@SQLTrace=True;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Oracle_Server_(AnyDAC)'); + end; + mkMSSQL: + begin + List.Add('MSSQL AuxDriver parameters'); + List.Add(C_Line); + List.Add(''); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@App=My DA Server;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Microsoft_SQL_Server_(AnyDAC)'); + end; + mkMSAccess: + begin + List.Add('MSAccess AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@ReadOnly=True;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_MS_Access_database_(AnyDAC)'); + end; + mkMySQL: + begin + List.Add('MySQL AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@CharacterSet=utf8;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_MySQL_Server_(AnyDAC)'); + end; + mkDB2: + begin + List.Add('DB2 AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@Alias=MyDB;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_IBM_DB2_Server_(AnyDAC)'); + end; + mkASA: + begin + List.Add('ASA AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@ODBCAdvanced=AutoStart=Yes;@DatabaseFile=C:\sybase\addemo_asa10.db;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Sybase_SQL_Anywhere_(AnyDAC)'); + end; + mkInterBase: + begin + List.Add('IB/FB AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@Protocol=TCPIP;@CharacterSet=win1251;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Interbase_or_Firebird_Server_(AnyDAC)'); + end; + mkADS: + begin + List.Add('AdvantageDS AuxDriver parameters'); + List.Add(C_Line); + List.Add('You can pass any parameters directly to aux driver. Use the prefix ''@'' for this, e.g.:'); + List.Add('@DefaultType=Advantage;@ServerTypes=1;@Pooled=True'); + List.Add(''); + List.Add('Detailed description of aux driver parameters you can find at:'); + List.Add('http://wiki.remobjects.com/wiki/Connect_to_Advantage_Database_Server_(AnyDAC)'); + end; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Initialize; +begin + FConnectionDefs := TStringList.Create; + FConnectionDefs.Sorted := True; + FConnectionDefIndex := 0; + ADManager.Open; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.Finalize; +begin + ADManager.Close; + FreeAndNil(FConnectionDefs); +{$IFDEF AnyDAC_MONITOR} + FreeAndNil(FMonitor); +{$ENDIF} + ADTerminate; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACDriver.LookupConnectionString(const AConnectionString: String; + AParsedParams: TStringList): String; +var + i: Integer; +begin + i := FConnectionDefs.IndexOf(AConnectionString); + if i = -1 then begin + Inc(FConnectionDefIndex); + FConnectionDefs.AddObject(AConnectionString, TObject(FConnectionDefIndex)); + with ADManager.ConnectionDefs.AddConnectionDef do begin + Name := Format('__DACD_%d', [FConnectionDefIndex]); + Params.AddStrings(AParsedParams); + Result := Name; + end; + end + else + Result := Format('__DACD_%d', [Integer(FConnectionDefs.Objects[i])]); +end; + +{------------------------------------------------------------------------------} +{$IFDEF AnyDAC_MONITOR} +procedure TDAEAnyDACDriver.DoTrace(ASender: TADMoniClientLinkBase; + const AClassName, AObjName, AMessage: String); +begin + if Assigned(FTraceCallback) then + FTraceCallback(ASender, AMessage, 0); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + eKinds: TADMoniEventKinds; +begin + inherited; + if TraceActive then begin + FTraceCallBack := Callback; + eKinds := []; + if toPrepare in TraceOptions then eKinds := eKinds + [ekCmdPrepare]; + if toExecute in TraceOptions then eKinds := eKinds + [ekCmdExecute]; + if toFetch in TraceOptions then eKinds := eKinds + [ekCmdDataIn]; + if toError in TraceOptions then eKinds := eKinds + [ekError]; + // if toStmt in TraceOptions then eKinds := eKinds + [tfStmt]; + if toConnect in TraceOptions then eKinds := eKinds + [ekConnConnect]; + if toTransact in TraceOptions then eKinds := eKinds + [ekConnTransact]; + // if toBlob in TraceOptions then eKinds := eKinds + [tfBlob]; + if toService in TraceOptions then eKinds := eKinds + [ekVendor]; + if toMisc in TraceOptions then eKinds := eKinds + [ekConnService, ekLiveCycle, ekAdaptUpdate]; + if toParams in TraceOptions then eKinds := eKinds + [ekCmdDataIn, ekCmdDataOut]; + if FMonitor = nil then FMonitor := TADMoniCustomClientLink.Create(Self); + FMonitor.Tracing := False; + FMonitor.OnOutput := DoTrace; + FMonitor.EventKinds := eKinds; + FMonitor.Tracing := True; + end + else begin + if FMonitor <> nil then + FMonitor.Tracing := False; + FTraceCallback := nil; + end; +end; +{$ENDIF} + +{------------------------------------------------------------------------------} +{ TDAEAnyDACConnection } +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAADOConnection) then begin + if fDriverType <> mkMSSQL then Exit; + end else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBTransactionAccess) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBConnectionProperties) then begin + if fDriverType <> mkInterbase then Exit; + end else if IsEqualGUID(IID, IDAOracleConnection) then begin + if fDriverType <> mkOracle then Exit; + end else if IsEqualGUID(IID, IDADB2Connection) then begin + if fDriverType <> mkDB2 then Exit; + end else if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [mkASA, mkADS]) then Exit; + end else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if fDriverType <> mkMySQL then Exit; + end else if IsEqualGUID(IID, IDAPostgresConnection) then begin + if fDriverType <> mkPostgreSQL then Exit; + end else if IsEqualGUID(IID, IDASQLiteConnection) then begin + if fDriverType <> mkSQLite then Exit; + end else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if not (fDriverType in [mkMSSQL, mkMySQL, mkPostgreSQL]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [mkInterBase,mkMSAccess, mkSQLite]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fDriverType in [mkInterBase, mkOracle,mkPostgreSQL]) then Exit; + end else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [mkInterBase]) then Exit; + end + // else if IsEqualGUID(IID, IDAConnectionModelling) then + ; + Result := inherited QueryInterface(IID, Obj); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + if FDirectMode then + result := TDAEAnyDACQueryNative + else + result := TDAEAnyDACQuery; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + if FDirectMode then + result := TDAEAnyDACStoredProcedureNative + else + result := TDAEAnyDACStoredProcedure; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.CreateCustomConnection: TCustomConnection; +begin + fDriverType := mkUnknown; + FADConnection := TADConnection.Create(nil); + with FADConnection do begin + LoginPrompt := False; + FetchOptions.Mode := fmAll; + FetchOptions.RowsetSize := 100; + ResourceOptions.SilentMode := True; + ResourceOptions.UnifyParamNames := True; + end; + result := FADConnection; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetAnyDACPhysConnection: IADPhysConnection; +begin + Result := FADConnection.ConnectionIntf; + if Result = nil then + ADPhysManager.CreateConnection(FADConnection.ConnectionDefName, Result); +end; + +{------------------------------------------------------------------------------} + +{ +Database= S_AD_ConnParam_Common_Database +User_Name= S_AD_ConnParam_Common_UserName +Password= S_AD_ConnParam_Common_Password + +Oracle +====== +OSAuthent= S_AD_ConnParam_Common_OSAuthent +DriverID=Ora + +MSAccess +======== +SystemDB= S_AD_ConnParam_MSAcc_SysDB +DriverID=MSAcc + +DB2 +=== +Alias= S_AD_ConnParam_DB2_Alias +Server= S_AD_ConnParam_Common_Server +Port= S_AD_ConnParam_Common_Port +Protocol= S_AD_ConnParam_DB2_Protocol +DriverID=DB2 + +ASA +=== +Server= S_AD_ConnParam_Common_Server +DatabaseFile= S_AD_ConnParam_ASA_DatabaseFile +OSAuthent= S_AD_ConnParam_Common_OSAuthent +App= S_AD_ConnParam_ASA_App +Compress= S_AD_ConnParam_ASA_Compress +Encrypt= S_AD_ConnParam_ASA_Encrypt +DriverID=ASA + +ADS +=== +DefaultType= +ServerTypes= +DriverID=ADS + +MSSQL +===== +Server= S_AD_ConnParam_Common_Server +Network= S_AD_ConnParam_MSSQL_Network +Address= S_AD_ConnParam_MSSQL_Address +OSAuthent= S_AD_ConnParam_Common_OSAuthent +Workstation= S_AD_ConnParam_MSSQL_Workstation +App= S_AD_ConnParam_MSSQL_App +Encrypt= S_AD_ConnParam_MSSQL_Encrypt +Language= S_AD_ConnParam_MSSQL_Language +DriverID=MSSQL + +MySQL +===== +CharacterSet= S_AD_ConnParam_Common_CharacterSet +Server= S_AD_ConnParam_Common_Server +Port= S_AD_ConnParam_Common_Port +DriverID=MySQL + +IB +== +Protocol= S_AD_ConnParam_IB_Protocol +Server= S_AD_ConnParam_Common_Server +InstanceName= S_AD_ConnParam_IB_InstanceName +CharacterSet= S_AD_ConnParam_Common_CharacterSet +RoleName= S_AD_ConnParam_IB_RoleName +SQLDialect= S_AD_ConnParam_IB_SQLDialect +DriverID=IB + +Other +===== +ODBCDriver= +DataSource= +RDBMS= +ODBCAdvanced= +DriverID=ODBC +} + +procedure TDAEAnyDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + sName, sValue: string; + i: integer; + oParams: TStringList; +begin + FMySQLVersion := -1; + fDriverType := mkUnknown; + FDataTypeSchema := ''; + fMSSQLSchemaEnabled := False; + fBiDirectionalDataSets := False; + fDirectMode := False; + + inherited DoApplyConnectionString(aConnStrParser, aConnectionObject); + oParams := TStringList.Create; + try + with aConnStrParser do begin + oParams.Values[S_AD_ConnParam_Common_DriverID] := AuxDriver; + fDriverType := AnyDACDriverIdToAnyDACDriverType(AuxDriver); + + if (Self.UserID <> '') then + oParams.Values[S_AD_ConnParam_Common_UserName] := Self.UserID + else if (UserID <> '') then + oParams.Values[S_AD_ConnParam_Common_UserName] := UserID; + + if (Self.Password <> '') then + oParams.Values[S_AD_ConnParam_Common_Password] := Self.Password + else if (Password <> '') then + oParams.Values[S_AD_ConnParam_Common_Password] := Password; + + if Database <> '' then + oParams.Values[S_AD_ConnParam_Common_Database] := Database; + FDataBaseName := DataBase; + + if Server <> '' then + oParams.Values[S_AD_ConnParam_Common_Server] := Server; + + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if SameText(sName, 'Schemas') then begin + fMSSQLSchemaEnabled := sValue = '1'; + Continue; + end + else if SameText(sName, 'Dialect') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_IB_SQLDialect; + end + else if SameText(sName, 'Role') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_IB_RoleName; + end + else if SameText(sName, 'Charset') then begin + if fDriverType = mkInterBase then + sName := S_AD_ConnParam_Common_CharacterSet; + end + else if SameText(sName, 'Port') then begin + if StrToIntDef(sValue, -1) <> -1 then + sName := S_AD_ConnParam_Common_Port; + end + else if SameText(sName, 'ConnectionDefName') then + sName := S_AD_DefinitionParam_Common_ConnectionDef + else if SameText(sName, 'DataTypeSchema') then begin + if fDriverType = mkInterBase then + FDataTypeSchema := UpperCase(sValue); + end + else if SameText(sName, 'Integrated Security') then begin + if (fDriverType = mkMSSQL) and (sValue = 'SSPI') then begin + sName := S_AD_ConnParam_Common_OSAuthent; + sValue := 'Yes'; + end + else + Continue; + end + else if SameText(sName, 'BiDirectionalDataSets') then begin + fBiDirectionalDataSets := sValue = '1'; + Continue; + end + else if SameText(sName, 'DirectMode') then begin + fDirectMode := sValue = '1'; + Continue; + end + else + if sName[1] = '@' then + sName := Pchar(sName) + 1; + oParams.Values[sName] := sValue; + end; + end; + + FADConnection.ConnectionDefName := + TDAEAnyDACDriver(Driver).LookupConnectionString(GetConnectionString, oParams); + + if FDataTypeSchema = 'FIB' then + MapAsFIB; + finally + oParams.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.MapAsFIB; +begin + with FADConnection.FormatOptions do begin + OwnMapRules := True; + MapRules.Clear; + with MapRules.Add do begin + SourceDataType := dtFmtBCD; + TargetDataType := dtDouble; + end; + with MapRules.Add do begin + SourceDataType := dtCurrency; + TargetDataType := dtDouble; + end; + with MapRules.Add do begin + SourceDataType := dtBCD; + TargetDataType := dtBCD; + end; + with MapRules.Add do begin + SourceDataType := dtInt64; + TargetDataType := dtBCD; + end; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetMySQLVersion: integer; +begin + if FMySQLVersion = -1 then FMySQLVersion := MYSQL_GetVersion(GetDatasetClass.Create(Self)); + Result := FMySQLVersion; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoBeginTransaction: integer; +begin + Result := 0; + FADConnection.StartTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoCommitTransaction; +begin + FADConnection.Commit; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoRollbackTransaction; +begin + FADConnection.Rollback; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoGetInTransaction: boolean; +begin + result := FADConnection.InTransaction; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.Native_DoGetLastAutoInc(const GeneratorName: string): variant; +var + v: Variant; +begin + v := FADConnection.GetLastAutoGenValue(GeneratorName); + if VarIsNull(v) then + Result := -1 + else + Result := v; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +begin + case fDriverType of + mkOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkMySQL: Result := MySQL_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkInterBase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + mkPostgreSQL: Result := Postgres_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + else + Result := Native_DoGetLastAutoInc(GeneratorName); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, GetDataBaseName,GetMySQLVersion); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + mkSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + mkPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self),List,dotProcedure); + else + DoGetNames(List, dotProcedure); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetViewNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, GetDataBaseName,GetMySQLVersion); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + mkSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + mkPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + DoGetNames(List, dotView); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + mkMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, GetDataBaseName,GetMySQLVersion); + mkInterbase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + mkSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + mkPostgreSQL:Postgres_DoGetNames(GetDatasetClass.Create(Self),List,dotTable); + else + DoGetNames(List, dotTable); + end +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Native_DoGetTableFields(aTableName: string; out Fields: TDAFieldCollection); +var + oMIQ: TADMetaInfoQuery; + eAttrs: TADDataAttributes; + eBlobType: TDABlobType; + lUseROWIDAsPK: Boolean; + oFld: TDAField; +begin + aTableName := QuoteIdentifierIfNeeded(aTableName); + Fields := TDAFieldCollection.Create(nil); + lUseROWIDAsPK := False; + oMIQ := TADMetaInfoQuery.Create(nil); + try + oMIQ.Connection := FADConnection; + oMIQ.ObjectName := aTableName; + oMIQ.MetaInfoKind := mkTableFields; + oMIQ.Open; + while not oMIQ.Eof do begin + with Fields.Add do begin + Name := oMIQ.FieldByName('COLUMN_NAME').AsString; + Size := oMIQ.FieldByName('COLUMN_LENGTH').AsInteger; + eAttrs := TADDataAttributes({$IFDEF FPC}ord{$ELSE}Word{$ENDIF}(oMIQ.FieldByName('COLUMN_ATTRIBUTES').AsInteger)); + DataType := MapAD2DADataType(TADDataType(oMIQ.FieldByName('COLUMN_DATATYPE').AsInteger), eBlobType); + if eBlobType <> dabtUnknown then BlobType := eBlobType; + if (DataType = datInteger) and (caAutoInc in eAttrs) then DataType := datAutoInc; + if (DataType = datLargeInt) and (caAutoInc in eAttrs) then DataType := datLargeAutoInc; + Required := not (caAllowNull in eAttrs); + ReadOnly := caReadOnly in eAttrs; + if caROWID in eAttrs then begin + InPrimaryKey := True; + lUseROWIDAsPK := True; + end; + // DefaultValue + // ServerAutoRefresh + end; + oMIQ.Next; + end; + + if not lUseROWIDAsPK then begin + oMIQ.Close; + oMIQ.BaseObjectName := oMIQ.ObjectName; + oMIQ.ObjectName := ''; + oMIQ.MetaInfoKind := mkPrimaryKeyFields; + oMIQ.Open; + while not oMIQ.Eof do begin + oFld := Fields.FindField(oMIQ.FieldByName('COLUMN_NAME').AsString); + if oFld <> nil then + oFld.InPrimaryKey := True; + oMIQ.Next; + end; + end; + + finally + oMIQ.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Native_DoGetForeignKeys(ForeignKeys: TDADriverForeignKeyCollection); +var + oTabs, oFKeys, oFKeyFields: TADMetaInfoQuery; + sFKFields, sPKFields: String; + oConnMeta: IADPhysConnectionMetadata; + + function QuoteName(const AName: String): String; + begin + if AName = '' then + Result := '' + else + Result := oConnMeta.NameQuotaChar1 + AName + oConnMeta.NameQuotaChar2; + end; + +begin + GetAnyDACPhysConnection.CreateMetadata(oConnMeta); + ForeignKeys := TDADriverForeignKeyCollection.Create(nil); + oTabs := TADMetaInfoQuery.Create(nil); + oFKeys := TADMetaInfoQuery.Create(nil); + oFKeyFields := TADMetaInfoQuery.Create(nil); + try + oTabs.Connection := FADConnection; + oTabs.MetaInfoKind := mkTables; + oTabs.TableKinds := [tkTable, tkTempTable, tkLocalTable]; + oFKeys.MetaInfoKind := mkForeignKeys; + oFKeys.Connection := FADConnection; + oFKeys.MetaInfoKind := mkForeignKeys; + oFKeyFields.Connection := FADConnection; + oFKeyFields.MetaInfoKind := mkForeignKeyFields; + oTabs.Open; + while not oTabs.Eof do begin + oFKeys.Close; + oFKeys.CatalogName := QuoteName(oTabs.Fields[1].AsString); + oFKeys.SchemaName := QuoteName(oTabs.Fields[2].AsString); + oFKeys.ObjectName := QuoteName(oTabs.Fields[3].AsString); + oFKeys.Open; + while not oFKeys.Eof do begin + oFKeyFields.Close; + oFKeyFields.CatalogName := QuoteName(oFKeys.Fields[1].AsString); + oFKeyFields.SchemaName := QuoteName(oFKeys.Fields[2].AsString); + oFKeyFields.BaseObjectName := QuoteName(oFKeys.Fields[3].AsString); + oFKeyFields.ObjectName := QuoteName(oFKeys.Fields[4].AsString); + oFKeyFields.Open; + sPKFields := ''; + sFKFields := ''; + while not oFKeyFields.Eof do begin + if sPKFields <> '' then + sPKFields := sPKFields + ','; + sPKFields := sPKFields + oFKeyFields.Fields[6].AsString; + if sFKFields <> '' then + sFKFields := sFKFields + ','; + sFKFields := sFKFields + oFKeyFields.Fields[5].AsString; + oFKeyFields.Next; + end; + with ForeignKeys.Add do begin + PKTable := FADConnection.EncodeObjectName(oFKeys.Fields[5].AsString, + oFKeys.Fields[6].AsString, '', oFKeys.Fields[7].AsString); + PKField := sPKFields; + FKTable := FADConnection.EncodeObjectName(oFKeys.Fields[1].AsString, + oFKeys.Fields[2].AsString, '', oFKeys.Fields[3].AsString); + FKField := sFKFields; + end; + oFKeys.Next; + end; + oTabs.Next; + end; + finally + oTabs.Free; + oFKeys.Free; + oFKeyFields.Free; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); +begin + case AObjectType of + dotTable: FADConnection.GetTableNames('', '', '', AList.Strings, [osMy], [tkTable]); + dotProcedure: FADConnection.GetStoredProcNames('', '', '', '', AList.Strings, [osMy]); + dotView: FADConnection.GetTableNames('', '', '', AList.Strings, [osMy], [tkView]); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + case fDriverType of + mkOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + mkMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + mkMySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields, GetDataBaseName,GetMySQLVersion); + mkInterBase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + mkPostgreSQL:Postgres_DoGetTableFields(aTableName, GetDatasetClass.Create(Self), Fields); + else + Native_DoGetTableFields(aTableName,Fields); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + mkMySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params, GetDataBaseName); + mkOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + mkMSSQL: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited; + case fDriverType of + mkOracle: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + mkMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled); + mkMySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, GetDataBaseName,GetMySQLVersion); + mkInterBase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + mkSQLite: SQLite_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + mkPostgreSQL:Postgres_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + else + Native_DoGetForeignKeys(ForeignKeys); + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + mkOracle: Result := Oracle_CreateMacroProcessor; + mkMSSQL,mkMSAccess: Result := MSSQL_CreateMacroProcessor; + mkInterBase: Result := IB_CreateMacroProcessor; + else + Result := inherited CreateMacroProcessor; + end; +end; + +{------------------------------------------------------------------------------} +// IDAConnection + +function TDAEAnyDACConnection.GetSPSelectSyntax(AHasArguments: Boolean): string; +begin + case fDriverType of + mkOracle: Result := Oracle_GetSPSelectSyntax(AHasArguments); + mkMSSQL: Result := MSSQL_GetSPSelectSyntax(AHasArguments); + mkInterBase: Result := IB_GetSPSelectSyntax(AHasArguments); + mkPostgreSQL:Result := Postgres_GetSPSelectSyntax(AHasArguments); + else + Result := inherited GetSPSelectSyntax(AHasArguments); + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.Native_GetQuoteChars: TDAQuoteCharArray; +var + oConnMeta: IADPhysConnectionMetadata; +begin + GetAnyDACPhysConnection.CreateMetadata(oConnMeta); + result[0] := oConnMeta.NameQuotaChar1; + result[1] := oConnMeta.NameQuotaChar2; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fDriverType of + mkMSSQL: Result := MSSQL_GetQuoteChars; + mkOracle: Result := Oracle_GetQuoteChars; + else + Result := Native_GetQuoteChars; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.IdentifierNeedsQuoting(const AIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(AIdentifier); + if not Result then + case fDriverType of + mkORACLE: Result := Oracle_IdentifierNeedsQuoting(AIdentifier); + mkMSSQL: Result := MSSQL_IdentifierNeedsQuoting(AIdentifier); + mkMySQL: Result := MYSQL_IdentifierNeedsQuoting(AIdentifier); + mkInterBase: Result := IB_IdentifierNeedsQuoting(AIdentifier, GetSQLDialect); + mkDB2: Result := DB2_IdentifierNeedsQuoting(AIdentifier); + mkASA,mkADS: Result := Sybase_IdentifierNeedsQuoting(AIdentifier); + mkSQLite: Result := SQLite_IdentifierNeedsQuoting(AIdentifier); + mkPostgreSQL:Result := Postgres_IdentifierNeedsQuoting(AIdentifier); + else + end; +end; + +{------------------------------------------------------------------------------} +// IDAADOConnection + +function TDAEAnyDACConnection.GetCommandTimeout: Integer; +begin + Result := Integer(FADConnection.ResourceOptions.CmdExecTimeout); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetCommandTimeout(const Value: Integer); +begin + FADConnection.ResourceOptions.CmdExecTimeout := Value; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetProviderName: string; +begin + Result := FADConnection.ResultConnectionDef.DriverID; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetProviderType: TDAOleDBProviderType; +var + s: String; +begin + s := GetProviderName; + if SameText(s, S_AD_MSSQLId) then + Result := oledb_MSSQL + else if SameText(s, S_AD_MSAccId) then + Result := oledb_Jet + else if SameText(s, S_AD_OraId) then + Result := oledb_Oracle + else if SameText(s, S_AD_ODBCId) then + Result := oledb_ODBC + else if SameText(s, S_AD_PGId) then + Result := oledb_Postgresql + else + Result := oledb_Unknown; + // oledb_MSSQL2005 + // oleDb_VisualFoxPro + // oledb_MSSQL2008 +end; + +{------------------------------------------------------------------------------} +// IDAIBTransactionAccess + +function TDAEAnyDACConnection.GetTransaction: TObject; +begin + Result := FADConnection.Transaction; +end; + +{------------------------------------------------------------------------------} +// IDAIBConnectionProperties + +function TDAEAnyDACConnection.GetSQLDialect: integer; +begin + Result := StrToIntDef(FADConnection.Params.Values[S_AD_ConnParam_IB_SQLDialect],3); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetSQLDialect(Value: integer); +begin + FADConnection.Params.Values[S_AD_ConnParam_IB_SQLDialect] := IntToStr(Value); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetCharset: string; +begin + Result := FADConnection.Params.Values[S_AD_ConnParam_Common_CharacterSet]; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetCharset(const Value: string); +begin + FADConnection.Params.Values[S_AD_ConnParam_Common_CharacterSet] := Value; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetRole: string; +begin + Result := FADConnection.Params.Values[S_AD_ConnParam_IB_RoleName]; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetRole(const Value: string); +begin + FADConnection.Params.Values[S_AD_ConnParam_IB_RoleName] := Value; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Commit; +begin + Self.DoCommitTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.Rollback; +begin + Self.DoRollbackTransaction; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.CommitRetaining; +begin + FADConnection.CommitRetaining; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.RollbackRetaining; +begin + FADConnection.RollbackRetaining; +end; + +{------------------------------------------------------------------------------} +// IDAConnectionModelling + +function TDAEAnyDACConnection.FieldToDeclaration(aField: TDAField): string; +begin + Result := ''; + case fDriverType of + mkMSSQL: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'money'; + datAutoInc: result := 'int IDENTITY(1,1)'; + datInteger: result := 'int'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datBlob: result := 'image'; + datWideString: result := Format('nvarchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'bigint IDENTITY(1,1)'; + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'int'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'bigint'; + datLargeUInt: result := 'bigint'; + datGuid: result := 'uniqueidentifier'; + datXml: result := 'ntext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkOracle: + case aField.DataType of + datString: result := Format('varchar2(%d)', [aField.Size]); + datDateTime: result := 'date'; + datFloat: result := 'float'; + datCurrency: result := 'number(19,4)'; + datAutoInc: result := 'number(10,0)'; + datInteger: result := 'number(10,0)'; + datLargeInt: result := 'number(19,0)'; + datBoolean: result := 'number(1)'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'long raw'; + dabtMemo: result := 'long'; + dabtOraBlob: result := 'blob'; + dabtOraClob: result := 'clob'; + else if aField.DataType = datMemo then result := 'long' else result := 'long raw'; + end; + datWideString: result := Format('nvarchar2(%d)', [aField.Size]); + datWideMemo: result := 'nclob'; + datLargeAutoInc: result := 'number(19,0)'; + datByte: result := 'number(3,0)'; + datShortInt: result := 'number(3,0)'; + datWord: result := 'number(5,0)'; + datSmallInt: result := 'number(5,0)'; + datCardinal: result := 'number(10,0)'; + datLargeUInt: result := 'number(19,0)'; + datGuid: result := 'varchar2(38)'; + datXml: result := 'XMLType'; + datDecimal: result := 'number'; + datSingleFloat: result := 'float'; + end; + + mkMySQL: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'double'; + datCurrency: result := 'decimal(19,4)'; + datAutoInc: result := 'int auto_increment'; + datInteger: result := 'int'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bool'; + datMemo: result := 'longtext'; + datBlob: result := 'longblob'; + datWideString: result := Format('varchar(%d) character set utf8', [aField.Size]); + datWideMemo: result := 'longtext character set utf8'; + datLargeAutoInc: result := 'bigint auto_increment'; + datByte: result := 'tinyint unsigned'; + datShortInt: result := 'tinyint'; + datWord: result := 'smallint unsigned'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'int unsigned'; + datLargeUInt: result := 'bigint unsigned'; + datGuid: result := 'varchar(38)'; + datXml: result := 'longtext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'float'; + end; + + mkMSAccess: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'datetime'; + datFloat: result := 'float'; + datCurrency: result := 'currency'; + datAutoInc: result := 'IDENTITY(1,1)'; + datInteger: result := 'integer'; + datLargeInt: result := 'decimal(19,0)'; + datBoolean: result := 'boolean'; + datMemo: result := 'memo'; + datBlob: result := 'image'; + datWideString: result := Format('nchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'IDENTITY(1,1)'; + datByte: result := 'byte'; + datShortInt: result := 'tinyint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'integer'; + datLargeUInt: result := 'decimal(19,0)'; + datGuid: result := 'varchar(38)'; + datXml: result := 'ntext'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkDB2: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'real'; + datCurrency: result := 'decimal(19,4)'; + datAutoInc: result := 'integer not null generated always as identity (start with 1, increment by 1, no cache)'; + datInteger: result := 'integer'; + datLargeInt: result := 'bigint'; // >= 9.1 + datBoolean: result := 'smallint'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'long varchar for bit data'; + dabtMemo: result := 'long varchar '; + dabtOraBlob: result := 'blob'; + dabtOraClob: result := 'clob'; + else if aField.DataType = datMemo then result := 'long varchar' else result := 'long varchar for bit data'; + end; + datWideString: result := Format('vargraphic(%d)', [aField.Size]); + datWideMemo: result := 'clob'; + datLargeAutoInc: result := 'bigint not null generated always as identity (start with 1, increment by 1, no cache)'; // >= 9.1 + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'integer'; + datLargeUInt: result := 'bigint'; // >= 9.1 + datGuid: result := 'varchar(38)'; + datXml: result := 'clob'; + datDecimal: result := 'number'; + datSingleFloat: result := 'real'; + end; + + mkASA: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'double'; + datCurrency: result := 'money'; + datAutoInc: result := 'integer identity(1,1)'; + datInteger: result := 'integer'; + datLargeInt: result := 'bigint'; + datBoolean: result := 'bit'; + datMemo: result := 'text'; + datBlob: result := 'image'; + datWideString: result := Format('nvarchar(%d)', [aField.Size]); + datWideMemo: result := 'ntext'; + datLargeAutoInc: result := 'bigint identity(1,1)'; + datByte: result := 'unsigned tinyint'; + datShortInt: result := 'tinyint'; + datWord: result := 'unsigned smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'unsigned integer'; + datLargeUInt: result := 'unsigned bigint'; + datGuid: result := 'uniqueidentifierstr'; + datXml: result := 'xml'; + datDecimal: result := 'decimal'; + datSingleFloat: result := 'real'; + end; + + mkInterbase: + case aField.DataType of + datString: result := Format('varchar(%d)', [aField.Size]); + datDateTime: result := 'timestamp'; + datFloat: result := 'double precision'; + datCurrency: result := 'decimal(18,4)'; + datAutoInc: result := 'integer'; + datInteger: result := 'integer'; + datLargeInt: result := 'decimal(18,0)'; + datBoolean: result := 'integer check (value in (0, 1))'; + datMemo, + datBlob: + case aField.BlobType of + dabtBlob: result := 'blob(2000,0)'; + dabtMemo: result := 'blob(2000,1)'; + dabtOraBlob: result := 'blob(2000,0)'; + dabtOraClob: result := 'blob(2000,1)'; + else if aField.DataType = datMemo then result := 'blob(2000,1)' else result := 'blob(2000,0)'; + end; + datWideString: result := Format('varchar(%d) character set unicode_fss', [aField.Size]); + datWideMemo: result := 'blob sub_type 1 segment size 2000 character set unicode_fss'; + datLargeAutoInc: result := 'decimal(18,0)'; + datByte: result := 'smallint'; + datShortInt: result := 'smallint'; + datWord: result := 'smallint'; + datSmallInt: result := 'smallint'; + datCardinal: result := 'decimal(10,0)'; + datLargeUInt: result := 'decimal(18,0)'; + datGuid: result := 'varchar(38)'; + datXml: result := 'blob(2000,1)'; + datDecimal: result := 'decimal(18,6)'; + datSingleFloat: result := 'float'; + end; + end; + + if Result = '' then + raise Exception.CreateFmt('DataAbstract [%d] data type of field [%s] for DBMS [%s] is not supported', + [Integer(aField.DataType), aField.Name, C_AD_PhysRDBMSKinds[fDriverType]]); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.BuildCreateTableSQL(aDataSet: TDADataSet; + const aOverrideName: string): string; +var + lName: string; +begin + lName := aOverrideName; + if lName = '' then + lName := aDataSet.Name; + result := uDAHelpers.BuildCreateStatementForTable(aDataSet, lName, self); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.CreateTable(aDataSet: TDADataSet; const aOverrideName: string); +var + sSQL: string; +begin + sSQL := BuildCreateTableSQL(aDataSet, aOverrideName); + with NewCommand(sSQL, stSQL) do + Execute(); +end; + +{------------------------------------------------------------------------------} +// IDACanQueryDatabaseNames + +function TDAEAnyDACConnection.GetDataBaseName: string; +begin + Result := FDataBaseName; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + mkMSSQL: Result := MSSQL_GetDatabaseNames(Self); + mkMySQL: Result := MYSQL_GetDatabaseNames(Self); + mkPostgreSQL: Result := Postgres_GetDatabaseNames(Self); + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAFileBasedDatabase + +function TDAEAnyDACConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + mkInterBase: Result := IB_GetFileExtensions; + mkMSAccess: Result := MSACCESS_GetFileExtensions; + mkSQLite: Result := SQLite_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +// IDAUseGenerators + +function TDAEAnyDACConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + Result := -1; + case fDriverType of + mkInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + mkOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + mkPostgreSQL:Result := Postgres_GetNextAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACConnection.GetNextAutoinc(const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +{------------------------------------------------------------------------------} +// IDACanQueryGeneratorsNames + +function TDAEAnyDACConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + mkInterBase: Result := IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetupOptions(AOptions: IADStanOptions; + AFetchMeta: Boolean); +begin + with AOptions do begin + if not fBiDirectionalDataSets then + FetchOptions.Unidirectional := True; + if not AFetchMeta then + FetchOptions.Items := FetchOptions.Items - [fiMeta]; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACConnection.SetupDataset(ADataSet: TADRdbmsDataSet; + AFetchMeta: Boolean); +begin + TADQuery(ADataSet).Connection := FADConnection; + SetupOptions(IADStanOptions(TADQuery(ADataSet).Command), AFetchMeta); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACQuery } +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TADQuery.Create(nil); + TDAEAnyDACConnection(aConnection).SetupDataset(TADQuery(result), False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.DoPrepare(AValue: boolean); +var + i: integer; + oPar: TADParam; +begin + if AValue and not TADQuery(Dataset).Prepared and (TADQuery(Dataset).ParamCount <> 0) then + for I := 0 to GetParams.Count - 1 do begin + oPar := TADQuery(Dataset).ParamByName(GetParams[i].Name); + oPar.DataType := DATypeToVCLType(GetParams[i].DataType); + if oPar.DataType = ftAutoInc then + oPar.DataType := ftInteger; + end; + TADQuery(Dataset).Prepared := AValue; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.ClearParams; +begin + inherited; + TADQuery(Dataset).Params.Clear; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.DoExecute: integer; +begin + with TADQuery(Dataset) do begin + // 1) SELECT command on MSSQL, etc may be without result set, for example: + // SELECT :CUSTOMERS_CNT = count(*) from customers + // 2) On Oracle skExecute is handled specially (PL/SQL) and commands as + // above are not possible + if PointedConnection.RDBMSKind <> mkOracle then + Command.CommandKind := skExecute; + ExecSQL; + Result := RowsAffected; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQuery.DoGetSQL: string; +begin + Result := TADQuery(Dataset).SQL.Text; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.DoSetSQL(const AValue: string); +begin + with TADQuery(Dataset).SQL do begin + BeginUpdate; + try + Clear; + Add(AValue); + finally + EndUpdate; + end; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, TADQuery(Dataset).Params, True); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(GetParams, TADQuery(Dataset).Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACStoredProcedure } +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.CreateDataset(AConnection: TDAEConnection): TDataset; +begin + Result := TADStoredProc.Create(nil); + TDAEAnyDACConnection(aConnection).SetupDataset(TADStoredProc(Result), True); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.GetStoredProcedureName: string; +begin + Result := TADStoredProc(DataSet).StoredProcName; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.SetStoredProcedureName(const Name: string); +begin + TADStoredProc(DataSet).StoredProcName := Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.DoExecute: integer; +begin + TADStoredProc(Dataset).ExecProc; + result := TADStoredProc(Dataset).RowsAffected; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedure.Execute: integer; +var + oADParams: TADParams; + oDAParams: TDAParamCollection; +begin + oADParams := TADStoredProc(Dataset).Params; + oDAParams := GetParams; + if oADParams.Count <> oDAParams.Count then + TADStoredProc(Dataset).Prepare; + SetADParamValuesFromDA(oDAParams, oADParams, False); + Result := DoExecute; + // in case of SP the reference to params may be invalid after execution + oADParams := TADStoredProc(Dataset).Params; + GetDAParamValuesFromAD(oDAParams, oADParams); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.RefreshParams; +var + oDAParams: TDAParamCollection; + oDAParam: TDAParam; + i: Integer; +begin + TADStoredProc(Dataset).Prepare; + oDAParams := GetParams; + oDAParams.Clear; + with TADStoredProc(Dataset) do + for i := 0 to Params.Count - 1 do begin + oDAParam := oDAParams.Add; + oDAParam.Name := Params[i].Name; + oDAParam.DataType := VCLTypeToDAType(Params[i].DataType); + oDAParam.ParamType := TDAParamType(Params[i].ParamType); + oDAParam.Size := Params[i].Size; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, TADStoredProc(Dataset).Params, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(AParams, TADStoredProc(Dataset).Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACNativeField } +{------------------------------------------------------------------------------} +constructor TDAEAnyDACNativeField.Create(ACol: TADDatSColumn; const ACmd: IADPhysCommand; AParent: TDAEAnyDACNativeDatabaseAccess); +begin + inherited Create; + FCol := ACol; + FCmd := ACmd; + fParent:= AParent; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDataType: TFieldType; +var + iDestSize: Longword; + iDestPrec,iDescScale: Integer; +begin + FCmd.Options.FormatOptions.ColumnDef2FieldDef(FCol.DataType, FCol.Size, FCol.Precision, FCol.Scale, + FCol.Attributes, Result, iDestSize, iDestPrec, iDescScale); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDecimalPrecision: Integer; +begin + Result := FCol.Precision; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetDecimalScale: Integer; +begin + Result := FCol.Scale; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetFieldIndex: integer; +begin + Result := FCol.Index; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetFieldName: string; +begin + Result := FCol.Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetNativeObject: TObject; +begin + Result := Self; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetSize: integer; +begin + Result := FCol.Size; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.GetValue: Variant; +begin + Result := FParent.GetNativeFieldValue(FCol.Index); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.IsNull: Boolean; +begin + Result := fParent.IsNull(FCol.Index); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeField.isTFieldCompatible: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDataType(Value: TFieldType); +var + eDestType: TADDataType; + iDestScale: Integer; + iDestPrec: Integer; + iDestSize: LongWord; + iDestAttrs: TADDataAttributes; +begin + FCmd.Options.FormatOptions.FieldDef2ColumnDef(Value, FCol.Size, FCol.Precision,FCol.Scale, + eDestType, iDestSize, iDestPrec, iDestScale, iDestAttrs); + FCol.DataType := eDestType; + FCol.Attributes := iDestAttrs; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDecimalPrecision(Value: integer); +begin + FCol.Precision := Value; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeField.SetDecimalScale(Value: integer); +begin + FCol.Scale := Value; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACNativeDatabaseAccess } +{------------------------------------------------------------------------------} +constructor TDAEAnyDACNativeDatabaseAccess.Create(ADAEConnection: TDAEAnyDACConnection); +begin + inherited Create; + ADAEConnection.FADConnection.Connected:=True; + ADAEConnection.FADConnection.ConnectionIntf.CreateCommand(FCmd); + FTab := TADDatSTable.Create; +end; + +{------------------------------------------------------------------------------} +destructor TDAEAnyDACNativeDatabaseAccess.Destroy; +begin + if GetActive then SetActive(False); + FCmd := nil; + FreeAndNil(FTab); + inherited Destroy; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess._AddRef: Integer; +begin + Result := 1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess._Release: Integer; +begin + Result := 1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + if GetInterface(IID, Obj) then + Result := 0 + else + Result := E_NOINTERFACE; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.CheckActive; +begin + if not (nfActive in FFlags) then + raise Exception.Create('Dataset must be active'); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.CheckBidir; +begin + if FCmd.Options.FetchOptions.Unidirectional then + raise Exception.Create('Dataset must be bidirectional'); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.ClearFieldDefs; +begin + FTab.Reset; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetRecordCount: Integer; +begin + Result := FRowsPurged + FTab.Rows.Count; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetBOF: Boolean; +begin + Result := nfBOF in FFlags; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetEOF: Boolean; +begin + Result := nfEOF in FFlags; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetActive: Boolean; +begin + Result := nfActive in FFlags; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.SetActive(const aValue: Boolean); +var + i: Integer; +begin + if (nfActive in FFlags) <> aValue then + if aValue then begin + FCmd.Open; + FCmd.Define(FTab); + FCmd.Fetch(FTab, False); + FRowIndex := 0; + FRowsPurged := 0; + if FTab.Rows.Count = 0 then + Include(FFlags, nfEOF) + else + Exclude(FFlags, nfEOF); + Include(FFlags, nfBOF); + Include(FFlags, nfActive); + SetLength(FBuffs, FTab.Columns.Count); + for i := 0 to FTab.Columns.Count - 1 do + case FTab.Columns[i].DataType of + dtDateTimeStamp, + dtTime, + dtDate: + GetMem(FBuffs[i], SizeOf(TDateTime)); + dtGUID: + GetMem(FBuffs[i], 39); + dtCurrency: + GetMem(FBuffs[i], SizeOf(Double)); + dtBCD: + GetMem(FBuffs[i], SizeOf(Currency)); + else + FBuffs[i] := nil; + end; + end + else begin + FCmd.AbortJob(True); + FCmd.CloseAll; + FTab.Clear; + FRowIndex := 0; + FRowsPurged := 0; + Exclude(FFlags, nfActive); + for i := 0 to FTab.Columns.Count - 1 do + if FBuffs[i] <> nil then + FreeMem(FBuffs[i]); + SetLength(FBuffs, 0); + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.First; +begin + CheckActive; + CheckBidir; + FRowIndex := 0; + if FTab.Rows.Count = 0 then + Include(FFlags, nfEOF); + Include(FFlags, nfBOF); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.Next; +begin + CheckActive; + Exclude(FFlags, nfEOF); + if FRowIndex >= FTab.Rows.Count - 1 then begin + if FCmd.State = csOpen then begin + if FCmd.Options.FetchOptions.Unidirectional then begin + Inc(FRowsPurged, FTab.Rows.Count); + FTab.Clear; + FRowIndex := -1; + end; + FCmd.Fetch(FTab, False); + if FCmd.RowsAffected = 0 then + Include(FFlags, nfEOF); + end + else + Include(FFlags, nfEOF); + end; + if FRowIndex < FTab.Rows.Count - 1 then + Inc(FRowIndex); + if FRowIndex <= 0 then + Include(FFlags, nfBOF) + else + Exclude(FFlags, nfBOF); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.LocateRecord(const KeyFields: string; + const KeyValues: Variant; Options: TLocateOptions; AChangePos: Boolean): Integer; +var + oCols: TADDatSColumnSublist; + iPrevRowIndex: Integer; + ePrevFlags: TDAEAnyDACNativeDatabaseAccessFlags; + lSimple: Boolean; + lEQ: Boolean; + i: Integer; + V1, V2: Variant; +begin + Result := -1; + oCols := TADDatSColumnSublist.Create; + iPrevRowIndex := FRowIndex; + ePrevFlags := FFlags; + try + oCols.Fill(FTab, KeyFields); + lSimple := (oCols.Count = 1) and not VarIsArray(KeyValues); + First; + while not (nfEOF in FFlags) do begin + lEQ := False; + for i := 0 to oCols.Count - 1 do begin + V1 := FTab.Rows[FRowIndex].GetData(oCols[i]); + if lSimple then + V2 := KeyValues + else + V2 := KeyValues[i]; + if VarIsNull(V1) and VarIsNull(V2) then + lEQ := True + else if VarIsNull(V1) xor VarIsNull(V2) then + lEQ := False + else if oCols[i].DataType in [dtAnsiString, dtWideString, dtMemo, + dtWideMemo, dtHMemo, dtWideHMemo] then + if loCaseInsensitive in Options then begin + if loPartialKey in Options then + lEQ := Pos(AnsiLowerCase(VarToStr(V2)), AnsiLowerCase(VarToStr(V1))) = 1 + else + lEQ := AnsiCompareText(VarToStr(V2), VarToStr(V1)) = 0; + end + else if loPartialKey in Options then + lEQ := Pos(VarToStr(V2), VarToStr(V1)) = 1 + else + lEQ := CompareStr(VarToStr(V2), VarToStr(V1)) = 0 + else + try + lEQ := V1 = V2; + except + lEQ := False; + end; + if not lEQ then + Break; + end; + if lEQ then begin + Result := FRowIndex; + Break; + end; + Next; + end; + finally + oCols.Free; + if (Result = -1) or not AChangePos then begin + FRowIndex := iPrevRowIndex; + FFlags := ePrevFlags; + end; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.Locate(const KeyFields: string; + const KeyValues: Variant; Options: TLocateOptions): Boolean; +begin + Result := LocateRecord(KeyFields, KeyValues, Options, True) <> -1; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.Lookup(const KeyFields: string; + const KeyValues: Variant; const ResultFields: string): Variant; +var + iRowIndex, i: Integer; + oCols: TADDatSColumnSublist; +begin + iRowIndex := LocateRecord(KeyFields, KeyValues, [], False); + if iRowIndex <> -1 then begin + oCols := TADDatSColumnSublist.Create; + try + if oCols.Count = 1 then + Result := FTab.Rows[iRowIndex].GetData(oCols[0]) + else begin + Result := VarArrayCreate([0, oCols.Count - 1], varVariant); + for i := 0 to oCols.Count - 1 do + Result[i] := FTab.Rows[iRowIndex].GetData(oCols[i]); + end; + finally + oCols.Free; + end + end + else + Result := Null; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetFieldName(Index: Integer): string; +begin + Result := FTab.Columns[Index].Name; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.DisableControls; +begin + // nothing +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.EnableControls; +begin + // nothing +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.ControlsDisabled: Boolean; +begin + // nothing + Result := True; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetIsEmpty: boolean; +begin + Result := (FRowsPurged + FTab.Rows.Count) = 0; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.FreeBookmark(Bookmark: TBookmark); +begin + // nothing +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetBookMark: pointer; +begin + CheckActive; + CheckBidir; + Result := Pointer(FRowIndex); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.GotoBookmark(Bookmark: TBookmark); +begin + CheckActive; + CheckBidir; + FRowIndex := Integer(Bookmark); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetState: TDatasetState; +begin + if FCmd.State = csExecuting then + Result := dsOpening + else if nfActive in FFlags then + Result := dsBrowse + else + Result := dsInactive; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACNativeDatabaseAccess.Prepare(const AValue: Boolean); +begin + if AValue then + FCmd.Prepare + else + FCmd.Unprepare; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetFields(Index: integer): IDANativeField; +begin + Result := TDAEAnyDACNativeField.Create(FTab.Columns[Index], FCmd, Self) as IDANativeField; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.FieldCount: Integer; +begin + Result := FTab.Columns.Count; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.FindField(const FieldName: string): IDANativeField; +var + i: Integer; +begin + i := FTab.Columns.IndexOfName(FieldName); + if i = -1 then + Result := nil + else + Result := GetFields(i); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.IsTDatasetCompatible: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.IsNull(Index: integer): Boolean; +var + Data: pointer; + DataSize: Cardinal; +begin + Result := not FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetNativeFieldData(Index: Integer; + var Data: pointer; var DataSize: cardinal): Boolean; + + procedure CvtGUID(ABuff: PChar; AGuid: PGUID); + begin + with AGuid^ do + StrLFmt(ABuff, 38, + '{%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}', + [D1, D2, D3, D4[0], D4[1], D4[2], D4[3], D4[4], D4[5], D4[6], D4[7]]); + end; + + procedure ErrNotSupported(AType: TADDataType); + begin + raise Exception.CreateFmt('AnyDAC data type [%s] is not supported by DataAbstract', + [C_AD_DataTypeNames[AType]]); + end; + +begin + CheckActive; + if (FRowIndex >= 0) and (FRowIndex < FTab.Rows.Count) then begin + Result := FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False); + if Result then + case FTab.Columns[Index].DataType of + dtWideString, + dtWideMemo, + dtWideHMemo: + DataSize := DataSize * SizeOf(WideChar); + dtDateTimeStamp: + begin + PDateTime(FBuffs[Index])^ := ADSQLTimeStamp2DateTime(PADSQLTimeStamp(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtTime: + begin + PDateTime(FBuffs[Index])^ := ADTime2DateTime(PLongint(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtDate: + begin + PDateTime(FBuffs[Index])^ := ADDate2DateTime(PLongint(Data)^); + DataSize := SizeOf(TDateTime); + Data := FBuffs[Index]; + end; + dtGUID: + begin + CvtGUID(PChar(FBuffs[Index]), PGuid(Data)); + DataSize := 38; + Data := FBuffs[Index]; + end; + dtCurrency: + begin + PDouble(FBuffs[Index])^ := PCurrency(Data)^; + DataSize := SizeOf(Double); + Data := FBuffs[Index]; + end; + dtBCD: + begin + BCDToCurr(PBCD(Data)^, PCurrency(FBuffs[Index])^); + DataSize := SizeOf(Currency); + Data := FBuffs[Index]; + end; + dtFmtBCD: begin + PBCD(FBuffs[Index])^ := PBCD(Data)^; + DataSize := SizeOf(TBCD); + Data := FBuffs[Index]; + end; + dtRowSetRef, + dtCursorRef, + dtRowRef, + dtArrayRef, + dtParentRowRef, + dtObject: + ErrNotSupported(FTab.Columns[Index].DataType); + end; + end + else + Result := False; + if not Result then begin + DataSize := 0; + Data := nil; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.GetNativeFieldValue(Index: Integer): Variant; +var + data: pointer; + DataSize: cardinal; + c: Currency; +begin + CheckActive; + if (FRowIndex >= 0) and (FRowIndex < FTab.Rows.Count) then begin + case FTab.Columns[Index].DataType of + dtDateTimeStamp: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then + Result := VarFromDateTime(ADSQLTimeStamp2DateTime(PADSQLTimeStamp(Data)^)) + else + Result := Null; + dtBCD: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then begin + BCDToCurr(PBCD(Data)^, c); + Result := c; + end + else begin + Result := Null; + end; + dtFmtBCD: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then + Result := DecimalToString(BCDToDecimal(PBCD(Data)^),DecimalSeparator) + else + Result := Null; + dtTime, dtDate: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then + Result := VarFromDateTime(ADTime2DateTime(PLongint(Data)^)) + else + Result := Null; + dtCurrency: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then + Result := PCurrency(Data)^ + else + Result := Null; + dtGUID: + if FTab.Rows[FRowIndex].GetData(Index, rvDefault, Data, 0, DataSize, False) then + Result := GUIDToString(PGuid(Data)^) + else + Result := Null; + else + Result := FTab.Rows[FRowIndex].GetData(Index); + end; + end + else + Result := Null; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACNativeDatabaseAccess.CanFreeNativeFieldData: Boolean; +begin + Result := False; +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACQueryNative } +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.GetNativeObject: TDAEAnyDACNativeDatabaseAccess; +begin + Result := TDAEAnyDACNativeDatabaseAccess(inherited NativeObject); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := nil; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateNativeDatabaseAccess: IDANativeDatabaseAccess; +begin + Supports(NativeObject, IDANativeDatabaseAccess, Result); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.CreateNativeObject(aConnection: TDAEConnection): TObject; +begin + Result := TDAEAnyDACNativeDatabaseAccess.Create(TDAEAnyDACConnection(aConnection)); + TDAEAnyDACConnection(aConnection).SetupOptions(TDAEAnyDACNativeDatabaseAccess(Result).FCmd.Options, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.DoPrepare(AValue: boolean); +var + i: integer; + oPar: TADParam; +begin + if AValue and (NativeObject.FCmd.State <> csPrepared) and (NativeObject.FCmd.Params.Count <> 0) then + for I := 0 to GetParams.Count - 1 do begin + oPar := NativeObject.FCmd.Params.ParamByName(GetParams[i].Name); + oPar.DataType := DATypeToVCLType(GetParams[i].DataType); + if oPar.DataType = ftAutoInc then + oPar.DataType := ftInteger; + end; + if AValue then + NativeObject.FCmd.Prepare + else + NativeObject.FCmd.Unprepare; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.ClearParams; +begin + inherited; + NativeObject.FCmd.Params.Clear; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.DoExecute: integer; +var + oConnMeta: IADPhysConnectionMetadata; +begin + with NativeObject.FCmd do begin + // 1) SELECT command on MSSQL, etc may be without result set, for example: + // SELECT :CUSTOMERS_CNT = count(*) from customers + // 2) On Oracle skExecute is handled specially (PL/SQL) and commands as + // above are not possible + Connection.CreateMetadata(oConnMeta); + if oConnMeta.Kind <> mkOracle then + CommandKind := skExecute; + Execute; + if RowsAffectedReal then + Result := RowsAffected + else + Result := 0; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACQueryNative.DoGetSQL: string; +begin + Result := NativeObject.FCmd.CommandText; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.DoSetSQL(const AValue: string); +begin + NativeObject.FCmd.CommandText := AValue; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.SetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, NativeObject.FCmd.Params, True); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACQueryNative.GetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(GetParams, NativeObject.FCmd.Params); +end; + +{------------------------------------------------------------------------------} +{ TDAEAnyDACStoredProcedureNative } +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.GetNativeObject: TDAEAnyDACNativeDatabaseAccess; +begin + Result := TDAEAnyDACNativeDatabaseAccess(inherited NativeObject); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := nil; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateNativeDatabaseAccess: IDANativeDatabaseAccess; +begin + Supports(NativeObject, IDANativeDatabaseAccess, Result); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.CreateNativeObject(aConnection: TDAEConnection): TObject; +begin + Result := TDAEAnyDACNativeDatabaseAccess.Create(TDAEAnyDACConnection(aConnection)); + TDAEAnyDACNativeDatabaseAccess(Result).FCmd.CommandKind := skStoredProc; + TDAEAnyDACConnection(aConnection).SetupOptions(TDAEAnyDACNativeDatabaseAccess(Result).FCmd.Options, False); +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.GetStoredProcedureName: string; +begin + Result := NativeObject.FCmd.CommandText; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.SetStoredProcedureName(const Name: string); +begin + NativeObject.FCmd.CommandText := Name; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.DoExecute: integer; +begin + with NativeObject.FCmd do begin + Execute(); + if RowsAffectedReal then + Result := RowsAffected + else + Result := 0; + end; +end; + +{------------------------------------------------------------------------------} +function TDAEAnyDACStoredProcedureNative.Execute: integer; +var + oADParams: TADParams; + oDAParams: TDAParamCollection; +begin + oADParams := NativeObject.FCmd.Params; + oDAParams := GetParams; + if oADParams.Count <> oDAParams.Count then + NativeObject.FCmd.Prepare; + SetADParamValuesFromDA(oDAParams, oADParams, False); + Result := DoExecute; + // in case of SP the reference to params may be invalid after execution + oADParams := NativeObject.FCmd.Params; + GetDAParamValuesFromAD(oDAParams, oADParams); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.RefreshParams; +var + oDAParams: TDAParamCollection; + oDAParam: TDAParam; + i: Integer; +begin + NativeObject.FCmd.Prepare; + oDAParams := GetParams; + oDAParams.Clear; + with NativeObject.FCmd do + for i := 0 to Params.Count - 1 do begin + oDAParam := oDAParams.Add; + oDAParam.Name := Params[i].Name; + oDAParam.DataType := VCLTypeToDAType(Params[i].DataType); + oDAParam.ParamType := TDAParamType(Params[i].ParamType); + oDAParam.Size := Params[i].Size; + end; +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.GetParamValues(AParams: TDAParamCollection); +begin + SetADParamValuesFromDA(AParams, NativeObject.FCmd.Params, False); +end; + +{------------------------------------------------------------------------------} +procedure TDAEAnyDACStoredProcedureNative.SetParamValues(AParams: TDAParamCollection); +begin + GetDAParamValuesFromAD(AParams, NativeObject.FCmd.Params); +end; + +{------------------------------------------------------------------------------} +{ Registration and factory code } +{------------------------------------------------------------------------------} +var + _driver: TDAEDriver = nil; + +{------------------------------------------------------------------------------} +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAAnyDACDriver]); +end; + +{------------------------------------------------------------------------------} +function GetDriverObject: IDADriver; +begin +{$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; +{$ENDIF} + if _driver = nil then + _driver := TDAEAnyDACDriver.Create(nil); + result := _driver; +end; + +{------------------------------------------------------------------------------} +exports + GetDriverObject name func_GetDriverObject; + +initialization +{$IFDEF FPC} + {$I DataAbstract_AnyDACDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNil(_driver); + +end. \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas new file mode 100644 index 0000000..2a6ac6f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDABDEDriver.pas @@ -0,0 +1,1204 @@ +unit uDABDEDriver; +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_BDEDriver_Glyphs.res} +{$DEFINE MAX_SUPPORT} +interface + +uses DB, uDAEngine, uDAInterfaces, uROClasses, uDAInterfacesEx, uDAUtils, DBTables, + uDAIBInterfaces, uDAADOInterfaces, uDAOracleInterfaces, uDADB2Interfaces, uDASybaseInterfaces; + +type + TDABDEProviderType = ( + bdeSTANDARD, + bdeDB2, + bdeINFORMIX, + bdeINTRBASE, + bdeMSACCESS, + bdeMSSQL, + bdeORACLE, + bdeSYBASE, + bdeODBC); + + { TDABDEDriver } + TDABDEDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEBDEDriver = class(TDAEDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetAvailableDriverOptionsEx(AuxDriver: string): TDAAvailableDriverOptions; override; + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { TDAEADOConnection } + TDAEBDEConnection = class(TDAEConnection, IDACanQueryDatabaseNames, IDAFileBasedDatabase, + IDADirectoryBasedDatabase, IDAUseGenerators, IDAUseGenerators2, {IDAADOConnection,} + IDAInterbaseConnection, IDAOracleConnection, IDACanQueryGeneratorsNames, + IDADB2Connection, IDASybaseConnection) + private + fProviderName: string; + fProviderType: TDABDEProviderType; + fDatabase: TDataBase; + FSession: TSession; + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + function GetQuoteChars: TDAQuoteCharArray; override; + function GetSPSelectSyntax(HasArguments: Boolean): string; override; safecall; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + function QuoteFieldName(const aTableName, aFieldName: string): string; override; safecall; + function GetUserID: string; override; safecall; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + // IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + // IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + // IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + // IDAUseGenerators2 + function GetNextAutoinc2(const GeneratorName: string): variant; safecall; + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + public + destructor Destroy; override; + property DataBase: TDatabase read fDatabase; + property Session: TSession read FSession; + end; + + { TDAEADOQuery } + TDAEBDEQuery = class(TDAEDataset, IDAMustSetParams) + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure RefreshParams; override; safecall; + procedure DoPrepare(Value: boolean); override; safecall; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEADOStoredProcedure } + TDAEBDEStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoPrepare(Value: boolean); override; safecall; + end; + +procedure Register; +function GetDriverObject: IDADriver; stdcall; + +function ProviderToProviderType(AProvider: string): TDABDEProviderType; + +implementation + +uses + Windows, SysUtils, Variants, Classes, uDARes, + uROBinaryHelpers, uDADriverManager, uDAMacroProcessors, uDASQL92Interfaces; + +var + _driver : TDAEDriver = nil; + +const + BDE_LANGDRIVER = + '(Access General,Access Greece,Access Japanese,Access Nord/Danish,Access Swed/Finnish,''ascii'' ANSI,' + + 'Borland ANSI Arabic,Borland DAN Latin-1,Borland DEU Latin-1,Borland ENG Latin-1,Borland ENU Latin-1,Borland ESP Latin-1,' + + 'Borland FIN Latin-1,Borland FRA Latin-1,Borland FRC Latin-1,Borland ISL Latin-1,Borland ITA Latin-1,Borland NLD Latin-1,' + + 'Borland NOR Latin-1,Borland PTG Latin-1,Borland SVE Latin-1,DB2 SQL ANSI DEU,dBASE BUL 868,dBASE CHS cp936,dBASE CHT cp950,' + + 'dBASE CSY cp852,dBASE CSY cp867,dBASE DAN cp865,dBASE DEU cp437,dBASE DEU cp850,dBASE ELL GR437,dBASE ENG cp437,dBASE ENG cp850,' + + 'dBASE ENU cp437,dBASE ENU cp850,dBASE ESP cp437,dBASE ESP cp850,dBASE FIN cp437,dBASE FRA cp437,dBASE FRA cp850,dBASE FRC cp850,' + + 'dBASE FRC cp863,dBASE HUN cp852,dBASE ITA cp437,dBASE ITA cp850,dBASE JPN cp932,dBASE JPN Dic932,dBASE KOR cp949,dBASE NLD cp437,' + + 'dBASE NLD cp850,dBASE NOR cp865,dBASE PLK cp852,dBASE PTB cp850,dBASE PTG cp860,dBASE RUS cp866,dBASE SLO cp852,dBASE SVE cp437,' + + 'dBASE SVE cp850,dBASE THA cp874,dBASE TRK cp857,FoxPro Czech 1250,FoxPro Czech DOS895,FoxPro German 1252,FoxPro German 437,FoxPro Nordic 1252,' + + 'FoxPro Nordic 437,FoxPro Nordic 850,Hebrew dBASE,MSSQL ANSI Greek,Oracle SQL WE850,Paradox ANSI HEBREW,Paradox ''ascii'',Paradox BUL 868,' + + 'Paradox China 936,Paradox Cyrr 866,Paradox Czech 852,Paradox Czech 867,Paradox ESP 437,Paradox Greek GR437,Paradox ''hebrew'',' + + 'Paradox Hun 852 DC,Paradox ''intl'',Paradox ''intl'' 850,Paradox ISL 861,Paradox ''japan'',Paradox Korea 949,Paradox ''nordan'',' + + 'Paradox ''nordan40'',Paradox Polish 852,Paradox Slovene 852,Paradox ''swedfin'',Paradox Taiwan 950,Paradox Thai 874,Paradox ''turk'',' + + 'Pdox ANSI Bulgaria,Pdox ANSI Cyrillic,Pdox ANSI Czech,Pdox ANSI Greek,Pdox ANSI Hun. DC,Pdox ANSI Intl,Pdox ANSI Intl850,Pdox ANSI Nordan4,' + + 'Pdox ANSI Polish,Pdox ANSI Slovene,Pdox ANSI Spanish,Pdox ANSI Swedfin,Pdox ANSI Swedfin,Pdox ANSI Turkish,Paradox ''ascii'' Japan,' + + 'pdx ANSI Czech ''CH'',pdx ANSI ISO L_2 CZ,pdx Czech 852 ''CH'',pdx Czech 867 ''CH'',pdx ISO L_2 Czech,''Spanish'' ANSI,' + + 'SQL Link ROMAN8,Sybase SQL Dic437,Sybase SQL Dic850,''WEurope'' ANSI)'; + +function ProviderToProviderType2(AProvider: string): TDABDEProviderType; +begin + if AnsiCompareText(AProvider, 'STANDARD') = 0 then Result := bdeSTANDARD else + if AnsiCompareText(AProvider, 'DB2') = 0 then Result := bdeDB2 else + if AnsiCompareText(AProvider, 'INFORMIX') = 0 then Result := bdeINFORMIX else + if AnsiCompareText(AProvider, 'INTRBASE') = 0 then Result := bdeINTRBASE else + if AnsiCompareText(AProvider, 'MSACCESS') = 0 then Result := bdeMSACCESS else + if AnsiCompareText(AProvider, 'MSSQL') = 0 then Result := bdeMSSQL else + if AnsiCompareText(AProvider, 'ORACLE') = 0 then Result := bdeORACLE else + if AnsiCompareText(AProvider, 'SYBASE') = 0 then Result := bdeSYBASE else + Result := bdeODBC; +end; + +function ProviderToProviderType(AProvider: string): TDABDEProviderType; +begin + if Session.IsAlias(AProvider) then + Result := ProviderToProviderType2(Session.GetAliasDriverName(AProvider)) + else + Result := ProviderToProviderType2(AProvider); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEBDEDriver.Create(nil); + result := _driver; +end; + +{ TDAEBDEDriver } + +procedure TDAEBDEDriver.GetAuxDrivers(out List: IROStrings); +var + FList : TStringList; +begin + inherited GetAuxDrivers(List); + FList := TStringList.Create; + try + try + Session.GetAliasNames(FList); + List.AddStrings(FList); + except + end; + try + Session.GetDriverNames(FList); + List.AddStrings(FList); + except + end; + finally + FList.Free; + end; + List.Sorted := True; + List.Sorted := False; +end; + +procedure TDAEBDEDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited GetAuxParams(AuxDriver, List); + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD: begin + List.Add('DEFAULT DRIVER=(PARADOX, DBASE, FOXPRO, ASCIIDRV)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + end; + bdeDB2: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DB2 DSN'); { = 'DB2_SERVER'} + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeINFORMIX: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('COLLCHAR=(0,1,2)'); + List.Add('DATE MODE=0'); + List.Add('DATE SEPARATOR=/'); + List.Add('DBNLS=(0,1,2)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('LIST SYNONYMS=(NONE,ALL,PRIVATE)'); + List.Add('LOCK MODE=5'); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeINTRBASE: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('COMMIT RETAIN=(FALSE)'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ROLE NAME='); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('WAIT ON LOCKS=(FALSE)'); + end; + bdeMSACCESS: begin + //List.Add('DATABASE NAME'); { DRIVE:/PATH/DATABASE.MDB} + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SYSTEM DATABASE=(.MDW)'); + end; + bdeMSSQL: begin + List.Add('APPLICATION MODE'); { } + List.Add('BATCH COUNT=200'); + List.Add('BLOB EDIT LOGGING=(TRUE, FALSE)'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DATABASE NAME'); { } + List.Add('DATE MODE=0'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + //List.Add('HOST NAME'); { } + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX QUERY TIME=300'); + List.Add('NATIONAL LANG NAME='); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('TDS PACKET SIZE=4096'); + end; + bdeORACLE: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE INTEGERS=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('LIST SYNONYMS=(NONE,ALL,PRIVATE)'); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('NET PROTOCOL=(TNS,TCP/IP,SPX/IPX,NETBIOS,NAMED PIPES,DECNET,3270,VINES,APPC,ASYNC)'); + List.Add('OBJECT MODE=(TRUE, FALSE)'); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + bdeSYBASE: begin + List.Add('APPLICATION MODE='); + List.Add('BATCH COUNT=200'); + List.Add('BLOB EDIT LOGGING=(TRUE, FALSE)'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + List.Add('CS CURSOR ROWS=1'); + //List.Add('DATABASE NAME'); { } + List.Add('DATE MODE=0'); + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('HOST NAME='); { } + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX QUERY TIME=300'); + List.Add('NATIONAL LANG NAME='); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + List.Add('TDS PACKET SIZE=512'); + end; + bdeODBC: begin + List.Add('BATCH COUNT=200'); + List.Add('BLOB SIZE=32'); + List.Add('BLOBS TO CACHE=64'); + //List.Add('DATABASE NAME='); { } + List.Add('ENABLE BCD=(TRUE, FALSE)'); + List.Add('ENABLE SCHEMA CACHE=(TRUE, FALSE)'); + List.Add('LANGDRIVER=' + BDE_LANGDRIVER); + List.Add('MAX ROWS=-1'); + List.Add('OPEN MODE=(READ/WRITE,READ ONLY)'); + List.Add('ODBC DSN='); + List.Add('ROWSET SIZE=20'); + List.Add('SCHEMA CACHE DIR='); + List.Add('SCHEMA CACHE SIZE=8'); + List.Add('SCHEMA CACHE TIME=-1'); + List.Add('SQLPASSTHRU MODE=(SHARED AUTOCOMMIT,SHARED NOAUTOCOMMIT,NOT SHARED)'); + List.Add('SQLQRYMODE=(LOCAL,SERVER)'); + end; + end; + List.Add('Exclusive=(TRUE, FALSE)'); + List.Add('KeepConnections=(TRUE, FALSE)'); + List.Add('Session_NetFileDir='); + List.Add('Session_PrivateDir='); + List.Add('TransIsolation=(tiDirtyRead,tiReadCommitted,tiRepeatableRead)'); +end; + +function TDAEBDEDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + { TODO -c???: GetAuxParams } +end; + +function TDAEBDEDriver.GetAvailableDriverOptionsEx( + AuxDriver: string): TDAAvailableDriverOptions; +begin + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD: result := [doAuxDriver, doDatabaseName, doCustom]; + bdeDB2: result := [doAuxDriver, doServerName, doLogin, doCustom]; + bdeMSACCESS: result := [doAuxDriver, doDatabaseName, doLogin, doCustom]; + else + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + end; +end; + +function TDAEBDEDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEBDEConnection; +end; + +function TDAEBDEDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case ProviderToProviderType(AuxDriver) of + bdeSTANDARD : Result := Paradox_DriverType; + bdeDB2 : Result := DB2_DriverType; + bdeINFORMIX: Result := Informix_DriverType; + bdeINTRBASE : Result := IB_DriverType; + bdeMSACCESS : Result := Access_DriverType; + bdeMSSQL: Result:=MSSQL_DriverType; + bdeORACLE: Result:=Oracle_DriverType; + bdeSYBASE: Result:=Sybase_DriverType; + bdeODBC: Result:=ODBC_DriverType; + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEBDEDriver.GetDescription: string; +begin + result := 'Borland BDE Driver'; +end; + +function TDAEBDEDriver.GetDriverID: string; +begin + result := 'BDE'; +end; + +function Need_ODBC_DSN(Provider: string): boolean; +var + List : TStringList; +begin + List := TStringList.Create; + try + try + if Session.IsAlias(Provider) then + Session.GetAliasParams(Provider, List) + else + Session.GetDriverParams(Provider, List); + Result := List.Values['ODBC DSN'] = ''; + except + // in case is invalid Provider, error is raised + Result := False; + end; + finally + List.Free; + end; +end; + +function TDAEBDEDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + if Provider = '' then Exit; + case ProviderToProviderType(Provider) of + bdeODBC: if Need_ODBC_DSN(Provider) then Result := 'ODBC DSN='; + bdeSTANDARD, bdeDB2, bdeMSACCESS: Result := 'TransIsolation=tiDirtyRead;'; + end; +end; + +{ TDAEBDEQuery } + +procedure TDAEBDEQuery.ClearParams; +begin + inherited; + TQuery(Dataset).Params.Clear; +end; + +function TDAEBDEQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TQuery.Create(nil); + TQuery(Result).DatabaseName := TDAEBDEConnection(aConnection).fDatabase.DatabaseName; + TQuery(Result).SessionName := TDAEBDEConnection(aConnection).fDatabase.SessionName; +end; + +function TDAEBDEQuery.DoExecute: integer; +begin + TQuery(Dataset).ExecSQL; + result := TQuery(Dataset).RowsAffected; +end; + +function TDAEBDEQuery.DoGetSQL: string; +begin + result := TQuery(Dataset).SQL.Text; +end; + +procedure TDAEBDEQuery.DoPrepare(Value: boolean); +begin + if Value then + TQuery(Dataset).Prepare + else + TQuery(Dataset).UnPrepare +end; + +procedure TDAEBDEQuery.DoSetSQL(const Value: string); +begin + TQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEBDEQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TQuery(Dataset).Params); +end; + +procedure TDAEBDEQuery.RefreshParams; +var + i : Integer; + par : TDAParam; + outpar : TParam; + ds : TQuery; +begin + inherited; + ds := TQuery(Dataset); + if not Assigned(ds.Params) then Exit; + for i := 0 to ds.Params.Count - 1 do begin + outpar := ds.Params[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then + par.DataType := VCLTypeToDAType(outpar.DataType); + end; +end; + +procedure TDAEBDEQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TQuery(Dataset).Params); +end; + +{ TDAEBDEStoredProcedure } + +function TDAEBDEStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TStoredProc.Create(nil); + TStoredProc(result).DatabaseName := TDAEBDEConnection(aConnection).fDatabase.DatabaseName; + TStoredProc(result).SessionName := TDAEBDEConnection(aConnection).fDatabase.SessionName; +end; + +function TDAEBDEStoredProcedure.DoExecute: integer; +begin + Result := -1; + TStoredProc(Dataset).ExecProc; +end; + +procedure TDAEBDEStoredProcedure.DoPrepare(Value: boolean); +begin + if value then + TStoredProc(Dataset).Prepare + else + TStoredProc(Dataset).UnPrepare +end; + +function TDAEBDEStoredProcedure.Execute: integer; +var + i : integer; + ds : TStoredProc; +begin + ds := TStoredProc(Dataset); + + for i := ds.Params.Count - 1 downto 0 do begin + if (ds.Params[i].DataType = ftInterface) and + (ds.Params[i].ParamType in [ptOutput, ptInputOutput, ptReSult]) then + ds.Params.Delete(i); + end; + + SetParamValuesStd(GetParams, TStoredProc(Dataset).Params); + + Result:= DoExecute; + ds.GetResults; + + GetParamValuesStd(GetParams, TStoredProc(Dataset).Params); +end; + +procedure TDAEBDEStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TStoredProc(Dataset).Params); +end; + +function TDAEBDEStoredProcedure.GetStoredProcedureName: string; +begin + result := TStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEBDEStoredProcedure.RefreshParams; +var + dsparams : TParams; +begin + dsparams := TParams.Create(nil); + try + TStoredProc(Dataset).CopyParams(dsParams); + RefreshParamsStd(dsparams); + finally + dsParams.Free; + end; +end; + +procedure TDAEBDEStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TStoredProc(Dataset).Params); +end; + +procedure TDAEBDEStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TStoredProc(Dataset).StoredProcName := Name; +end; + +{ TDAEBDEConnection } + +function TDAEBDEConnection.CreateCustomConnection: TCustomConnection; +begin + FDatabase := TDatabase.Create(nil); + FSession := TSession.Create(nil); + FSession.AutoSessionName := True; + fDatabase.SessionName := FSession.SessionName; + Result := fDatabase; + fDatabase.LoginPrompt := False; + fDatabase.DatabaseName := copy(NewStrippedGuidAsString, 1, 30); +end; + +function TDAEBDEConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_CreateMacroProcessor; + bdeMSSQL: Result := MSSQL_CreateMacroProcessor; + bdeORACLE: Result := Oracle_CreateMacroProcessor; + else + Result:=inherited CreateMacroProcessor; + end; + {$ELSE} + Result:=inherited CreateMacroProcessor; + {$ENDIF} +end; + +destructor TDAEBDEConnection.Destroy; +begin + FSession.CloseDatabase(fDatabase); + FSession.Close; + fDatabase.Close; + FreeAndNil(FSession); + inherited; +end; + +procedure TDAEBDEConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); + + procedure SetUserNamePassword; + begin + with aConnStrParser do begin + if (Self.UserID <> '') then + fDatabase.Params.Values['USER NAME'] := Self.UserID + else if (UserID <> '') then + fDatabase.Params.Values['USER NAME'] := UserID; + + if (Self.Password <> '') then + fDatabase.Params.Values['PASSWORD'] := Self.Password + else if (Password <> '') then + fDatabase.Params.Values['PASSWORD'] := Password; + end; + end; + +var + i : Integer; + sName, sValue: String; +begin + inherited; + with aConnStrParser do begin + if AuxDriver <> '' then begin + fDatabase.Params.Clear; + fDatabase.AliasName := ''; + fDatabase.DriverName := ''; + fProviderType := ProviderToProviderType(AuxDriver); + if fDatabase.Session.IsAlias(AuxDriver) then + fDatabase.AliasName := AuxDriver + else + fDatabase.DriverName := AuxDriver; + end + else + raise EDADriverException.Create('No aux driver specified for BDE connection'); + + fProviderName := AuxDriver; + + case fProviderType of + bdeSTANDARD: begin + //fDatabase.Params.Values['DEFAULT DRIVER'] := ; {PARADOX, DBASE, FOXPRO, ASCIIDRV} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + if Database <> '' then fDatabase.Params.Values['PATH'] := Database; + end; + bdeDB2: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Server <> '' then fDatabase.Params.Values['DB2 DSN'] := Server; { = 'DB2_SERVER'} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeINFORMIX: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['COLLCHAR'] := { = 0,1,2} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['DATE SEPARATOR'] := { = '/'}; + //fDatabase.Params.Values['DBNLS'] := { = '',0,1,2}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['LIST SYNONYMS'] := { NONE, ALL, PRIVATE} + //fDatabase.Params.Values['LOCK MODE'] := { = 5} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeINTRBASE: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['COMMIT RETAIN'] := { = FALSE} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROLE NAME'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Database <> '' then fDatabase.Params.Values['SERVER NAME'] := StringReplace(Database, '\', '/', [rfReplaceAll]); { = IB_SERVER:/PATH/DATABASE.GDB} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server + ':' + fDatabase.Params.Values['SERVER NAME']; { = IB_SERVER:/PATH/DATABASE.GDB} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + //fDatabase.Params.Values['WAIT ON LOCKS'] := {FALSE}; + end; + bdeMSACCESS: begin + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := StringReplace(Database, '\', '/', [rfReplaceAll]); { DRIVE:/PATH/DATABASE.MDB} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SYSTEM DATABASE'] := { *.MDW} + SetUserNamePassword; + end; + bdeMSSQL: begin + //fDatabase.Params.Values['APPLICATION MODE'] := { } + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB EDIT LOGGING'] := { '',TRUE,FALSE} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['HOST NAME'] := { }; + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX QUERY TIME'] := { 300} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NATIONAL LANG NAME'] := { } + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = MSS_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + //fDatabase.Params.Values['TDS PACKET SIZE'] := { = 4096} + SetUserNamePassword; + end; + bdeORACLE: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE INTEGERS'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['LIST SYNONYMS'] := { NONE, ALL, PRIVATE} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NET PROTOCOL'] := { = TNS, TCP/IP,SPX/IPX,NETBIOS,NAMED PIPES,DECNET,3270,VINES,APPC,ASYNC} + //fDatabase.Params.Values['OBJECT MODE'] := { = TRUE/FALSE} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = ORA_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + bdeSYBASE: begin + //fDatabase.Params.Values['APPLICATION MODE'] := { } + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB EDIT LOGGING'] := { '',TRUE,FALSE} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + //fDatabase.Params.Values['CS CURSOR ROWS'] := { = 1} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['DATE MODE'] := { = 0}; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['HOST NAME'] := { }; + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX QUERY TIME'] := { 300} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['NATIONAL LANG NAME'] := { } + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + if Server <> '' then fDatabase.Params.Values['SERVER NAME'] := Server; { = SYB_SERVER} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + //fDatabase.Params.Values['TDS PACKET SIZE'] := { = 512} + SetUserNamePassword; + end; + bdeODBC: begin + //fDatabase.Params.Values['BATCH COUNT'] := { = 200} + //fDatabase.Params.Values['BLOB SIZE'] := { = 32} + //fDatabase.Params.Values['BLOBS TO CACHE'] := { = 64} + if Database <> '' then fDatabase.Params.Values['DATABASE NAME'] := Database; + //fDatabase.Params.Values['ENABLE BCD'] := { TRUE / FALSE} + //fDatabase.Params.Values['ENABLE SCHEMA CACHE'] := { TRUE / FALSE} + //fDatabase.Params.Values['LANGDRIVER'] := { ...} + //fDatabase.Params.Values['MAX ROWS'] := { = -1} + //fDatabase.Params.Values['ODBC DSN'] := {} + //fDatabase.Params.Values['OPEN MODE'] := { READ/WRITE, READ ONLY} + //fDatabase.Params.Values['ROWSET SIZE'] := { = 20} + //fDatabase.Params.Values['SCHEMA CACHE DIR'] := { = ''} + //fDatabase.Params.Values['SCHEMA CACHE SIZE'] := { = 8} + //fDatabase.Params.Values['SCHEMA CACHE TIME'] := { = -1} + //fDatabase.Params.Values['SQLPASSTHRU MODE'] := { SHARED AUTOCOMMIT, SHARED NOAUTOCOMMIT, NOT SHARED} + //fDatabase.Params.Values['SQLQRYMODE'] := { = '',LOCAL,SERVER} + SetUserNamePassword; + end; + end; + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + sValue := AuxParams[sName]; + + if AnsiSameText(sName, 'TransIsolation') then begin + if AnsiSameText(sValue, 'tiDirtyRead') then fDatabase.TransIsolation := tiDirtyRead else + if AnsiSameText(sValue, 'tiReadCommitted') then fDatabase.TransIsolation := tiReadCommitted else + if AnsiSameText(sValue, 'tiRepeatableRead') then fDatabase.TransIsolation := tiRepeatableRead; + end + else if AnsiSameText(sName,'Session_NetFileDir') then begin + FSession.Close; + FSession.NetFileDir := sValue + end + else if AnsiSameText(sName,'Session_PrivateDir') then begin + FSession.Close; + FSession.PrivateDir := sValue + end + else if AnsiSameText(sName,'KeepConnections') and AnsiSameText(sValue, 'False') then begin + FSession.KeepConnections := False // it has True by defaulr + end + else if AnsiSameText(sName,'Exclusive') then + fDatabase.Exclusive := AnsiSameText(sValue, 'True') // it has False by defaulr + else + fDatabase.Params.Values[AuxParamNames[i]] := AuxParams[AuxParamNames[i]]; + end; + end; +end; + +function TDAEBDEConnection.DoBeginTransaction: integer; +begin + result := -1; + fDatabase.StartTransaction; +end; + +procedure TDAEBDEConnection.DoCommitTransaction; +begin + fDatabase.Commit; +end; + +procedure TDAEBDEConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited DoGetForeignKeys(ForeignKeys); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + bdeMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, True); + bdeORACLE: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.DoGetInTransaction: boolean; +begin + Result := fDatabase.InTransaction; +end; + +function TDAEBDEConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +begin + Result := inherited DoGetLastAutoInc(GeneratorName); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + bdeMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + bdeOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + end; + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited DoGetStoredProcedureNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + fDatabase.Session.GetStoredProcNames(fDatabase.DatabaseName, List.Strings); + end; + {$ELSE} + fDatabase.Session.GetStoredProcNames(fDatabase.DatabaseName, List.Strings); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + bdeMSSQL: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + end; + {$ELSE} + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + bdeMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + bdeOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + end; + {$ELSE} + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetTableNames(out List: IROStrings); +begin + inherited DoGetTableNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + fDatabase.GetTableNames(List.Strings); + end; + {$ELSE} + fDatabase.GetTableNames(List.Strings); + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoGetViewNames(out List: IROStrings); +begin + inherited DoGetViewNames(List); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + bdeMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, True); + bdeORACLE: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + end; + {$ENDIF} +end; + +procedure TDAEBDEConnection.DoRollbackTransaction; +begin + fDatabase.Rollback; +end; + +function TDAEBDEConnection.GetDatabaseNames: IROStrings; +begin + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeMSSQL: Result := MSSQL_GetDatabaseNames(Self); + else + Result := NewROStrings; + fDatabase.Session.GetDatabaseNames(Result.Strings); + end; + {$ELSE} + Result := NewROStrings; + fDatabase.Session.GetDatabaseNames(Result.Strings); + {$ENDIF} +end; + +function TDAEBDEConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAEBDEQuery; +end; + +function TDAEBDEConnection.GetFileExtensions: IROStrings; +begin + case fProviderType of + bdeINTRBASE: Result := IB_GetFileExtensions; + bdeMSACCESS: Result := MSACCESS_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +function TDAEBDEConnection.GetGeneratorNames: IROStrings; +begin + case fProviderType of + bdeINTRBASE: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +function TDAEBDEConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +function TDAEBDEConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + result := -1; + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + bdeOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fProviderType of + bdeMSSQL: result:=MSSQL_GetQuoteChars; + bdeORACLE: Result:= Oracle_GetQuoteChars; + else + Result[0] := '"'; + Result[1] := '"'; + end; +end; + +function TDAEBDEConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + Result := inherited GetSPSelectSyntax(HasArguments); + {$IFDEF MAX_SUPPORT} + case fProviderType of + bdeINTRBASE: Result := IB_GetSPSelectSyntax(HasArguments); + bdeMSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + bdeOracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + end; + {$ENDIF} +end; + +function TDAEBDEConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEBDEStoredProcedure; +end; + +function TDAEBDEConnection.GetUserID: string; +begin + Result:=fDatabase.Params.Values['USER NAME']; +end; + +function TDAEBDEConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fProviderType of + bdeMSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + bdeINTRBASE: Result := IB_IdentifierNeedsQuoting(iIdentifier,1); + bdeORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + bdeDB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + bdeSYBASE: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + else + Result := SQL92_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEBDEConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + + if IsEqualGUID(IID, IDADB2Connection) then begin + if not (fProviderType in [bdeDB2]) then Exit; + end; + + if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fProviderType in [bdeSYBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if not (fProviderType in [bdeINTRBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAADOConnection) then begin + if not (fProviderType in [bdeMSSQL]) then Exit; + end; + + if IsEqualGUID(IID, IDAOracleConnection) then begin + if not (fProviderType in [bdeOracle]) then Exit; + end; + + if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fProviderType in [bdeINTRBASE, bdeOracle]) then Exit; + end; + + if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fProviderType in [bdeINTRBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fProviderType in [bdeINTRBASE, bdeMSACCESS]) then Exit; + end; + + if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if not (fProviderType in [bdeINFORMIX, bdeMSSQL, bdeORACLE, bdeSYBASE]) then Exit; + end; + + if IsEqualGUID(IID, IDADirectoryBasedDatabase) then begin + if not (fProviderType in [bdeSTANDARD]) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDABDEDriver]); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEBDEConnection.QuoteFieldName(const aTableName, + aFieldName: string): string; +begin + Result := inherited QuoteFieldName(aTableName, aFieldName); + case fProviderType of + bdeSTANDARD: + if (aTableName <> '') and (aFieldName <> Result) then + Result := QuoteIdentifierIfNeeded(aTableName) + '.' + Result; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc new file mode 100644 index 0000000..7db5910 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDACRLabsUtils.inc @@ -0,0 +1,61 @@ +{ + !!! DO NOT REMOVE THIS FILE !!! + + It's included with an $I directive in the SDAC and ODAC driver units and it's used in + their implementation of the IDAMustSetParams + +} +procedure WriteCrLabsParamValues(InputParams : TDAParamCollection; OutputParams: TDAParams; IgnoreBlobType : boolean = false); +var i : integer; + par : uDAInterfaces.TDAParam; + outpar : DBAccess.TDAParam; + blobtype : TFieldType; +begin + for i := 0 to (InputParams.Count-1) do begin + par := InputParams[i]; + outpar := OutputParams.ParamByName(par.Name); + + // If no blob type is specified, then gets the default field type. + // BlobType is only meaningful to Oracle. MSSQL works fine just setting the DataType + blobtype := BlobTypeMappings[par.BlobType]; + if (blobtype=ftUnknown) + then blobtype := DADataTypesMappings[par.DataType]; + + case par.DataType of + datWideMemo, + datBlob : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if VarIsNull(par.Value) then + outpar.Clear + else begin + if VarIsArray(par.Value) then + outpar.Value := VariantToAnsiString(par.Value) + else + outpar.Value := par.Value; + end; + end; + datMemo : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := ftMemo; + + // Only happens with Oracle + if not IgnoreBlobType and (blobtype<>ftUnknown) then + outpar.DataType := blobtype; + + if VarIsNull(par.Value) then + outpar.Clear + else + outpar.Value := par.Value; + end; + else begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if VarIsNull(par.Value) + then outpar.Clear + else outpar.Value := par.Value; + end; + end; { case } + end; { for } +end; + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas new file mode 100644 index 0000000..8627488 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBISAMDriver.pas @@ -0,0 +1,1109 @@ +unit uDADBISAMDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + + +{$R DataAbstract_DBISAMDriver_Glyphs.res} + +{$I dbisamvr.inc} +{$IFNDEF DBISAM_V4} +{$DEFINE DBISAM_V3} +{$ENDIF} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uROClasses, DBISAMTb, uDAUtils; + +type + { TDADBISAMDriver } + TDADBISAMDriver = class(TDADriverReference) + end; + + { IDBISAMConnection } + IDBISAMConnection = interface + ['{C6222EF8-FBAE-42AE-B034-8FFAE8FF2578}'] + end; + + { IDBISAMConnectionProperties + Provides access to common properties of DBISAM connections } + + IDBISAMConnectionProperties = interface + ['{41BAFCD6-D6EA-477E-B489-7EA6E05FFCC0}'] + function GetForceBufferFlush: Boolean; + procedure SetForceBufferFlush(Value: Boolean); + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + function GetLockProtocol: TLockProtocol; + procedure SetLockProtocol(Value: TLockProtocol); + function GetLockRetryCount: Byte; + procedure SetLockRetryCount(Value: Byte); + function GetLockWaitTime: Word; + procedure SetLockWaitTime(Value: Word); + function GetPrivateDir: string; + procedure SetPrivateDir(const Value: string); + function GetRemotePort: Integer; + procedure SetRemotePort(Value: Integer); + function GetRemoteService: string; + procedure SetRemoteService(const Value: string); + function GetRemoteTrace: Boolean; + procedure SetRemoteTrace(Value: Boolean); + {$IFDEF DBISAM_V3} + function GetRemoteType: TRemoteType; + procedure SetRemoteType(Value: TRemoteType); + {$ENDIF} + {$IFDEF DBISAM_V4} + function GetRemoteCompression: Byte; + procedure SetRemoteCompression(Value: Byte); + function GetRemoteEncryption: Boolean; + procedure SetRemoteEncryption(Value: Boolean); + function GetRemoteEncryptionPassword: string; + procedure SetRemoteEncryptionPassword(const Value: string); + function GetRemoteTimeout: Integer; + procedure SetRemoteTimeout(Value: Integer); + {$ENDIF} + + procedure AddPassword( const aPassword: string); + procedure RemovePassword(const aPassword: string); + procedure RemoveAllPasswords; + + property ForceBufferFlush: Boolean read GetForceBufferFlush write SetForceBufferFlush; + property KeepConnections: Boolean read GetKeepConnections write SetKeepConnections; + property LockProtocol: TLockProtocol read GetLockProtocol write SetLockProtocol; + property LockRetryCount: Byte read GetLockRetryCount write SetLockRetryCount; + property LockWaitTime: Word read GetLockWaitTime write SetLockWaitTime; + property PrivateDir: string read GetPrivateDir write SetPrivateDir; + property RemotePort: Integer read GetRemotePort write SetRemotePort; + property RemoteService: string read GetRemoteService write SetRemoteService; + property RemoteTrace: Boolean read GetRemoteTrace write SetRemoteTrace; + {$IFDEF DBISAM_V3} + property RemoteType: TRemoteType read GetRemoteType write SetRemoteType; + {$ENDIF} + {$IFDEF DBISAM_V4} + property RemoteCompression: Byte read GetRemoteCompression write SetRemoteCompression; + property RemoteEncryption: Boolean read GetRemoteEncryption write SetRemoteEncryption; + property RemoteEncryptionPassword: string read GetRemoteEncryptionPassword write SetRemoteEncryptionPassword; + property RemoteTimeout: Integer read GetRemoteTimeout write SetRemoteTimeout; + {$ENDIF} + end; + + { TDBISAMConnection } + TDBISAMConnection = class(TDAConnectionWrapper) + private + fDatabase: TDBISAMDatabase; + fSession: TDBISAMSession; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TDBISAMDatabase read fDatabase; + property Session: TDBISAMSession read fSession; + end; + + { TDAEDBISAMDriver } + TDAEDBISAMDriver = class(TDAEDriver) + private + + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { TDAEDBISAMConnection } + TDAEDBISAMConnection = class(TDAEConnection, IDBISAMConnection, IDBISAMConnectionProperties) + private + fConnection: TDBISAMConnection; + + protected + // IDBISAMConnectionProperties + function GetForceBufferFlush: Boolean; + procedure SetForceBufferFlush(Value: Boolean); + function GetKeepConnections: Boolean; + procedure SetKeepConnections(Value: Boolean); + function GetLockProtocol: TLockProtocol; + procedure SetLockProtocol(Value: TLockProtocol); + function GetLockRetryCount: Byte; + procedure SetLockRetryCount(Value: Byte); + function GetLockWaitTime: Word; + procedure SetLockWaitTime(Value: Word); + function GetPrivateDir: string; + procedure SetPrivateDir(const Value: string); + function GetRemotePort: Integer; + procedure SetRemotePort(Value: Integer); + function GetRemoteService: string; + procedure SetRemoteService(const Value: string); + function GetRemoteTrace: Boolean; + procedure SetRemoteTrace(Value: Boolean); + {$IFDEF DBISAM_V3} + function GetRemoteType: TRemoteType; + procedure SetRemoteType(Value: TRemoteType); + {$ENDIF} + {$IFDEF DBISAM_V4} + function GetRemoteCompression: Byte; + procedure SetRemoteCompression(Value: Byte); + function GetRemoteEncryption: Boolean; + procedure SetRemoteEncryption(Value: Boolean); + function GetRemoteEncryptionPassword: string; + procedure SetRemoteEncryptionPassword(const Value: string); + function GetRemoteTimeout: Integer; + procedure SetRemoteTimeout(Value: Integer); + {$ENDIF} + procedure AddPassword( const aPassword: string); + procedure RemovePassword(const aPassword: string); + procedure RemoveAllPasswords; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: Boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection);override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEDBISAMQuery } + TDAEDBISAMQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: Boolean); override; + + // IDAMustSetParams + {$IFDEF DBISAM_V4} + procedure RefreshParams; override; + {$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +const + DBISAM_DriverType = 'DBISAM'; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, uDADriverManager, uDARes, uDAMacroProcessors, Variants, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + dbisam_reservedwords: array of string; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADBISAMDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEDBISAMDriver.Create(nil); + result := _driver; +end; + +{ TDBISAMConnection } + +constructor TDBISAMConnection.Create(AOwner: TComponent); +begin + inherited; + + fSession := TDBISAMSession.Create(Self); + fSession.AutoSessionName := TRUE; + + fDatabase := TDBISAMDatabase.Create(Self); + fDatabase.SessionName := fSession.SessionName; + fDatabase.DatabaseName := 'DBISAMDB'; +end; + +function TDBISAMConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected; +end; + +procedure TDBISAMConnection.SetConnected(Value: Boolean); +begin + if not(csDestroying in fDatabase.ComponentState) then begin + try + fSession.Active := Value; + fDatabase.Connected := Value; + except + fSession.Active := FALSE; + fDatabase.Connected := FALSE; + raise; + end; + end; +end; + +{ TDAEDBISAMConnection } + +procedure TDAEDBISAMConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Session.RemoteUser := Self.UserID + else + fConnection.Session.RemoteUser := UserID; + if (Self.Password <> '') then + fConnection.Session.RemotePassword := Self.Password + else + fConnection.Session.RemotePassword := Password; + + if (Server <> '') then begin + // Remote connection + fConnection.Session.SessionType := stRemote; + fConnection.Session.RemoteHost := Server; + fConnection.Database.RemoteDatabase := Database; + if (AuxParams['RemotePort'] <> '') then + fConnection.Session.RemotePort := StrToInt(AuxParams['RemotePort']); + if (AuxParams['RemoteService'] <> '') then + fConnection.Session.RemoteService := AuxParams['RemoteService']; + if (AuxParams['RemoteTrace'] = 'False') then + fConnection.Session.RemoteTrace := False + else if (AuxParams['RemoteTrace'] = 'True') then + fConnection.Session.RemoteTrace := True; + {$IFDEF DBISAM_V3} + if (AuxParams['RemoteType'] = 'rtLAN') then + fConnection.Session.RemoteType := rtLAN + else if (AuxParams['RemoteType'] = 'rtInternet') then + fConnection.Session.RemoteType := rtInternet; + {$ENDIF} + {$IFDEF DBISAM_V4} + if (AuxParams['RemoteCompression'] <> '') then + if (StrToInt(AuxParams['RemoteCompression']) in [0..9]) then + fConnection.Session.RemoteCompression := StrToInt(AuxParams['RemoteCompression']); + if (AuxParams['RemoteEncryption'] = 'False') then + fConnection.Session.RemoteEncryption := False + else if (AuxParams['RemoteEncryption'] = 'True') then + fConnection.Session.RemoteEncryption := True; + if (AuxParams['RemoteEncryptionPassword'] <> '') then + fConnection.Session.RemoteEncryptionPassword := AuxParams['RemoteEncryptionPassword']; + if (AuxParams['RemoteTimeout'] <> '') then + fConnection.Session.RemoteTimeout := StrToInt(AuxParams['RemoteTimeout']); + {$ENDIF} + end + else begin + // Local connection + fConnection.Session.SessionType := stLocal; + fConnection.Database.Directory := Database; + end; + + if (AuxParams['ForceBufferFlush'] = 'False') then + fConnection.Session.ForceBufferFlush := False + else if (AuxParams['ForceBufferFlush'] = 'True') then + fConnection.Session.ForceBufferFlush := True; + if (AuxParams['KeepConnections'] = 'False') then + begin + fConnection.Session.KeepConnections := False; + fConnection.Database.KeepConnection := False; + end + else if (AuxParams['KeepConnections'] = 'True') then + begin + fConnection.Session.KeepConnections := True; + fConnection.Database.KeepConnection := True; + end; + if (AuxParams['LockProtocol'] = 'lpOptimistic') then + fConnection.Session.LockProtocol := lpOptimistic + else if (AuxParams['LockProtocol'] = 'lpPessimistic') then + fConnection.Session.LockProtocol := lpPessimistic; + if (AuxParams['LockRetryCount'] <> '') then + fConnection.Session.LockRetryCount := StrToInt(AuxParams['LockRetryCount']); + if (AuxParams['LockWaitTime'] <> '') then + fConnection.Session.LockWaitTime := StrToInt(AuxParams['LockWaitTime']); + if (AuxParams['PrivateDir'] <> '') then + fConnection.Session.PrivateDir := AuxParams['PrivateDir']; + if (AuxParams['TablePassword'] <> '') then + begin + fConnection.Session.Active := True; + fConnection.Session.AddPassword(AuxParams['TablePassword']); + end; + end; +end; + +function TDAEDBISAMConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.StartTransaction; +end; + +procedure TDAEDBISAMConnection.DoCommitTransaction; +begin + with fConnection do + Database.Commit(Session.ForceBufferFlush); +end; + +function TDAEDBISAMConnection.CreateCustomConnection: TCustomConnection; +begin + result := TDBISAMConnection.Create(nil); + fConnection := TDBISAMConnection(result); +end; + +function TDAEDBISAMConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEDBISAMQuery +end; + +procedure TDAEDBISAMConnection.DoGetTableNames(out List: IROStrings); +var + _database: string; +begin + List := TROStrings.Create; + if (fConnection.Session.SessionType = stLocal) then + _database := fConnection.Database.Directory + else + _database := fConnection.Database.RemoteDatabase; + + fConnection.Session.GetTableNames(_database, List.Strings); +end; + +procedure TDAEDBISAMConnection.DoRollbackTransaction; +begin + fConnection.Database.Rollback; +end; + +function TDAEDBISAMConnection.DoGetInTransaction: Boolean; +begin + result := fConnection.Database.InTransaction; +end; + +function TDAEDBISAMConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + result := TDADBISAMMacroProcessor.Create; +end; + +function TDAEDBISAMConnection.GetForceBufferFlush: Boolean; +begin + result := fConnection.Session.ForceBufferFlush; +end; + +procedure TDAEDBISAMConnection.SetForceBufferFlush(Value: Boolean); +begin + fConnection.Session.ForceBufferFlush := Value; +end; + +function TDAEDBISAMConnection.GetKeepConnections: Boolean; +begin + result := fConnection.Session.KeepConnections; +end; + +procedure TDAEDBISAMConnection.SetKeepConnections(Value: Boolean); +begin + fConnection.Session.KeepConnections := Value; + fConnection.Database.KeepConnection := Value; +end; + +function TDAEDBISAMConnection.GetLockProtocol: TLockProtocol; +begin + result := fConnection.Session.LockProtocol; +end; + +procedure TDAEDBISAMConnection.SetLockProtocol(Value: TLockProtocol); +begin + fConnection.Session.LockProtocol := Value; +end; + +function TDAEDBISAMConnection.GetLockRetryCount: Byte; +begin + result := fConnection.Session.LockRetryCount; +end; + +procedure TDAEDBISAMConnection.SetLockRetryCount(Value: Byte); +begin + fConnection.Session.LockRetryCount := Value; +end; + +function TDAEDBISAMConnection.GetLockWaitTime: Word; +begin + result := fConnection.Session.LockWaitTime; +end; + +procedure TDAEDBISAMConnection.SetLockWaitTime(Value: Word); +begin + fConnection.Session.LockWaitTime := Value; +end; + +function TDAEDBISAMConnection.GetPrivateDir: string; +begin + result := fConnection.Session.PrivateDir; +end; + +procedure TDAEDBISAMConnection.SetPrivateDir(const Value: string); +begin + fConnection.Session.PrivateDir := Value; +end; + +function TDAEDBISAMConnection.GetRemotePort: Integer; +begin + result := fConnection.Session.RemotePort; +end; + +procedure TDAEDBISAMConnection.SetRemotePort(Value: Integer); +begin + fConnection.Session.RemotePort := Value; +end; + +function TDAEDBISAMConnection.GetRemoteService: string; +begin + result := fConnection.Session.RemoteService; +end; + +procedure TDAEDBISAMConnection.SetRemoteService(const Value: string); +begin + fConnection.Session.RemoteService := Value; +end; + +function TDAEDBISAMConnection.GetRemoteTrace: Boolean; +begin + result := fConnection.Session.RemoteTrace; +end; + +procedure TDAEDBISAMConnection.SetRemoteTrace(Value: Boolean); +begin + fConnection.Session.RemoteTrace := Value; +end; + +{$IFDEF DBISAM_V3} + +function TDAEDBISAMConnection.GetRemoteType: TRemoteType; +begin + result := fConnection.Session.RemoteType; +end; + +procedure TDAEDBISAMConnection.SetRemoteType(Value: TRemoteType); +begin + fConnection.Session.RemoteType := Value; +end; +{$ENDIF} + +{$IFDEF DBISAM_V4} + +function TDAEDBISAMConnection.GetRemoteCompression: Byte; +begin + result := fConnection.Session.RemoteCompression; +end; + +procedure TDAEDBISAMConnection.SetRemoteCompression(Value: Byte); +begin + fConnection.Session.RemoteCompression := Value; +end; + +function TDAEDBISAMConnection.GetRemoteEncryption: Boolean; +begin + result := fConnection.Session.RemoteEncryption; +end; + +procedure TDAEDBISAMConnection.SetRemoteEncryption(Value: Boolean); +begin + fConnection.Session.RemoteEncryption := Value; +end; + +function TDAEDBISAMConnection.GetRemoteEncryptionPassword: string; +begin + result := fConnection.Session.RemoteEncryptionPassword; +end; + +procedure TDAEDBISAMConnection.SetRemoteEncryptionPassword(const Value: string); +begin + fConnection.Session.RemoteEncryptionPassword := Value; +end; + +function TDAEDBISAMConnection.GetRemoteTimeout: Integer; +begin + result := fConnection.Session.RemoteTimeout; +end; + +procedure TDAEDBISAMConnection.SetRemoteTimeout(Value: Integer); +begin + fConnection.Session.RemoteTimeout := Value; +end; +{$ENDIF} + +procedure TDAEDBISAMConnection.AddPassword( const aPassword: string); +begin + fConnection.Session.AddPassword(aPassword); +end; + +procedure TDAEDBISAMConnection.RemovePassword( const aPassword: string); +begin + fConnection.Session.RemovePassword(aPassword); +end; + +procedure TDAEDBISAMConnection.RemoveAllPasswords; +begin + fConnection.Session.RemoveAllPasswords; +end; + +function TDAEDBISAMConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +var + lQuery: IDADataset; +begin + Result:= inherited DoGetLastAutoInc(GeneratorName); + if GeneratorName <> '' then begin + lQuery:=GetDatasetClass.Create(Self); + try + lQuery.SQL := 'SELECT LASTAUTOINC('''+GeneratorName+''') from '+QuoteIdentifierIfNeeded(GeneratorName); + lQuery.Open; + Result := lQuery.Fields[0].Value; + finally + lQuery:=nil; + end; + end; +end; + +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED OFF} +{$ENDIF DELPHI10UP} +procedure TDAEDBISAMConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + i: integer; + pos1: integer; + fld: TDAField; + {$IFDEF DBISAM_V4} + lofld:TDBISAMFieldDef; + {$ELSE} + lofld:TFieldDef; + {$ENDIF} + s: string; + ltable: TDBISAMTable; +begin + Fields:=TDAFieldCollection.Create(nil); + ltable:=TDBISAMTable.Create(nil); + try + ltable.DatabaseName := fConnection.Database.DatabaseName; + ltable.SessionName := fConnection.Session.SessionName; + ltable.TableName := aTableName; + ltable.FieldDefs.Update; + for i:=0 to ltable.FieldDefs.Count-1 do begin + lofld:=ltable.FieldDefs[i]; + fld:= Fields.Add; + fld.Name:= lofld.Name; + fld.DataType:= VCLTypeToDAType(lofld.DataType); + fld.Size:= lofld.Size; + fld.Required:= lofld.Required; + {$IFDEF DBISAM_V4} + fld.DefaultValue:=lofld.DefaultValue; + fld.Description:=lofld.Description; + {$ENDIF DBISAM_V4} + fld.ReadOnly:= DB.faReadonly in lofld.Attributes; + if fld.DataType in [datAutoInc, datLargeAutoInc] then fld.GeneratorName:= aTableName; + if fld.DataType = datDecimal then begin + case lofld.DataType of + ftBCD: begin + fld.DecimalPrecision:=20; + fld.DecimalScale:=lofld.Size; + end; + end; + end; + end; + + //pk + ltable.IndexDefs.Update; + For i:=0 to ltable.IndexDefs.Count - 1 do + if ixPrimary in ltable.IndexDefs[i].Options then begin + Pos1 := 1; + s:=ltable.IndexDefs[i].Fields; + while Pos1 <= Length(s) do begin + fld := Fields.FindField(ExtractFieldName(s, Pos1)); + if fld <> nil then fld.InPrimaryKey:=True; + end; + end; + + finally + ltable.free; + end; +end; +{$IFDEF DELPHI10UP} +{$WARN SYMBOL_DEPRECATED ON} +{$ENDIF DELPHI10UP} + +function TDAEDBISAMConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or TestIdentifier(iIdentifier,dbisam_reservedwords); +end; + +{ TDAEDBISAMDriver } + +procedure TDAEDBISAMDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; + + List.Add('ForceBufferFlush=False,True'); + List.Add('KeepConnections=False,True'); + List.Add('LockProtocol=lpOptimistic,lpPessimistic'); + List.Add('LockRetryCount='); + List.Add('LockWaitTime='); + List.Add('PrivateDir='); + List.Add('RemotePort='); + List.Add('RemoteService='); + List.Add('RemoteTrace=False,True'); + List.Add('TablePassword='); + {$IFDEF DBISAM_V3} + List.Add('RemoteType=rtLAN,rtInternet'); + {$ENDIF} + {$IFDEF DBISAM_V4} + List.Add('RemoteCompression='); + List.Add('RemoteEncryption=False,True'); + List.Add('RemoteEncryptionPassword='); + List.Add('RemoteTimeout='); + {$ENDIF} + + List.Sorted := True; +end; + +function TDAEDBISAMDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEDBISAMDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEDBISAMConnection +end; + +function TDAEDBISAMDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + Result:=DBISAM_DriverType; +end; + +function TDAEDBISAMDriver.GetDescription: string; +begin + {$IFDEF DBISAM_V3} + result := 'DBISAM3 Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; + {$ENDIF} + {$IFDEF DBISAM_V4} + result := 'DBISAM4 Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; + {$ENDIF} +end; + +function TDAEDBISAMDriver.GetDriverID: string; +begin + {$IFDEF DBISAM_V3} + result := 'DBISAM3'; + {$ENDIF} + {$IFDEF DBISAM_V4} + result := 'DBISAM4'; + {$ENDIF} +end; + +{ TDAEDBISAMQuery } + +function TDAEDBISAMQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TDBISAMQuery.Create(nil); + + with TDBISAMQuery(result) do begin + DatabaseName := TDAEDBISAMConnection(aConnection).fConnection.Database.DatabaseName; + SessionName := TDAEDBISAMConnection(aConnection).fConnection.Session.SessionName; + ReadOnly := True; + RequestLive := True; + end; +end; + +function TDAEDBISAMQuery.DoExecute: integer; +begin + with TDBISAMQuery(Dataset) do begin + ExecSQL; + result := RowsAffected; + end; +end; + +function TDAEDBISAMQuery.DoGetSQL: string; +begin + result := TDBISAMQuery(Dataset).SQL.Text +end; + +procedure TDAEDBISAMQuery.DoPrepare(Value: Boolean); +begin + TDBISAMQuery(Dataset).Prepared := Value; +end; + +procedure TDAEDBISAMQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; + {$IFDEF DBISAM_V4} + outpar: TDBISAMParam; + {$ELSE} + outpar: TParam; + {$ENDIF} + ft: TFieldType; + lParIsEmpty: Boolean; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + outpar := TDBISAMQuery(Dataset).Params.ParamByName(par.Name); + + ft := DATypeToVCLType(par.DataType); + {$IFNDEF DBISAM_V4} + case par.ParamType of + daptInput: outpar.ParamType := ptInput; + daptOutput: outpar.ParamType := ptOutput; + daptInputOutput: outpar.ParamType := ptInputOutput; + daptResult: outpar.ParamType := ptResult; + end; + {$ENDIF DBISAM_V3} + lParIsEmpty := VarIsEmpty(par.Value) or VarIsNull(par.Value); + + if par.DataType = datBlob then begin + outpar.DataType := ftBlob; + if not (par.ParamType in [daptOutput, daptResult]) then begin + if lParIsEmpty then + outpar.Value := Null + else + outpar.Value := VariantToAnsiString(par.Value); + end; + end + else begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + if not (par.ParamType in [daptOutput, daptResult]) then outpar.Value := par.Value; + end; + + if lParIsEmpty and (par.DataType <> datUnknown) then begin + if (outpar.DataType <> ft) and (ft <> ftUnknown) then outpar.DataType := ft; + end; + end; +end; + +procedure TDAEDBISAMQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + if Par.ParamType in [daptOutput, daptInputOutput, daptResult] then + Par.Value := TDBISAMQuery(Dataset).Params.ParamByName(par.Name).Value; + end; +end; + +procedure TDAEDBISAMQuery.DoSetSQL(const Value: string); +begin + TDBISAMQuery(Dataset).SQL.Text := Value; +end; + +{$IFDEF DBISAM_V4} +procedure TDAEDBISAMQuery.RefreshParams; +var + i: Integer; + par: TDAParam; + outpar: TDBISAMParam; + ds: TDBISAMQuery; +begin + inherited; + ds := TDBISAMQuery(Dataset); + if not Assigned(ds.Params) then + Exit; + for i := 0 to ds.Params.Count -1 do begin + outpar := ds.Params[i]; + + par := self.ParamByName(outpar.Name); + + if outpar.DataType <> ftUnknown then begin + par.DataType := VCLTypeToDAType(outpar.DataType); + end; + end; +end; +{$ENDIF} + +exports GetDriverObject name func_GetDriverObject; + +procedure TDAEDBISAMQuery.ClearParams; +begin + inherited; + TDBISAMQuery(Dataset).Params.Clear; +end; + +procedure dbisam_InitializeReservedWords; +begin + SetLength(dbisam_reservedwords, 220); + // sorted with TStringList.Sort (bds2007) + dbisam_reservedwords[0] := 'ABS'; + dbisam_reservedwords[1] := 'ACOS'; + dbisam_reservedwords[2] := 'ADD'; + dbisam_reservedwords[3] := 'ALL'; + dbisam_reservedwords[4] := 'ALLTRIM'; + dbisam_reservedwords[5] := 'ALTER'; + dbisam_reservedwords[6] := 'AND'; + dbisam_reservedwords[7] := 'AS'; + dbisam_reservedwords[8] := 'ASC'; + dbisam_reservedwords[9] := 'ASCENDING'; + dbisam_reservedwords[10] := 'ASIN'; + dbisam_reservedwords[11] := 'AT'; + dbisam_reservedwords[12] := 'ATAN'; + dbisam_reservedwords[13] := 'ATAN2'; + dbisam_reservedwords[14] := 'AUTOINC'; + dbisam_reservedwords[15] := 'AVG'; + dbisam_reservedwords[16] := 'BETWEEN'; + dbisam_reservedwords[17] := 'BINARY'; + dbisam_reservedwords[18] := 'BIT'; + dbisam_reservedwords[19] := 'BLOB'; + dbisam_reservedwords[20] := 'BLOCK'; + dbisam_reservedwords[21] := 'BOOL'; + dbisam_reservedwords[22] := 'BOOLEAN'; + dbisam_reservedwords[23] := 'BOTH'; + dbisam_reservedwords[24] := 'BY'; + dbisam_reservedwords[25] := 'BYTES'; + dbisam_reservedwords[26] := 'CAST'; + dbisam_reservedwords[27] := 'CEIL'; + dbisam_reservedwords[28] := 'CEILING'; + dbisam_reservedwords[29] := 'CHAR'; + dbisam_reservedwords[30] := 'CHARACTER'; + dbisam_reservedwords[31] := 'CHARCASE'; + dbisam_reservedwords[32] := 'CHARS'; + dbisam_reservedwords[33] := 'COALESCE'; + dbisam_reservedwords[34] := 'COLUMN'; + dbisam_reservedwords[35] := 'COLUMNS'; + dbisam_reservedwords[36] := 'COMMIT'; + dbisam_reservedwords[37] := 'COMPRESS'; + dbisam_reservedwords[38] := 'CONCAT'; + dbisam_reservedwords[39] := 'CONSTRAINT'; + dbisam_reservedwords[40] := 'COS'; + dbisam_reservedwords[41] := 'COT'; + dbisam_reservedwords[42] := 'COUNT'; + dbisam_reservedwords[43] := 'CREATE'; + dbisam_reservedwords[44] := 'CURRENT_DATE'; + dbisam_reservedwords[45] := 'CURRENT_GUID'; + dbisam_reservedwords[46] := 'CURRENT_TIME'; + dbisam_reservedwords[47] := 'CURRENT_TIMESTAMP'; + dbisam_reservedwords[48] := 'DAY'; + dbisam_reservedwords[49] := 'DAYOFWEEK'; + dbisam_reservedwords[50] := 'DAYOFYEAR'; + dbisam_reservedwords[51] := 'DAYSFROMMSECS'; + dbisam_reservedwords[52] := 'DECIMAL'; + dbisam_reservedwords[53] := 'DEFAULT'; + dbisam_reservedwords[54] := 'DEGREES'; + dbisam_reservedwords[55] := 'DELETE'; + dbisam_reservedwords[56] := 'DELIMITER'; + dbisam_reservedwords[57] := 'DESC'; + dbisam_reservedwords[58] := 'DESCENDING'; + dbisam_reservedwords[59] := 'DESCRIPTION'; + dbisam_reservedwords[60] := 'DISTINCT'; + dbisam_reservedwords[61] := 'DROP'; + dbisam_reservedwords[62] := 'DUPBYTE'; + dbisam_reservedwords[63] := 'ELSE'; + dbisam_reservedwords[64] := 'EMPTY'; + dbisam_reservedwords[65] := 'ENCRYPTED'; + dbisam_reservedwords[66] := 'ESCAPE'; + dbisam_reservedwords[67] := 'EXCEPT'; + dbisam_reservedwords[68] := 'EXISTS'; + dbisam_reservedwords[69] := 'EXP'; + dbisam_reservedwords[70] := 'EXPORT'; + dbisam_reservedwords[71] := 'EXTRACT'; + dbisam_reservedwords[72] := 'FALSE'; + dbisam_reservedwords[73] := 'FLOAT'; + dbisam_reservedwords[74] := 'FLOOR'; + dbisam_reservedwords[75] := 'FLUSH'; + dbisam_reservedwords[76] := 'FOR'; + dbisam_reservedwords[77] := 'FORCEINDEXREBUILD'; + dbisam_reservedwords[78] := 'FROM'; + dbisam_reservedwords[79] := 'FULL'; + dbisam_reservedwords[80] := 'GRAPHIC'; + dbisam_reservedwords[81] := 'GROUP'; + dbisam_reservedwords[82] := 'GUID'; + dbisam_reservedwords[83] := 'HAVING'; + dbisam_reservedwords[84] := 'HEADERS'; + dbisam_reservedwords[85] := 'HOUR'; + dbisam_reservedwords[86] := 'HOURSFROMMSECS'; + dbisam_reservedwords[87] := 'IDENT_CURRENT'; + dbisam_reservedwords[88] := 'IDENTITY'; + dbisam_reservedwords[89] := 'IF'; + dbisam_reservedwords[90] := 'IFNULL'; + dbisam_reservedwords[91] := 'IMPORT'; + dbisam_reservedwords[92] := 'IN'; + dbisam_reservedwords[93] := 'INCLUDE'; + dbisam_reservedwords[94] := 'INDEX'; + dbisam_reservedwords[95] := 'INNER'; + dbisam_reservedwords[96] := 'INSERT'; + dbisam_reservedwords[97] := 'INT'; + dbisam_reservedwords[98] := 'INTEGER'; + dbisam_reservedwords[99] := 'INTERSECT'; + dbisam_reservedwords[100] := 'INTERVAL'; + dbisam_reservedwords[101] := 'INTO'; + dbisam_reservedwords[102] := 'IS'; + dbisam_reservedwords[103] := 'JOIN'; + dbisam_reservedwords[104] := 'KEY'; + dbisam_reservedwords[105] := 'LARGEINT'; + dbisam_reservedwords[106] := 'LAST'; + dbisam_reservedwords[107] := 'LASTAUTOINC'; + dbisam_reservedwords[108] := 'LCASE'; + dbisam_reservedwords[109] := 'LEADING'; + dbisam_reservedwords[110] := 'LEFT'; + dbisam_reservedwords[111] := 'LENGTH'; + dbisam_reservedwords[112] := 'LIKE'; + dbisam_reservedwords[113] := 'LOCALE'; + dbisam_reservedwords[114] := 'LOG'; + dbisam_reservedwords[115] := 'LOG10'; + dbisam_reservedwords[116] := 'LONGVARBINARY'; + dbisam_reservedwords[117] := 'LONGVARCHAR'; + dbisam_reservedwords[118] := 'LOWER'; + dbisam_reservedwords[119] := 'LTRIM'; + dbisam_reservedwords[120] := 'MAJOR'; + dbisam_reservedwords[121] := 'MAX'; + dbisam_reservedwords[122] := 'MAXIMUM'; + dbisam_reservedwords[123] := 'MEMO'; + dbisam_reservedwords[124] := 'MIN'; + dbisam_reservedwords[125] := 'MINIMUM'; + dbisam_reservedwords[126] := 'MINOR'; + dbisam_reservedwords[127] := 'MINSFROMMSECS'; + dbisam_reservedwords[128] := 'MINUTE'; + dbisam_reservedwords[129] := 'MOD'; + dbisam_reservedwords[130] := 'MONEY'; + dbisam_reservedwords[131] := 'MONTH'; + dbisam_reservedwords[132] := 'MSECOND'; + dbisam_reservedwords[133] := 'MSECSFROMMSECS'; + dbisam_reservedwords[134] := 'NOBACKUP'; + dbisam_reservedwords[135] := 'NOCASE'; + dbisam_reservedwords[136] := 'NOCHANGE'; + dbisam_reservedwords[137] := 'NOJOINOPTIMIZE'; + dbisam_reservedwords[138] := 'NONE'; + dbisam_reservedwords[139] := 'NOT'; + dbisam_reservedwords[140] := 'NULL'; + dbisam_reservedwords[141] := 'NUMERIC'; + dbisam_reservedwords[142] := 'OCCURS'; + dbisam_reservedwords[143] := 'ON'; + dbisam_reservedwords[144] := 'OPTIMIZE'; + dbisam_reservedwords[145] := 'OR'; + dbisam_reservedwords[146] := 'ORDER'; + dbisam_reservedwords[147] := 'OUTER'; + dbisam_reservedwords[148] := 'PAGE'; + dbisam_reservedwords[149] := 'PI'; + dbisam_reservedwords[150] := 'POS'; + dbisam_reservedwords[151] := 'POSITION'; + dbisam_reservedwords[152] := 'POWER'; + dbisam_reservedwords[153] := 'PRIMARY'; + dbisam_reservedwords[154] := 'RADIANS'; + dbisam_reservedwords[155] := 'RAND'; + dbisam_reservedwords[156] := 'RANGE'; + dbisam_reservedwords[157] := 'REDEFINE'; + dbisam_reservedwords[158] := 'RENAME'; + dbisam_reservedwords[159] := 'REPAIR'; + dbisam_reservedwords[160] := 'REPEAT'; + dbisam_reservedwords[161] := 'REPLACE'; + dbisam_reservedwords[162] := 'RIGHT'; + dbisam_reservedwords[163] := 'ROLLBACK'; + dbisam_reservedwords[164] := 'ROUND'; + dbisam_reservedwords[165] := 'RTRIM'; + dbisam_reservedwords[166] := 'RUNSUM'; + dbisam_reservedwords[167] := 'SECOND'; + dbisam_reservedwords[168] := 'SECSFROMMSECS'; + dbisam_reservedwords[169] := 'SELECT'; + dbisam_reservedwords[170] := 'SET'; + dbisam_reservedwords[171] := 'SIGN'; + dbisam_reservedwords[172] := 'SIN'; + dbisam_reservedwords[173] := 'SIZE'; + dbisam_reservedwords[174] := 'SMALLINT'; + dbisam_reservedwords[175] := 'SPACE'; + dbisam_reservedwords[176] := 'SQRT'; + dbisam_reservedwords[177] := 'START'; + dbisam_reservedwords[178] := 'STDDEV'; + dbisam_reservedwords[179] := 'STOP'; + dbisam_reservedwords[180] := 'SUBSTRING'; + dbisam_reservedwords[181] := 'SUM'; + dbisam_reservedwords[182] := 'TABLE'; + dbisam_reservedwords[183] := 'TAN'; + dbisam_reservedwords[184] := 'TEXT'; + dbisam_reservedwords[185] := 'TEXTOCCURS'; + dbisam_reservedwords[186] := 'TEXTSEARCH'; + dbisam_reservedwords[187] := 'THEN'; + dbisam_reservedwords[188] := 'TIME'; + dbisam_reservedwords[189] := 'TIMESTAMP'; + dbisam_reservedwords[190] := 'TO'; + dbisam_reservedwords[191] := 'TOP'; + dbisam_reservedwords[192] := 'TRAILBYTE'; + dbisam_reservedwords[193] := 'TRAILING'; + dbisam_reservedwords[194] := 'TRANSACTION'; + dbisam_reservedwords[195] := 'TRIM'; + dbisam_reservedwords[196] := 'TRUE'; + dbisam_reservedwords[197] := 'TRUNC'; + dbisam_reservedwords[198] := 'TRUNCATE'; + dbisam_reservedwords[199] := 'UCASE'; + dbisam_reservedwords[200] := 'UNION'; + dbisam_reservedwords[201] := 'UNIQUE'; + dbisam_reservedwords[202] := 'UPDATE'; + dbisam_reservedwords[203] := 'UPGRADE'; + dbisam_reservedwords[204] := 'UPPER'; + dbisam_reservedwords[205] := 'USER'; + dbisam_reservedwords[206] := 'VALUES'; + dbisam_reservedwords[207] := 'VARBINARY'; + dbisam_reservedwords[208] := 'VARBYTES'; + dbisam_reservedwords[209] := 'VARCHAR'; + dbisam_reservedwords[210] := 'VERIFY'; + dbisam_reservedwords[211] := 'VERSION'; + dbisam_reservedwords[212] := 'WEEK'; + dbisam_reservedwords[213] := 'WHERE'; + dbisam_reservedwords[214] := 'WITH'; + dbisam_reservedwords[215] := 'WORD'; + dbisam_reservedwords[216] := 'WORDS'; + dbisam_reservedwords[217] := 'WORK'; + dbisam_reservedwords[218] := 'YEAR'; + dbisam_reservedwords[219] := 'YEARSFROMMSECS'; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + dbisam_InitializeReservedWords; +finalization + dbisam_reservedwords := nil; + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas new file mode 100644 index 0000000..19938af --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADBXDriver.pas @@ -0,0 +1,1046 @@ +unit uDADBXDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + + +{$R DataAbstract_DBXDriver_Glyphs.res} + +interface + +uses Windows,Classes, DB, uDAEngine, uDAInterfaces, uROClasses, SqlExpr,{$IFNDEF DELPHI11UP}DBXpress,{$ENDIF} + SqlConst, uDAUtils, uDAIBInterfaces, uDAAdoInterfaces,uDAMySQLInterfaces, {$IFDEF DELPHI9UP}uDASybaseInterfaces,{$ENDIF} + uDADB2Interfaces, uDAOracleInterfaces; + +const + // Standard dbExpress driver identifiers + dbx_UnknownId = '???'; + dbx_MSSQLId = 'MSSQL'; + dbx_InterbaseId = 'Interbase'; + dbx_OracleId = 'Oracle'; + dbx_DB2Id = 'DB2'; + dbx_MySQLId = 'MYSQL'; + dbx_InformixId = 'Informix'; + {$IFDEF DELPHI9UP} + dbx_ASAid = 'ASA'; + dbx_ASEid = 'ASE'; + {$ENDIF} + {$IFDEF DELPHI14UP} + dbx_FirebirdID = 'Firebird'; + {$ENDIF} + + + +type + // Standard dbExpress driver enumerated + TDADBXDriverType = (dbx_Unknown, + dbx_MSSQL, + dbx_Interbase, + dbx_Oracle, + dbx_DB2, + dbx_MySQL, + dbx_Informix + {$IFDEF DELPHI9UP} + , dbx_ASA, dbx_ASE + {$ENDIF DELPHI9UP} + {$IFDEF DELPHI14UP} + , dbx_Firebird + {$ENDIF} + ); + +const + // Standard dbExpress driver identifier array (useful for lookups) + DBXDrivers: array[TDADBXDriverType] of string = ( + dbx_UnknownId, + dbx_MSSQLId, + dbx_InterbaseId, + dbx_OracleId, + dbx_DB2Id, + dbx_MySQLId, + dbx_InformixId + {$IFDEF DELPHI9UP} + ,dbx_ASAid, dbx_ASEid + {$ENDIF DELPHI9UP} + {$IFDEF DELPHI14UP} + , dbx_FirebirdID + {$ENDIF} + ); + +type + { TDADBXDriver } + TDADBXDriver = class(TDADriverReference) + end; + + { TDAEDBXDriver } + TDAEDBXDriver = class(TDAEDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxDrivers(out List: IROStrings); override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + // IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + end; + + { IDBXConnection + For identification purposes. } + IDBXConnection = interface + ['{D4E8FE6C-76B5-46FA-A850-2FD626960775}'] + function GetDriverName: string; + function GetDriverType: TDADBXDriverType; + + property DriverName: string read GetDriverName; + property DriverType: TDADBXDriverType read GetDriverType; + end; + + { TDBXConnection } + TDBXConnection = class(TDAConnectionWrapper) + private + fSQLConnection: TSQLConnection; + fTransDesc: TTransactionDesc; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property SQLConnection: TSQLConnection read fSQLConnection; + property TransDesc: TTransactionDesc read fTransDesc; + end; + + + { TDAEDBXConnection } + TDAEDBXConnection = class(TDAEConnection, IDAFileBasedDatabase, + IDACanQueryDatabaseNames, IDAUseGenerators ,IDAUseGenerators2 ,{IDAADOConnection,} + IDAInterbaseConnection, IDACanQueryGeneratorsNames, + {$IFDEF DELPHI9UP}IDASybaseConnection,{$ENDIF} + IDADB2Connection, IDAMySQLConnection,IDAOracleConnection) + private + fConnection: TDBXConnection; + fDriverName: string; + fDriverType: TDADBXDriverType; + fMSSQLSchemaEnabled: Boolean; + fSqlDialect: Integer; + FMySQLVersion: integer; + function GetMySQLVersion: integer; + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + function GetUserID: string; override; safecall; + procedure SetUserID(const Value: string); override; safecall; + function GetPassword: string; override; safecall; + procedure SetPassword(const Value: string); override; safecall; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + function GetQuoteChars: TDAQuoteCharArray; override; + // IDBXConnection + function GetDriverName: string; + function GetDriverType: TDADBXDriverType; + function GetSPSelectSyntax(HasArguments: Boolean): string; override; + safecall; + //IDAFileBasedDatabase + function GetFileExtensions: IROStrings; + //IDACanQueryDatabaseNames + function GetDatabaseNames: IROStrings; + //IDAUseGenerators + function GetNextAutoinc(const GeneratorName: string): integer; safecall; + //IDAUseGenerators2 + function GetNextAutoinc2(const GeneratorName: string): variant; safecall; + // IDACanQueryGeneratorsNames + function GetGeneratorNames: IROStrings; + public + property MSSQLSchemaEnabled: Boolean read fMSSQLSchemaEnabled write fMSSQLSchemaEnabled; + end; + + { TDAEDBXQuery } + TDAEDBXQuery = class(TDAEDataset,IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function IsNeedToFixFMTBCDIssue: Boolean; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure ClearParams; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEDBXStoredProcedure } + TDAEDBXStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function DBXDriverIdToDBXDriverType(const anID: string): TDADBXDriverType; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, Variants, SqlTimSt, INIFiles, + {$IFDEF DELPHI12UP} + // full set of files + DbxDb2,DbxInformix,DbxInterbase,DbxMSSQL,DbxMySql,DbxOracle,DbxSybaseASA,DbxSybaseASE, + {$ENDIF} + {$IFDEF DELPHI14UP} + DbxFirebird, + {$ENDIF} + uDADriverManager, uDARes, uDAMacroProcessors, + uROBinaryHelpers,uDASQL92Interfaces; + +// TODO: Add support for IADOConnection and IInterbaseConnection, etc by redefining QueryInterface in TDAEDBXConnection + + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADBXDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEDBXDriver.Create(nil); + result := _driver; +end; + +function DBXDriverIdToDBXDriverType(const anID: string): TDADBXDriverType; +var + x: TDADBXDriverType; +begin + result := dbx_Unknown; + + for x := Low(TDADBXDriverType) to High(TDADBXDriverType) do + if AnsiSameText(DBXDrivers[x], anID) then begin + result := x; + Exit; + end; + //RaiseError('Unknown dbExpress driver %s', [anID]); +end; + +{ TDBXConnection } + +constructor TDBXConnection.Create(AOwner: TComponent); +begin + inherited; + fSQLConnection := TSQLConnection.Create(nil); +end; + +destructor TDBXConnection.Destroy; +begin + inherited; + fSQLConnection.Free; +end; + +function TDBXConnection.GetConnected: Boolean; +begin + result := fSQLConnection.Connected +end; + +procedure TDBXConnection.SetConnected(Value: Boolean); +begin + fSQLConnection.Connected := Value; +end; + +{ TDAEDBXConnection } +{$IFDEF DELPHI2009UP} +const + SDriverNotInConfigFile = 'Driver (%s) not found in Cfg file (%s)'; +{$ENDIF} + +procedure TDAEDBXConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); + + function GetProfileString(Section, Setting, IniFileName: string): string; + var + IniFile: TMemIniFile; + List: TStrings; + begin + List := TStringList.Create; + try + IniFile := TMemIniFile.Create(IniFileName); + IniFile.ReadSectionValues(Section, List); + try + Result := List.Values[Setting]; + finally + IniFile.Free; + end; + finally + List.Free; + end; + end; + +var + i: integer; + drvregfile: string; +begin + inherited; + FMySQLVersion := -1; + with aConnStrParser do begin + + with TDBXConnection(aConnectionObject).SQLConnection do begin + DriverName := AuxDriver; + + fDriverType := DBXDriverIdToDBXDriverType(AuxDriver); + + drvregfile := GetDriverRegistryFile(false); + + try + VendorLib := GetProfileString(DriverName, VENDORLIB_KEY, drvregfile); + LibraryName := GetProfileString(DriverName, DLLLIB_KEY, drvregfile); + GetDriverFunc := GetProfileString(DriverName, GETDRIVERFUNC_KEY, drvregfile); + except + DatabaseErrorFmt(SDriverNotInConfigFile, [DriverName, drvregfile]); + end; + + Params.Clear; + Params.Values[szUSERNAME] := UserID; + Params.Values[szPASSWORD] := Password; + if fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}] then begin // Dbx requires a seperate host field for Interbase + if Trim(Server) <> '(local)' then + Params.Values[DATABASENAME_KEY] := Server + ':' + Database + else + Params.Values[DATABASENAME_KEY] := Database; + if auxParams[SQLDIALECT_KEY] = '' then begin + AuxParams[SQLDIALECT_KEY] := '3'; // default to 3 + end; + end else begin + Params.Values[HOSTNAME_KEY] := Server; + Params.Values[DATABASENAME_KEY] := Database; + end; + fMSSQLSchemaEnabled := false; + for i := 0 to (AuxParamsCount - 1) do begin + if AnsiSameText(AuxParamNames[i], 'DriverName') then + fConnection.fSQLConnection.DriverName:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'GetDriverFunc') then + fConnection.fSQLConnection.GetDriverFunc:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'LibraryName') then + fConnection.fSQLConnection.LibraryName:=AuxParams[AuxParamNames[i]] + else if AnsiSameText(AuxParamNames[i], 'TableScope') then begin + if AnsiSameText(AuxParams[AuxParamNames[i]], 'Synonyms') then + TableScope := [tsTable, tsView, tsSynonym] + else + TableScope := [tsTable, tsView] + end + else if AnsiSameText(AuxParamNames[i], 'Schemas') then + fMSSQLSchemaEnabled := AuxParams['Schemas'] = '1' + else begin + Params.Add(AuxParamNames[i] + '=' + AuxParams[AuxParamNames[i]]); + end; + end; + LoginPrompt := FALSE; + if fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}] then fSqlDialect := StrToIntDef(AuxParams[SQLDIALECT_KEY],3); + end; + end; +end; + +function TDAEDBXConnection.DoBeginTransaction: integer; +begin + result := -1; + + // TODO: allow more flexibility here... + fConnection.fTransDesc.TransactionID := 1; + fConnection.fTransDesc.IsolationLevel := xilREADCOMMITTED; +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.StartTransaction(fConnection.fTransDesc); +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} +end; + +procedure TDAEDBXConnection.DoCommitTransaction; +begin +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.Commit(fConnection.fTransDesc); +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} +end; + +function TDAEDBXConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TDBXConnection.Create(nil); + fConnection.SQLConnection.LoginPrompt := FALSE; + result := fConnection; +end; + +function TDAEDBXConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEDBXQuery; +end; + +function TDAEDBXConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEDBXStoredProcedure; +end; + +procedure TDAEDBXConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + inherited DoGetStoredProcedureNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, MSSQLSchemaEnabled); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY],GetMySQLVersion); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} + fConnection.fSQLConnection.GetProcedureNames(List.Strings); +{$IFDEF DELPHI10UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} + end; +end; + +procedure TDAEDBXConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + dbx_MySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName,GetDatasetClass.Create(Self),Params,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY]); + dbx_MSSQL: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName,GetDatasetClass.Create(Self),Params); + else + inherited; + end; +end; + +procedure TDAEDBXConnection.DoGetTableNames(out List: IROStrings); +begin + inherited DoGetTableNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, MSSQLSchemaEnabled); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY],GetMySQLVersion); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + fConnection.fSQLConnection.GetTableNames(List.Strings); + end; +end; + +procedure TDAEDBXConnection.DoRollbackTransaction; +begin +{$WARNINGS OFF} + fConnection.fSQLConnection.Rollback(fConnection.fTransDesc); +{$WARNINGS ON} +end; + +function TDAEDBXConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fSQLConnection.InTransaction +end; + +function TDAEDBXConnection.GetDriverName: string; +begin + result := fDriverName +end; + +function TDAEDBXConnection.GetDriverType: TDADBXDriverType; +begin + result := fDriverType +end; + +function TDAEDBXConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + dbx_MSSQL: result := MSSQL_CreateMacroProcessor; + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: result := IB_CreateMacroProcessor; + dbx_Oracle: result := Oracle_CreateMacroProcessor; + else + result := inherited CreateMacroProcessor; + end; +end; + +function TDAEDBXConnection.GetPassword: string; +begin + Result := fConnection.SQLConnection.Params.Values[szPASSWORD]; +end; + +function TDAEDBXConnection.GetUserID: string; +begin + Result := fConnection.SQLConnection.Params.Values[szUSERNAME]; +end; + +procedure TDAEDBXConnection.SetPassword(const Value: string); +begin + fConnection.SQLConnection.Params.Values[szPASSWORD] := Value; +end; + +procedure TDAEDBXConnection.SetUserID(const Value: string); +begin + fConnection.SQLConnection.Params.Values[szUSERNAME] := Value; +end; + +function TDAEDBXConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + case fDriverType of + dbx_MSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result := IB_GetSPSelectSyntax(HasArguments); + dbx_Oracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + else + Result := inherited GetSPSelectSyntax(HasArguments); + end; +end; + +function TDAEDBXConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: result := IB_GetFileExtensions; + else + result := TROStrings.Create; + end; +end; + +function TDAEDBXConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +function TDAEDBXConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + + {$IFDEF DELPHI9UP} + if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [dbx_ASA, dbx_ASE]) then Exit; + end + else + {$ENDIF} + if IsEqualGUID(IID, IDADB2Connection) then begin + if not (fDriverType in [dbx_DB2]) then Exit; + end + else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if not (fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}]) then Exit; + end + else if IsEqualGUID(IID, IDAADOConnection) then begin + if not (fDriverType in [dbx_MSSQL]) then Exit; + end + else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if not (fDriverType in [dbx_MySQL]) then Exit; + end + else if IsEqualGUID(IID, IDAOracleConnection) then begin + if not (fDriverType in [dbx_Oracle]) then Exit; + end + else if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF},dbx_Oracle]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}]) then Exit; + end + else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}]) then Exit; + end + else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if not (fDriverType in [dbx_MSSQL, dbx_Oracle, dbx_MySQL {$IFDEF DELPHI9UP}, dbx_ASA, dbx_ASE{$ENDIF DELPHI9UP}]) then Exit; + end; + + Result := inherited QueryInterface(IID, Obj); +end; + +function TDAEDBXConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + dbx_MSSQL: Result:=MSSQL_GetDatabaseNames(Self); + dbx_MySQL: Result:=MYSQL_GetDatabaseNames(Self); + else + Result := NewROStrings; + end; +end; + +procedure TDAEDBXConnection.DoGetViewNames(out List: IROStrings); +begin + inherited DoGetViewNames(List); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, MSSQLSchemaEnabled); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dbx_MySQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY],GetMySQLVersion); + dbx_Oracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + // + end; +end; + +procedure TDAEDBXConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited DoGetForeignKeys(ForeignKeys); + case fDriverType of + dbx_MSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, MSSQLSchemaEnabled); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dbx_MySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY],GetMySQLVersion); + dbx_ORACLE: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + else + // + end; +end; + +procedure TDAEDBXConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + case fDriverType of + dbx_MSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dbx_MySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields,fConnection.SQLConnection.Params.Values[DATABASENAME_KEY],GetMySQLVersion); + dbx_Oracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + end; +end; + +function TDAEDBXConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +begin + case fDriverType of + dbx_MSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Oracle: Result := Oracle_DoGetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + dbx_MySQL: Result := MySQL_GetLastAutoInc(GeneratorName,GetDatasetClass.Create(Self)); + else + Result := inherited DoGetLastAutoInc(GeneratorName); + end; +end; + +function TDAEDBXConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +function TDAEDBXConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier); + if not Result then + case fDriverType of + dbx_MSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result := IB_IdentifierNeedsQuoting(iIdentifier, fSqlDialect); + dbx_MySQL: Result := MYSQL_IdentifierNeedsQuoting(iIdentifier); + dbx_ORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + dbx_DB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + {$IFDEF DELPHI9UP} + dbx_ASA, dbx_ASE: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + {$ENDIF DELPHI9UP} + else + Result:= SQL92_IdentifierNeedsQuoting(iIdentifier); + end; +end; + +function TDAEDBXConnection.GetQuoteChars: TDAQuoteCharArray; +begin + case fDriverType of + dbx_Oracle: Result:=Oracle_GetQuoteChars; + else + Result:= inherited GetQuoteChars; + end; +end; + +function TDAEDBXConnection.GetMySQLVersion: integer; +begin + if FMySQLVersion = -1 then FMySQLVersion := MYSQL_GetVersion(GetDatasetClass.Create(Self)); + Result := FMySQLVersion; +end; + +{ TDAEDBXDriver } + +function TDAEDBXDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEDBXDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEDBXConnection; +end; + +function TDAEDBXDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case DBXDriverIdToDBXDriverType(AuxDriver) of + dbx_MSSQL: Result:=MSSQL_DriverType; + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result:=IB_DriverType; + dbx_Oracle: Result:=Oracle_DriverType; + dbx_DB2: Result:=DB2_DriverType; + dbx_MySQL: Result:=MySQL_DriverType; + dbx_Informix: Result:=Informix_DriverType; + {$IFDEF DELPHI9UP} + dbx_ASA,dbx_ASE : Result:=ASA_DriverType; + {$ENDIF DELPHI9UP} + else + Result := inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEDBXDriver.GetDescription: string; +begin + result := 'Borland DBXExpress Driver'; +end; + +function TDAEDBXDriver.GetDriverID: string; +begin + result := 'DBX'; +end; + +procedure TDAEDBXDriver.GetAuxDrivers(out List: IROStrings); +var + i: Integer; + lDriversIni: string; + x: TDADBXDriverType; +begin + List := NewROStrings; + + lDriversIni := GetDriverRegistryFile(false); + if FileExists(lDriversIni) then begin + with TMemIniFile.Create(lDriversIni) do try + ReadSections(List.Strings); + for i := List.Count - 1 downto 0 do begin + if not ValueExists(List[i], 'LibraryName') then List.Delete(i); + end; { for } + finally + Free(); + end; + end + else begin + for x := Low(TDADBXDriverType) to High(TDADBXDriverType) do + if (x <> dbx_Unknown) {// Redundant but safe if I change the enum later...} then + List.Add(DBXDrivers[x]) + end; + List.Sorted:=True; +end; + +procedure TDAEDBXDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('TableScope=Synonyms'); + List.Add('DriverName='); + List.Add('GetDriverFunc='); + List.Add('LibraryName='); + case DBXDriverIdToDBXDriverType(AuxDriver) of + dbx_MSSQL: List.Add('Schemas=(0,1)'); + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: List.Add('Interbase TransIsolation=(ReadCommited,RepeatableRead)'); + end; +end; + +function TDAEDBXDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + case DBXDriverIdToDBXDriverType(Provider) of + dbx_MSSQL: Result := 'Schemas=0;'; + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result:='Interbase TransIsolation=ReadCommited;'; + end; +end; + +{ TDAEDBXQuery } + +procedure TDAEDBXQuery.ClearParams; +begin + inherited; + TSQLQuery(Dataset).Params.Clear; +end; + +function TDAEDBXQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TSQLQuery.Create(nil); + + //TSQLQuery(result).rea + //TSQLQuery(result).CursorLocation := clUseClient; + //TSQLQuery(result).CursorType := ctOpenForwardOnly; + TSQLQuery(result).SQLConnection := TDAEDBXConnection(aConnection).fConnection.fSQLConnection; +end; + +{$IFNDEF DELPHI12UP} +function GetBlobValue(const val: Variant): string; +var + lsize: integer; + p: Pointer; +begin + if VarType(val) = 8209 then + begin + lSize := VarArrayHighBound(val, 1) - VarArrayLowBound(val, 1) + 1; + p := VarArrayLock(val); + try + setlength(REsult, lSize); + move(p^, Result[1], lSize); + finally + VarArrayUnlock(val); + end; + end else if vartype(val) = varEmpty then + result := '' + else + result := val; +end; +{$ELSE} +function GetBlobValue(const val: Variant): TBytes; +var + Data: UnicodeString; + lData: Ansistring; + Len: Integer; + lsize: integer; + p: Pointer; +begin + if VarType(val) = 8209 then begin + lSize := VarArrayHighBound(val, 1) - VarArrayLowBound(val, 1) + 1; + p := VarArrayLock(val); + try + setlength(Result, lSize); + move(p^, Result[0], lSize); + finally + VarArrayUnlock(val); + end; + end + else if vartype(val) = varEmpty then + Result := Null + else if (VarType(Val) = varOleStr) or (VarType(Val) = varUString) then begin + Data := VarToStr(Val); + Len := Length(Data); + SetLength(Result, Len * SizeOf(Char)); + Move(Pointer(Data)^, Pointer(Result)^, Len * SizeOf(Char)); + end + else if VarType(Val) = varString then begin + lData := PAnsiChar(TVarData(Val).vString); + Len := Length(lData); + SetLength(Result, Len); + Move(Pointer(lData)^, Pointer(Result)^, Len); + end + else + Result := val; +end; +{$ENDIF} + +function TDAEDBXQuery.DoExecute: integer; +var + i: Integer; + refParams: TParams; + dapar: TDAParam; + lDriverName: string; +begin + if Assigned(DataSet) and Assigned(TSQLQuery(DataSet).SQLConnection) and + Assigned(TSQLQuery(DataSet).Params) then begin + lDriverName := TSQLQuery(DataSet).SQLConnection.DriverName; + refParams := TSQLQuery(DataSet).Params; + case DBXDriverIdToDBXDriverType(lDriverName) of + dbx_Oracle: begin + for i := 0 to refParams.Count - 1 do begin + case VarType(refParams[i].Value) of + varInteger, + varSmallInt, + varShortInt, + varWord, + varByte, + varLongWord: + refParams[i].AsString := VarToStr(refParams[i].Value); + varSingle, + varDouble, + varCurrency: + refParams[i].AsBCD := StrToCurr(VarToStr(refParams[i].Value)); + varDate: + refParams[i].AsSQLTimeStamp := DateTimeToSQLTimeStamp(VarToDateTime(refParams[i].Value)); + end; + end; + end; + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: begin + for i := 0 to refParams.Count - 1 do begin + dapar := GetParams.FindParam(refParams[i].Name); + if (dapar <> nil) then begin + if dapar.DataType = datBlob then begin + refParams[i].AsBlob := GetBlobValue(dapar.AsVariant); + continue; + end; + if dapar.DataType = datMemo then begin + refParams[i].AsMemo := dapar.AsVariant; + continue; + end; + end; + case VarType(refParams[i].Value) of + varDate: + refParams[i].AsSQLTimeStamp := DateTimeToSQLTimeStamp(VarToDateTime(refParams[i].Value)); + end; + end; + end; + dbx_MySQL: begin + if UpperCase(TSQLQuery(DataSet).SQLConnection.LibraryName) = 'DBXOPENMYSQL50.DLL' then + for i := 0 to refParams.Count - 1 do begin + case VarType(refParams[i].Value) of + varDate: + refParams[i].AsSQLTimeStamp := DateTimeToSQLTimeStamp(VarToDateTime(refParams[i].Value)); + end; + end; + end + else ; + end; + end; + + Result := TSQLQuery(Dataset).ExecSQL; +end; + +function TDAEDBXQuery.DoGetSQL: string; +begin + result := TSQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEDBXQuery.DoPrepare(Value: boolean); +begin + TSQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEDBXQuery.DoSetSQL(const Value: string); +begin + TSQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEDBXQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TSQLQuery(Dataset).Params); +end; + +function TDAEDBXQuery.IsNeedToFixFMTBCDIssue: Boolean; +var + i: integer; +begin + Result:=False; + For i:=0 to TSQLQuery(Dataset).FieldCount-1 do begin + Result:= TSQLQuery(Dataset).Fields[i].DataType = ftFMTBcd; + if Result then Break; + end; +end; + +procedure TDAEDBXQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + p: TParams; +begin + SetParamValuesStd(AParams, TSQLQuery(Dataset).Params); + p := TSQLQuery(Dataset).Params; + for I := 0 to p.Count - 1 do + if p[i].DataType = ftLargeint then + p[i].DataType := ftFMTBcd; +end; + +{ TDAEDBXStoredProcedure } + +function TDAEDBXStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TSQLStoredProc.Create(nil); + TSQLStoredProc(result).SQLConnection := TDAEDBXConnection(aConnection).fConnection.fSQLConnection; +end; + +procedure TDAEDBXStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TSQLStoredProc(Dataset).Params); +end; + +procedure TDAEDBXStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TSQLStoredProc(Dataset).Params); +end; + +function TDAEDBXStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +function TDAEDBXStoredProcedure.GetStoredProcedureName: string; +begin + result := TSQLStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEDBXStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TSQLStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEDBXStoredProcedure.RefreshParams; +begin + TSQLStoredProc(Dataset).Prepared := True; + RefreshParamsStd(TSQLStoredProc(Dataset).Params) +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEDBXStoredProcedure.DoExecute: integer; +begin + Result := TSQLStoredProc(Dataset).ExecProc; +end; + +function TDAEDBXConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + case fDriverType of + dbx_Interbase{$IFDEF DELPHI14UP},dbx_Firebird{$ENDIF}: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dbx_Oracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + else + result := -1; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr new file mode 100644 index 0000000..3e5d914 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.dcr differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas new file mode 100644 index 0000000..52fdd6c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDADOADriver.pas @@ -0,0 +1,692 @@ +unit uDADOADriver; + +// if using DOA 4.0 or higher activate this define +{$DEFINE DOA4} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_DOADriver_Glyphs.res} + +interface + +uses + DB, + Classes, + uROClasses, + uDAEngine, + uDAInterfaces, + uDAOracleInterfaces, + uDAUtils, + Oracle, + OracleData; + +type + + TDADOADriver = class(TDADriverReference) + end; + + TDAEDOADriver = class(TDAOracleDriver) + private + fTraceCallBack: TDALogTraceEvent; // UKO 26.09.2003 + protected + procedure DoSetTraceOptions(TraceActive: Boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetConnectionClass: TDAEConnectionClass; override; + function GetDefaultCustomParameters: string; override; + function GetDescription: string; override; + function GetDriverID: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + TDAEDOAConnection = class(TDAOracleConnection) + private + function GetOracleSession: TOracleSession; + protected + function CreateCompatibleQuery: IDADataset; override; + function CreateCustomConnection: TCustomConnection; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + function DoGetInTransaction: boolean; override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function GetDataSetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + property OracleSession: TOracleSession read GetOracleSession; + end; + + TDAEDOAQuery = class(TDAEDataSet, IOracleDataSet) + private + function LockModeDaToDoa(LockMode: TDAOracleLockMode): TLockingModeOptions; + function LockModeDoaToDa(LockMode: TLockingModeOptions): TDAOracleLockMode; + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoPrepare(Value: Boolean); override; + procedure DoSetSQL(const Value: string); override; + function GetLockMode: TDAOracleLockMode; + function GetOptions: TDAOracleOptions; + procedure SetLockMode(Value: TDAOracleLockMode); + procedure SetOptions(Value: TDAOracleOptions); + procedure SetParamValues(Params: TDAParamCollection); override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override; safecall; + end; + + TDAEDOAStoredProcedure = class(TDAEStoredProcedure) + private + fProcedureName: string; + FConnection: TDAEDOAConnection; + procedure DoGetParams; + function DoGetParamsResult: TDAParam; + procedure DoSetSource; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function Execute: Integer; override; + function GetStoredProcedureName: string; override; + procedure RefreshParams; override; + procedure SetParamValues(Params: TDAParamCollection); override; safecall; + procedure GetParamValues(Params: TDAParamCollection); override; safecall; + procedure SetStoredProcedureName(const Name: string); override; + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, + uDARes; + +type + TDADOAInternalConnection = class(TCustomConnection) + private + fOracleSession: TOracleSession; + protected + procedure DoConnect; override; + procedure DoDisconnect; override; + function GetConnected: Boolean; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Session: TOracleSession read fOracleSession; + end; + + TOraPath = record + aScheme: string; + aPackage: string; + aObject: string; + end; + +var + _Driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDADOADriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEDOADriver.Create(nil); + result := _driver; +end; + + +function HandleSqlName(AParamName: string; AParamType: TDAParamType): string; +begin + Result := AParamName; + if AParamType = daptResult then Result := 'result'; +end; + +function DataTypeDaToOra(AType: TDADataType): Integer; +const + Error = 'INTERNAL: not supported by DOA'; +begin + Result := otString; + case AType of + datUnknown: raise Exception.Create(Error); + datGuid, datString: Result := otString; + datDateTime: Result := otDate; + datSingleFloat, datFloat, datCurrency: Result := otFloat; + datByte, + datShortInt, + datWord, + datCardinal, + datAutoInc, + datInteger, + datLargeInt: Result := otInteger; + datBoolean: Result := otInteger; // needs a special handling + datMemo: Result := otClob; + datBlob: Result := otBlob; + datWideString: Result := otVarchar2; + datXml, + datWideMemo : Result := otNCLOB; + datLargeAutoInc, datLargeUInt,datDecimal : Result := otNumber; + end; +end; + +procedure SetDataSetParams(Params: TDAParamCollection; DataSet: TDataSet); +var + I: Integer; + Ds: TOracleDataSet; + ParamIndex, OraType: Integer; + Name: string; +begin + Ds := TOracleDataSet(DataSet); + if Ds.Variables.Count > Params.Count then + for I := Ds.VariableCount - 1 downto 0 do + if Params.ParamByName(Ds.VariableName(I)) = nil then + Ds.DeleteVariable(Ds.VariableName(I)); + + for I := 0 to Params.Count - 1 do + begin + ParamIndex := Ds.VariableIndex(Params[I].Name); + Name := HandleSqlName(Params[I].Name, Params[I].ParamType); + OraType := DataTypeDaToOra(Params[I].DataType); + // New Param + if ParamIndex = -1 then + Ds.DeclareVariable(Name, OraType); + // Changed Param + if (ParamIndex > -1) and (Ds.VariableType(ParamIndex) <> DataTypeDaToOra( + Params[I].DataType)) then + begin + Ds.DeleteVariable(Params[I].Name); + Ds.DeclareVariable(Name, OraType); + end; + // Set value + if Params[I].DataType = datBoolean then + Ds.SetVariable(Name, Integer(Params[I].Value)) + else + Ds.SetVariable(Name, Params[I].Value); + end; +end; + +{ INTERNAL CLASSES *********************************************************** } +{ +*************************** TDADOAInternalConnection *************************** +} + +constructor TDADOAInternalConnection.Create(AOwner: TComponent); +begin + inherited; + fOracleSession := TOracleSession.Create(nil); +end; + +destructor TDADOAInternalConnection.Destroy; +begin + fOracleSession.Free; + inherited; +end; + +procedure TDADOAInternalConnection.DoConnect; +begin + fOracleSession.LogOn; +end; + +procedure TDADOAInternalConnection.DoDisconnect; +begin + fOracleSession.LogOff; +end; + +function TDADOAInternalConnection.GetConnected: Boolean; +begin + Result := fOracleSession.Connected; +end; + +{ PUBLIC CLASSES ************************************************************* } +{ +******************************** TDAEDOADriver ********************************* +} + +// ----------------------------------------------------------------------------- +// TDAEDOADriver.DoSetTraceOptions +// +// Tracing can only be enabled when DOA Version 4.0 or higher is used. +// UKO 26.09.2003 21:14:47 +// + +procedure TDAEDOADriver.DoSetTraceOptions(TraceActive: Boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then + begin + fTraceCallBack := Callback; + + {$IFDEF DOA4} + EnableMonitor; + {$ENDIF} + end + else + begin + fTraceCallBack := nil; + + {$IFDEF DOA4} + DisableMonitor; + {$ENDIF} + end; + +end; + +procedure TDAEDOADriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; +end; + +// ----------------------------------------------------------------------------- +// TDAEDOADriver.GetAvailableDriverOptions +// +// Only Database, Login and Custom needed. doServerName is not needed ! +// +// UKO 25.09.2003 17:51:31 +// + +function TDAEDOADriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doDatabaseName, doLogin{, doCustom}]; +end; + +function TDAEDOADriver.GetConnectionClass: TDAEConnectionClass; +begin + Result := TDAEDOAConnection; +end; + +function TDAEDOADriver.GetDefaultCustomParameters: string; +begin + Result:=''; +end; + +function TDAEDOADriver.GetDescription: string; +begin + Result := 'Direct Oracle Access Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF};; +end; + +function TDAEDOADriver.GetDriverID: string; +begin + Result := 'DOA'; +end; + +{ +****************************** TDAEDOAConnection ******************************* +} + +function TDAEDOAConnection.CreateCompatibleQuery: IDADataset; +begin + Result := inherited CreateCompatibleQuery; + OracleSession.LogOn; +end; + +function TDAEDOAConnection.CreateCustomConnection: TCustomConnection; +begin + Result := TDADOAInternalConnection.Create(nil); +end; + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.CreateMacroProcessor +// +// UKO 25.09.2003 18:43:06 +// + + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.DoApplyConnectionString +// +// Use Database instead of Server. Server has no meaning in Oracle +// UKO 25.09.2003 17:54:25 +// + +procedure TDAEDOAConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + with aConnStrParser do begin + OracleSession.LogonDatabase := Database; + OracleSession.LogonUsername := UpperCase(UserID); + OracleSession.LogonPassword := Password; + end; +end; + +function TDAEDOAConnection.DoBeginTransaction: Integer; +begin + // DOA doesn't have any special transaction starting routines + Result := 0; +end; + +procedure TDAEDOAConnection.DoCommitTransaction; +begin + OracleSession.Commit; +end; + +function TDAEDOAConnection.DoGetInTransaction: boolean; +begin + Result := OracleSession.InTransaction; +end; + +procedure TDAEDOAConnection.DoRollbackTransaction; +begin + OracleSession.Rollback; +end; + +function TDAEDOAConnection.GetDataSetClass: TDAEDatasetClass; +begin + Result := TDAEDOAQuery; +end; + +function TDAEDOAConnection.GetOracleSession: TOracleSession; +begin + Result := TDADOAInternalConnection(inherited ConnectionObject).Session; +end; + + + +function TDAEDOAConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEDOAStoredProcedure; +end; + +// ----------------------------------------------------------------------------- +// TDAEDOAConnection.IdentifierNeedsQuoting +// +// Default behavior not enough, as '$' and '.' are also a valid character which doesn´t need quoting +// +// UKO 25.09.2003 11:48:13 +// + +{ +********************************* TDAEDOAQuery ********************************* +} + +procedure TDAEDOAQuery.ClearParams; +begin + inherited; + TOracleDataSet(Dataset).ClearVariables; +end; + +function TDAEDOAQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TOracleDataSet.Create(nil); + TOracleDataSet(Result).ReadOnly := True; + TOracleDataSet(Result).Session := TDAEDOAConnection(aConnection).OracleSession; +end; + +function TDAEDOAQuery.DoExecute: Integer; +begin + TOracleDataSet(DataSet).ExecSQL; + Result := -1; +end; + +function TDAEDOAQuery.DoGetSQL: string; +begin + Result := TOracleDataSet(Dataset).SQL.Text; +end; + +procedure TDAEDOAQuery.DoPrepare(Value: Boolean); +begin + TOracleDataSet(DataSet).Optimize := Value; +end; + +procedure TDAEDOAQuery.DoSetSQL(const Value: string); +begin + TOracleDataSet(Dataset).SQL.Text := Value; +end; + +function TDAEDOAQuery.GetLockMode: TDAOracleLockMode; +begin + Result := LockModeDoaToDa(TOracleDataSet(Dataset).LockingMode) +end; + +function TDAEDOAQuery.GetOptions: TDAOracleOptions; +begin + // Can't be implemented +end; + +procedure TDAEDOAQuery.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + ds: TOracleDataSet; +begin + ds := TOracleDataSet(Dataset); + if not Assigned(ds.Variables) then Exit; + + for i := 0 to (ds.VariableCount - 1) do begin + par := Params.ParamByName(copy(ds.VariableName(i),2,MaxInt)); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then + par.Value := ds.GetVariable(i); + end; +end; + +function TDAEDOAQuery.LockModeDaToDoa(LockMode: TDAOracleLockMode): + TLockingModeOptions; +begin + Result := lmNone; + case LockMode of + olmLockImmediate: Result := lmLockImmediate; + olmLockDelayed: Result := lmLockDelayed; + end; +end; + +function TDAEDOAQuery.LockModeDoaToDa(LockMode: TLockingModeOptions): + TDAOracleLockMode; +begin + Result := olmNone; + case LockMode of + lmLockImmediate: Result := olmLockImmediate; + lmLockDelayed: Result := olmLockDelayed; + end; +end; + +procedure TDAEDOAQuery.SetLockMode(Value: TDAOracleLockMode); +begin + TOracleDataSet(Dataset).LockingMode := LockModeDaToDoa(Value); +end; + +procedure TDAEDOAQuery.SetOptions(Value: TDAOracleOptions); +begin + // Can't be implemented +end; + +procedure TDAEDOAQuery.SetParamValues(Params: TDAParamCollection); +begin + SetDataSetParams(Params, DataSet); +end; + +{ +**************************** TDAEDOAStoredProcedure **************************** +} + +function TDAEDOAStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TOracleDataSet.Create(nil); + FConnection := TDAEDOAConnection(aConnection); + TOracleDataSet(Result).Session := TDAEDOAConnection(aConnection).OracleSession; +end; + +procedure TDAEDOAStoredProcedure.DoGetParams; +var + Ds: TOracleDataSet; + I: Integer; + Params: TDAParamCollection; +begin + Params := GetParams; + Ds := TOracleDataSet(DataSet); + for I := 0 to Params.Count - 1 do + if Params[I].ParamType in [daptOutput, daptInputOutput, daptResult] then + Params[I].Value := Ds.GetVariable(HandleSqlName(Params[I].Name, Params[I].ParamType)); +end; + +function TDAEDOAStoredProcedure.DoGetParamsResult: TDAParam; +var + I: Integer; + Params: TDAParamCollection; +begin + Result := nil; + Params := GetParams; + for I := 0 to Params.Count - 1 do + if Params[I].ParamType = daptResult then + begin + Result := Params[I]; + Exit; + end; +end; + +procedure TDAEDOAStoredProcedure.DoSetSource; +var + Ds: TOracleDataSet; + I: Integer; + Params: TDaParamCollection; + ParamResult: TDAParam; + ParamsExist: Boolean; + +const + SQLHeader = 'declare' + sLineBreak + + ' result boolean;' + sLineBreak + + 'begin' + sLineBreak; + SQLHandleBoolean = ':result := sys.diutil.bool_to_int(function_result);'; + SQLFooter = 'end;'; + + function CaseOfParam(const AParamResult: TDAParam): Integer; + begin + Result := 0; + if AParamResult <> nil then + if AParamResult.DataType = datBoolean then + Result := 1 + else + Result := 2; + end; + + function ConvertParam(const AName: string; const ADataType: TDADataType): + string; + begin + if ADataType = datBoolean then + begin + Result := Format('%s => sys.diutil.int_to_bool(:%s), ', [AName, AName]); + Exit; + end; + Result := Format('%s => :%s, ', [AName, AName]); + end; + + function TrimSqlParams(const SQL: string): string; + var + S: string; + begin + S := SQL; + Delete(S, Length(S) - 3, 4); + Result := S; + end; + +begin + Ds := TOracleDataSet(DataSet); + Params := GetParams; + ParamResult := DoGetParamsResult; + // PL/SQL Block - header + stored proc name + Ds.SQL.Text := SQLHeader; + case CaseOfParam(ParamResult) of // 0 = no result, 1 = boolean, 2 = misc + 0: Ds.SQL.Add(Format(' %s(', [fProcedureName])); + 1: Ds.SQL.Add(Format(' result := %s(', [fProcedureName])); + 2: Ds.SQL.Add(Format(' :result := %s(', [fProcedureName])); + end; + // PL/SQL Block - params if any; + ParamsExist := False; + for I := 0 to Params.Count - 1 do + if (Params.Items[I] <> ParamResult) then + begin + ParamsExist := True; + Ds.SQL.Add(ConvertParam(Params[I].Name, Params[I].DataType)); + end; + // PL/SQL Block - params - remove the last half-stop + if ParamsExist then + Ds.SQL.Text := TrimSQLParams(Ds.SQL.Text); + Ds.SQL.Add(');'); + // PL/SQL Block - special treatment for functions with boolean results + if ParamResult.DataType = datBoolean then + Ds.SQL.Add(SQLHandleBoolean); + Ds.SQL.Add(SQLFooter); +end; + +function TDAEDOAStoredProcedure.Execute: Integer; +var + Params: TDAParamCollection; +begin + Params := GetParams; + SetDataSetParams(Params, DataSet); + DoSetSource; + TOracleDataSet(DataSet).ExecSQL; + DoGetParams; + Result := -1; +end; + +function TDAEDOAStoredProcedure.GetStoredProcedureName: string; +begin + Result := fProcedureName; +end; + +procedure TDAEDOAStoredProcedure.RefreshParams; +var + OraParams: TDAParamCollection; +begin + Oracle_DoGetStoredProcedureParams(fProcedureName, FConnection.CreateCompatibleQuery,OraParams); + GetParams.AssignParamCollection(OraParams); +end; + +procedure TDAEDOAStoredProcedure.GetParamValues(Params: TDAParamCollection); +var + i: integer; + par: TDAParam; + ds: TOracleDataSet; +begin + ds := TOracleDataSet(Dataset); + if not Assigned(ds.Variables) then Exit; + + for i := 0 to (ds.VariableCount - 1) do begin + par := Params.ParamByName(ds.VariableName(i)); + if par.ParamType in [daptOutput, daptInputOutput, daptResult] then + par.Value := ds.GetVariable(i); + end; +end; + +procedure TDAEDOAStoredProcedure.SetParamValues(Params: TDAParamCollection); +begin + SetDataSetParams(Params, DataSet); +end; + +procedure TDAEDOAStoredProcedure.SetStoredProcedureName(const Name: string); +begin + fProcedureName := Name; +end; + +exports + GetDriverObject name func_GetDriverObject; + +initialization + _Driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNil(_Driver); + +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas new file mode 100644 index 0000000..d2752b0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAElevateDBDriver.pas @@ -0,0 +1,1496 @@ +unit uDAElevateDBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_ElevateDBDriver_Glyphs.res} + +interface +uses Classes, DB, + uDAElevateDBInterfaces, edbType, edbcomps, + uROClasses, uDAEngine, uDAInterfaces, uDAInterfacesEx, uDAUtils; + +type { TDAElevateDBDriver } + TDAElevateDBDriver = class(TDADriverReference) + end; + + { TDAEElevateDBDriver } + TDAEElevateDBDriver = class(uDAElevateDBInterfaces.TDAElevateDBDriver ,IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + //procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + //procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + + { IDADriver } + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + // function GetMajVersion: byte; override; safecall; + // function GetMinVersion: byte; override; safecall; + procedure GetAuxDrivers(out List: IROStrings); override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; safecall; + // procedure Initialize; override; safecall; + // procedure Finalize; override; safecall; + // function GetDefaultCustomParameters: string; override; safecall; + + { IDADriver40 } + function GetProviderDefaultCustomParameters(Provider: string): string; safecall; + public + end; + + IElevateDBEngineProperties = interface + function GetBackupExtension: TEDBString; + function GetCatalogExtension: TEDBString; + function GetCatalogName: TEDBString; + function GetConfigExtension: TEDBString; + function GetConfigName: TEDBString; + function GetConfigPath: TEDBString; + function GetEncryptionPassword: TEDBString; + function GetEngineType: TEDBEngineType; + function GetLargeFileSupport: Boolean; + function GetLicensedSessions: Integer; + function GetLockExtension: TEDBString; + function GetLogCategories: TEDBLogCategories; + function GetLogExtension: TEDBString; + function GetMaxLogFileSize: Integer; + function GetServerAddress: TEDBString; + function GetServerAuthorizedAddresses: TEDBStrings; + function GetServerBlockedAddresses: TEDBStrings; + function GetServerDeadSessionExpiration: Integer; + function GetServerDeadSessionInterval: Integer; + function GetServerDescription: TEDBString; + function GetServerEncryptedOnly: Boolean; + function GetServerJobCategory: TEDBString; + function GetServerMaxDeadSessions: Integer; + function GetServerName: TEDBString; + function GetServerPort: Integer; + function GetServerRunJobs: Boolean; + function GetServerSessionTimeout: Integer; + function GetServerThreadCacheSize: Integer; + function GetSignature: TEDBString; + function GetTableBlobExtension: TEDBString; + function GetTableExtension: TEDBString; + function GetTableIndexExtension: TEDBString; + function GetTempTablesPathProperty: TEDBString; + procedure SetBackupExtension(const Value: TEDBString); + procedure SetCatalogExtension(const Value: TEDBString); + procedure SetCatalogName(const Value: TEDBString); + procedure SetConfigExtension(const Value: TEDBString); + procedure SetConfigName(const Value: TEDBString); + procedure SetConfigPath(const Value: TEDBString); + procedure SetEncryptionPassword(const Value: TEDBString); + procedure SetEngineType(const Value: TEDBEngineType); + procedure SetLargeFileSupport(const Value: Boolean); + procedure SetLicensedSessions(const Value: Integer); + procedure SetLockExtension(const Value: TEDBString); + procedure SetLogCategories(const Value: TEDBLogCategories); + procedure SetLogExtension(const Value: TEDBString); + procedure SetMaxLogFileSize(const Value: Integer); + procedure SetServerAddress(const Value: TEDBString); + procedure SetServerAuthorizedAddresses(const Value: TEDBStrings); + procedure SetServerBlockedAddresses(const Value: TEDBStrings); + procedure SetServerDeadSessionExpiration(const Value: Integer); + procedure SetServerDeadSessionInterval(const Value: Integer); + procedure SetServerDescription(const Value: TEDBString); + procedure SetServerEncryptedOnly(const Value: Boolean); + procedure SetServerJobCategory(const Value: TEDBString); + procedure SetServerMaxDeadSessions(const Value: Integer); + procedure SetServerName(const Value: TEDBString); + procedure SetServerPort(const Value: Integer); + procedure SetServerRunJobs(const Value: Boolean); + procedure SetServerSessionTimeout(const Value: Integer); + procedure SetServerThreadCacheSize(const Value: Integer); + procedure SetSignature(const Value: TEDBString); + procedure SetTableBlobExtension(const Value: TEDBString); + procedure SetTableExtension(const Value: TEDBString); + procedure SetTableIndexExtension(const Value: TEDBString); + procedure SetTempTablesPath(const Value: TEDBString); + property EngineType: TEDBEngineType read GetEngineType write SetEngineType; + property Signature: TEDBString read GetSignature write SetSignature; + property EncryptionPassword: TEDBString read GetEncryptionPassword write SetEncryptionPassword; + property LargeFileSupport: Boolean read GetLargeFileSupport write SetLargeFileSupport; + property LicensedSessions: Integer read GetLicensedSessions write SetLicensedSessions; + property ConfigPath: TEDBString read GetConfigPath write SetConfigPath; + property ConfigName: TEDBString read GetConfigName write SetConfigName; + property ConfigExtension: TEDBString read GetConfigExtension write SetConfigExtension; + property LockExtension: TEDBString read GetLockExtension write SetLockExtension; + property LogExtension: TEDBString read GetLogExtension write SetLogExtension; + property MaxLogFileSize: Integer read GetMaxLogFileSize write SetMaxLogFileSize; + property LogCategories: TEDBLogCategories read GetLogCategories write SetLogCategories; + property CatalogName: TEDBString read GetCatalogName write SetCatalogName; + property CatalogExtension: TEDBString read GetCatalogExtension write SetCatalogExtension; + property BackupExtension: TEDBString read GetBackupExtension write SetBackupExtension; + property TableExtension: TEDBString read GetTableExtension write SetTableExtension; + property TableIndexExtension: TEDBString read GetTableIndexExtension write SetTableIndexExtension; + property TableBlobExtension: TEDBString read GetTableBlobExtension write SetTableBlobExtension; + property TempTablesPath: TEDBString read GetTempTablesPathProperty write SetTempTablesPath; + property ServerName: TEDBString read GetServerName write SetServerName; + property ServerDescription: TEDBString read GetServerDescription write SetServerDescription; + property ServerAddress: TEDBString read GetServerAddress write SetServerAddress; + property ServerPort: Integer read GetServerPort write SetServerPort; + property ServerThreadCacheSize: Integer read GetServerThreadCacheSize write SetServerThreadCacheSize; + property ServerEncryptedOnly: Boolean read GetServerEncryptedOnly write SetServerEncryptedOnly; + property ServerSessionTimeout: Integer read GetServerSessionTimeout write SetServerSessionTimeout; + property ServerDeadSessionInterval: Integer read GetServerDeadSessionInterval write SetServerDeadSessionInterval; + property ServerDeadSessionExpiration: Integer read GetServerDeadSessionExpiration write SetServerDeadSessionExpiration; + property ServerMaxDeadSessions: Integer read GetServerMaxDeadSessions write SetServerMaxDeadSessions; + property ServerAuthorizedAddresses: TEDBStrings read GetServerAuthorizedAddresses write SetServerAuthorizedAddresses; + property ServerBlockedAddresses: TEDBStrings read GetServerBlockedAddresses write SetServerBlockedAddresses; + property ServerRunJobs: Boolean read GetServerRunJobs write SetServerRunJobs; + property ServerJobCategory: TEDBString read GetServerJobCategory write SetServerJobCategory; + end; + + TElevateDBEngineProperties = class(TInterfacedObject,IElevateDBEngineProperties) + protected + function GetBackupExtension: TEDBString; + function GetCatalogExtension: TEDBString; + function GetCatalogName: TEDBString; + function GetConfigExtension: TEDBString; + function GetConfigName: TEDBString; + function GetConfigPath: TEDBString; + function GetEncryptionPassword: TEDBString; + function GetEngineType: TEDBEngineType; + function GetLargeFileSupport: Boolean; + function GetLicensedSessions: Integer; + function GetLockExtension: TEDBString; + function GetLogCategories: TEDBLogCategories; + function GetLogExtension: TEDBString; + function GetMaxLogFileSize: Integer; + function GetServerAddress: TEDBString; + function GetServerAuthorizedAddresses: TEDBStrings; + function GetServerBlockedAddresses: TEDBStrings; + function GetServerDeadSessionExpiration: Integer; + function GetServerDeadSessionInterval: Integer; + function GetServerDescription: TEDBString; + function GetServerEncryptedOnly: Boolean; + function GetServerJobCategory: TEDBString; + function GetServerMaxDeadSessions: Integer; + function GetServerName: TEDBString; + function GetServerPort: Integer; + function GetServerRunJobs: Boolean; + function GetServerSessionTimeout: Integer; + function GetServerThreadCacheSize: Integer; + function GetSignature: TEDBString; + function GetTableBlobExtension: TEDBString; + function GetTableExtension: TEDBString; + function GetTableIndexExtension: TEDBString; + function GetTempTablesPathProperty: TEDBString; + procedure SetBackupExtension(const Value: TEDBString); + procedure SetCatalogExtension(const Value: TEDBString); + procedure SetCatalogName(const Value: TEDBString); + procedure SetConfigExtension(const Value: TEDBString); + procedure SetConfigName(const Value: TEDBString); + procedure SetConfigPath(const Value: TEDBString); + procedure SetEncryptionPassword(const Value: TEDBString); + procedure SetEngineType(const Value: TEDBEngineType); + procedure SetLargeFileSupport(const Value: Boolean); + procedure SetLicensedSessions(const Value: Integer); + procedure SetLockExtension(const Value: TEDBString); + procedure SetLogCategories(const Value: TEDBLogCategories); + procedure SetLogExtension(const Value: TEDBString); + procedure SetMaxLogFileSize(const Value: Integer); + procedure SetServerAddress(const Value: TEDBString); + procedure SetServerAuthorizedAddresses(const Value: TEDBStrings); + procedure SetServerBlockedAddresses(const Value: TEDBStrings); + procedure SetServerDeadSessionExpiration(const Value: Integer); + procedure SetServerDeadSessionInterval(const Value: Integer); + procedure SetServerDescription(const Value: TEDBString); + procedure SetServerEncryptedOnly(const Value: Boolean); + procedure SetServerJobCategory(const Value: TEDBString); + procedure SetServerMaxDeadSessions(const Value: Integer); + procedure SetServerName(const Value: TEDBString); + procedure SetServerPort(const Value: Integer); + procedure SetServerRunJobs(const Value: Boolean); + procedure SetServerSessionTimeout(const Value: Integer); + procedure SetServerThreadCacheSize(const Value: Integer); + procedure SetSignature(const Value: TEDBString); + procedure SetTableBlobExtension(const Value: TEDBString); + procedure SetTableExtension(const Value: TEDBString); + procedure SetTableIndexExtension(const Value: TEDBString); + procedure SetTempTablesPath(const Value: TEDBString); + public + property EngineType: TEDBEngineType read GetEngineType write SetEngineType; + property Signature: TEDBString read GetSignature write SetSignature; + property EncryptionPassword: TEDBString read GetEncryptionPassword write SetEncryptionPassword; + property LargeFileSupport: Boolean read GetLargeFileSupport write SetLargeFileSupport; + property LicensedSessions: Integer read GetLicensedSessions write SetLicensedSessions; + property ConfigPath: TEDBString read GetConfigPath write SetConfigPath; + property ConfigName: TEDBString read GetConfigName write SetConfigName; + property ConfigExtension: TEDBString read GetConfigExtension write SetConfigExtension; + property LockExtension: TEDBString read GetLockExtension write SetLockExtension; + property LogExtension: TEDBString read GetLogExtension write SetLogExtension; + property MaxLogFileSize: Integer read GetMaxLogFileSize write SetMaxLogFileSize; + property LogCategories: TEDBLogCategories read GetLogCategories write SetLogCategories; + property CatalogName: TEDBString read GetCatalogName write SetCatalogName; + property CatalogExtension: TEDBString read GetCatalogExtension write SetCatalogExtension; + property BackupExtension: TEDBString read GetBackupExtension write SetBackupExtension; + property TableExtension: TEDBString read GetTableExtension write SetTableExtension; + property TableIndexExtension: TEDBString read GetTableIndexExtension write SetTableIndexExtension; + property TableBlobExtension: TEDBString read GetTableBlobExtension write SetTableBlobExtension; + property TempTablesPath: TEDBString read GetTempTablesPathProperty write SetTempTablesPath; + property ServerName: TEDBString read GetServerName write SetServerName; + property ServerDescription: TEDBString read GetServerDescription write SetServerDescription; + property ServerAddress: TEDBString read GetServerAddress write SetServerAddress; + property ServerPort: Integer read GetServerPort write SetServerPort; + property ServerThreadCacheSize: Integer read GetServerThreadCacheSize write SetServerThreadCacheSize; + property ServerEncryptedOnly: Boolean read GetServerEncryptedOnly write SetServerEncryptedOnly; + property ServerSessionTimeout: Integer read GetServerSessionTimeout write SetServerSessionTimeout; + property ServerDeadSessionInterval: Integer read GetServerDeadSessionInterval write SetServerDeadSessionInterval; + property ServerDeadSessionExpiration: Integer read GetServerDeadSessionExpiration write SetServerDeadSessionExpiration; + property ServerMaxDeadSessions: Integer read GetServerMaxDeadSessions write SetServerMaxDeadSessions; + property ServerAuthorizedAddresses: TEDBStrings read GetServerAuthorizedAddresses write SetServerAuthorizedAddresses; + property ServerBlockedAddresses: TEDBStrings read GetServerBlockedAddresses write SetServerBlockedAddresses; + property ServerRunJobs: Boolean read GetServerRunJobs write SetServerRunJobs; + property ServerJobCategory: TEDBString read GetServerJobCategory write SetServerJobCategory; + end; + + IElevateDBEngine = interface + function EngineProperties: IElevateDBEngineProperties; + end; + + IElevateDBSessionProperties = interface + function GetForceBufferFlush: Boolean; + function GetKeepConnections: Boolean; + function GetKeepTablesOpen: Boolean; + function GetProgressTimeInterval: Integer; + function GetRecordChangeDetection: Boolean; + function GetRecordLockProtocol: TEDBRecordLockProtocol; + function GetRecordLockRetryCount: Integer; + function GetRecordLockWaitTime: Integer; + function GetRemoteAddress: TEDBString; + function GetRemoteCompression: Integer; + function GetRemoteEncryption: Boolean; + function GetRemoteHost: TEDBString; + function GetRemotePing: Boolean; + function GetRemotePingInterval: Integer; + function GetRemotePort: Integer; + function GetRemoteService: TEDBString; + function GetRemoteTimeout: Integer; + function GetRemoteTrace: Boolean; + function GetSessionType: TEDBSessionType; + procedure SetForceBufferFlush(const Value: Boolean); + procedure SetKeepTablesOpen(const Value: Boolean); + procedure SetKeepConnections(const Value: Boolean); + procedure SetProgressTimeInterval(const Value: Integer); + procedure SetRecordChangeDetection(const Value: Boolean); + procedure SetRecordLockProtocol(const Value: TEDBRecordLockProtocol); + procedure SetRecordLockRetryCount(const Value: Integer); + procedure SetRecordLockWaitTime(const Value: Integer); + procedure SetRemoteAddress(const Value: TEDBString); + procedure SetRemoteCompression(const Value: Integer); + procedure SetRemoteEncryption(const Value: Boolean); + procedure SetRemoteHost(const Value: TEDBString); + procedure SetRemotePing(const Value: Boolean); + procedure SetRemotePingInterval(const Value: Integer); + procedure SetRemotePort(const Value: Integer); + procedure SetRemoteService(const Value: TEDBString); + procedure SetRemoteTimeout(const Value: Integer); + procedure SetRemoteTrace(const Value: Boolean); + procedure SetSessionType(const Value: TEDBSessionType); + property ForceBufferFlush: Boolean read GetForceBufferFlush write SetForceBufferFlush; + property KeepConnections: Boolean read GetKeepConnections write SetKeepConnections; + property KeepTablesOpen: Boolean read GetKeepTablesOpen write SetKeepTablesOpen; + property RecordLockProtocol: TEDBRecordLockProtocol read GetRecordLockProtocol write SetRecordLockProtocol; + property RecordLockRetryCount: Integer read GetRecordLockRetryCount write SetRecordLockRetryCount; + property RecordLockWaitTime: Integer read GetRecordLockWaitTime write SetRecordLockWaitTime; + property RecordChangeDetection: Boolean read GetRecordChangeDetection write SetRecordChangeDetection; + property ProgressTimeInterval: Integer read GetProgressTimeInterval write SetProgressTimeInterval; + property SessionType: TEDBSessionType read GetSessionType write SetSessionType; + property RemoteCompression: Integer read GetRemoteCompression write SetRemoteCompression; + property RemoteEncryption: Boolean read GetRemoteEncryption write SetRemoteEncryption; + property RemoteHost: TEDBString read GetRemoteHost write SetRemoteHost; + property RemoteAddress: TEDBString read GetRemoteAddress write SetRemoteAddress; + property RemotePort: Integer read GetRemotePort write SetRemotePort; + property RemoteService: TEDBString read GetRemoteService write SetRemoteService; + property RemoteTrace: Boolean read GetRemoteTrace write SetRemoteTrace; + property RemoteTimeout: Integer read GetRemoteTimeout write SetRemoteTimeout; + property RemotePing: Boolean read GetRemotePing write SetRemotePing; + property RemotePingInterval: Integer read GetRemotePingInterval write SetRemotePingInterval; + end; + + { TDAEEDBConnection } + TDAEEDBConnection = class(TDAElevateDBConnection,IElevateDBEngine,IElevateDBSessionProperties) + private + FNativeSession: TEDBSession; + fNativeDatabase: TEDBDatabase; + FDataBasePath: String; + FDataBaseName: string; + function CreateConfigQuery: TDAEDataset; + protected + procedure CheckConnected; override; + function GetForceBufferFlush: Boolean; + function GetKeepConnections: Boolean; + function GetKeepTablesOpen: Boolean; + function GetProgressTimeInterval: Integer; + function GetRecordChangeDetection: Boolean; + function GetRecordLockProtocol: TEDBRecordLockProtocol; + function GetRecordLockRetryCount: Integer; + function GetRecordLockWaitTime: Integer; + function GetRemoteAddress: TEDBString; + function GetRemoteCompression: Integer; + function GetRemoteEncryption: Boolean; + function GetRemoteHost: TEDBString; + function GetRemotePing: Boolean; + function GetRemotePingInterval: Integer; + function GetRemotePort: Integer; + function GetRemoteService: TEDBString; + function GetRemoteTimeout: Integer; + function GetRemoteTrace: Boolean; + function GetSessionType: TEDBSessionType; + procedure SetForceBufferFlush(const Value: Boolean); + procedure SetKeepTablesOpen(const Value: Boolean); + procedure SetKeepConnections(const Value: Boolean); + procedure SetProgressTimeInterval(const Value: Integer); + procedure SetRecordChangeDetection(const Value: Boolean); + procedure SetRecordLockProtocol(const Value: TEDBRecordLockProtocol); + procedure SetRecordLockRetryCount(const Value: Integer); + procedure SetRecordLockWaitTime(const Value: Integer); + procedure SetRemoteAddress(const Value: TEDBString); + procedure SetRemoteCompression(const Value: Integer); + procedure SetRemoteEncryption(const Value: Boolean); + procedure SetRemoteHost(const Value: TEDBString); + procedure SetRemotePing(const Value: Boolean); + procedure SetRemotePingInterval(const Value: Integer); + procedure SetRemotePort(const Value: Integer); + procedure SetRemoteService(const Value: TEDBString); + procedure SetRemoteTimeout(const Value: Integer); + procedure SetRemoteTrace(const Value: Boolean); + procedure SetSessionType(const Value: TEDBSessionType); + protected + procedure SetConnected(Value: boolean); override; safecall; + function CreateCustomConnection: TCustomConnection; override; + //function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + // transaction support + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + // procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + // procedure DoGetQueryFields(const aSQL: string; aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); override; + // procedure DoGetViewFields(const aViewName: string; out Fields: TDAFieldCollection); override; + + // procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + // function DoGetLastAutoInc(const GeneratorName: string): integer; override; + + { IDAConnection } + // UserID/Password + // function GetUserID: string; override; safecall; + // procedure SetUserID(const Value: string); override; safecall; + // function GetPassword: string; override; safecall; + // procedure SetPassword(const Value: string); override; safecall; + + function GetSPSelectSyntax(HasArguments: Boolean): string; override; safecall; + // function GetQuoteChars: TDAQuoteCharArray; override; safecall; + // function IdentifierIsQuoted(const iIdentifier: string): boolean; override; safecall; + // function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + // function QuoteIdentifierIfNeeded(const iIdentifier: string): string; override; safecall; + // function QuoteIdentifier(const iIdentifier: string): string; override; safecall; + // function QuoteFieldNameIfNeeded(const aTableName, aFieldName: string): string; override;safecall; + // function QuoteFieldName(const aTableName, aFieldName: string): string; override; safecall; + + // function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; override; safecall; + // function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; override; safecall; + // function GetLastAutoInc(const GeneratorName: string = ''): integer; safecall; + + // function isAlive: Boolean; override; safecall; + // function GetQueryBuilder: TDAQueryBuilder; override; safecall; + + { IDAUseGenerators } + // function GetNextAutoinc(const GeneratorName: string): integer; safecall; + { IElevateDBEngine } + function EngineProperties: IElevateDBEngineProperties; + public + destructor Destroy; override; + end; + + { TDAEElevDBQuery } + TDAEElevDBQuery = class(TDAEDataset, IDASQLCommand , IDAMustSetParams) + protected + // procedure PrepareSQLStatement; override; + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; safecall; + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; safecall; + function Execute: integer; override; safecall; + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEElevDBStoredProcedure } + TDAEElevDBStoredProcedure = class(TDAEStoredProcedure, IDAStoredProcedure , IDAMustSetParams) + protected + // IDAStoredProcedure + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; safecall; + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; safecall; + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, uDAMacroProcessors, + Math, uDAHelpers, uROBinaryHelpers, Windows; + +var + _driver: TDAEDriver = nil; + gEngineProperties: TElevateDBEngineProperties; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAElevateDBDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEElevateDBDriver.Create(nil); + result := _driver; +end; + +{ TDAEEDBConnection } + +procedure TDAEEDBConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; + sName, sValue: string; +begin + inherited; + with aConnStrParser do begin + if (Self.UserID <> '') then + FNativeSession.LoginUser := Self.UserID + else + FNativeSession.LoginUser := UserID; + + if (Self.Password <> '') then + FNativeSession.LoginPassword := Self.Password + else + FNativeSession.LoginPassword := Password; + + Session.RemoteAddress := Server; +// Engine.ConfigPath := Database; + FDataBasePath := Database; + FDataBaseName := ''; + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + // engine settings + if SameText(sName,'EngineType') then begin + if SameText(sValue,'etClient') then gEngineProperties.EngineType:=etClient + else if SameText(sValue,'etServer') then gEngineProperties.EngineType:=etServer; + end + else if SameText(sName,'Signature') then gEngineProperties.Signature := sValue + else if SameText(sName,'EncryptionPassword') then gEngineProperties.EncryptionPassword := sValue + else if SameText(sName,'LargeFileSupport') then gEngineProperties.LargeFileSupport := StrToBoolDef(sValue, gEngineProperties.LargeFileSupport) + else if SameText(sName,'LicensedSessions') then gEngineProperties.LicensedSessions := StrToIntDef(sValue, gEngineProperties.LicensedSessions) + else if SameText(sName,'ConfigPath') then gEngineProperties.ConfigPath := sValue + else if SameText(sName,'ConfigName') then gEngineProperties.ConfigName := sValue + else if SameText(sName,'ConfigExtension') then gEngineProperties.ConfigExtension := sValue + else if SameText(sName,'LockExtension') then gEngineProperties.LockExtension := sValue + else if SameText(sName,'LogExtension') then gEngineProperties.LogExtension := sValue + else if SameText(sName,'MaxLogFileSize') then gEngineProperties.MaxLogFileSize := StrToIntDef(sValue, gEngineProperties.MaxLogFileSize) + else if SameText(sName,'CatalogName') then gEngineProperties.CatalogName := sValue + else if SameText(sName,'CatalogExtension') then gEngineProperties.CatalogExtension := sValue + else if SameText(sName,'BackupExtension') then gEngineProperties.BackupExtension := sValue + else if SameText(sName,'TableExtension') then gEngineProperties.TableExtension := sValue + else if SameText(sName,'TableIndexExtension') then gEngineProperties.TableIndexExtension := sValue + else if SameText(sName,'TableBlobExtension') then gEngineProperties.TableBlobExtension := sValue + else if SameText(sName,'TempTablesPath') then gEngineProperties.TempTablesPath := sValue + else if SameText(sName,'ServerName') then gEngineProperties.ServerName := sValue + else if SameText(sName,'ServerDescription') then gEngineProperties.ServerDescription := sValue + else if SameText(sName,'ServerPort') then gEngineProperties.ServerPort := StrToIntDef(sValue, gEngineProperties.ServerPort) + else if SameText(sName,'ServerThreadCacheSize') then gEngineProperties.ServerThreadCacheSize := StrToIntDef(sValue, gEngineProperties.ServerThreadCacheSize) + else if SameText(sName,'ServerEncryptedOnly') then gEngineProperties.ServerEncryptedOnly := StrToBoolDef(sValue, gEngineProperties.ServerEncryptedOnly) + else if SameText(sName,'ServerSessionTimeout') then gEngineProperties.ServerSessionTimeout := StrToIntDef(sValue, gEngineProperties.ServerSessionTimeout) + else if SameText(sName,'ServerDeadSessionInterval') then gEngineProperties.ServerDeadSessionInterval := StrToIntDef(sValue, gEngineProperties.ServerDeadSessionInterval) + else if SameText(sName,'ServerDeadSessionExpiration') then gEngineProperties.ServerDeadSessionExpiration := StrToIntDef(sValue, gEngineProperties.ServerDeadSessionExpiration) + else if SameText(sName,'ServerMaxDeadSessions') then gEngineProperties.ServerMaxDeadSessions := StrToIntDef(sValue, gEngineProperties.ServerMaxDeadSessions) + else if SameText(sName,'ServerRunJobs') then gEngineProperties.ServerRunJobs := StrToBoolDef(sValue, gEngineProperties.ServerRunJobs) + else if SameText(sName,'ServerJobCategory') then gEngineProperties.ServerJobCategory := sValue + // session settings + else if SameText(sName,'ForceBufferFlush') then FNativeSession.ForceBufferFlush := StrToBoolDef(sValue, FNativeSession.ForceBufferFlush) + else if SameText(sName,'KeepConnections') then FNativeSession.KeepConnections := StrToBoolDef(sValue, FNativeSession.KeepConnections) + else if SameText(sName,'KeepTablesOpen') then FNativeSession.KeepTablesOpen := StrToBoolDef(sValue, FNativeSession.KeepTablesOpen) + else if SameText(sName,'RecordLockProtocol') then begin + if SameText(sValue,'lpPessimistic') then FNativeSession.RecordLockProtocol:=lpPessimistic + else if SameText(sValue,'lpOptimistic') then FNativeSession.RecordLockProtocol:=lpOptimistic; + end + else if SameText(sName,'RecordLockRetryCount') then FNativeSession.RecordLockRetryCount := StrToIntDef(sValue, fNativeSession.RecordLockRetryCount) + else if SameText(sName,'RecordLockWaitTime') then fNativeSession.RecordLockWaitTime := StrToIntDef(sValue, fNativeSession.RecordLockWaitTime) + else if SameText(sName,'RecordChangeDetection') then FNativeSession.RecordChangeDetection := StrToBoolDef(sValue, FNativeSession.RecordChangeDetection) + else if SameText(sName,'ProgressTimeInterval') then fNativeSession.ProgressTimeInterval := StrToIntDef(sValue, fNativeSession.ProgressTimeInterval) + else if SameText(sName,'SessionType') then begin + if SameText(sValue,'stLocal') then FNativeSession.SessionType:=stLocal + else if SameText(sValue,'stRemote') then FNativeSession.SessionType:=stRemote; + end + else if SameText(sName,'RemoteCompression') then fNativeSession.RemoteCompression := StrToIntDef(sValue, fNativeSession.RemoteCompression) + else if SameText(sName,'RemoteEncryption') then FNativeSession.RemoteEncryption := StrToBoolDef(sValue, FNativeSession.RemoteEncryption) + else if SameText(sName,'RemoteHost') then fNativeSession.RemoteHost := sValue + else if SameText(sName,'RemoteAddress') then fNativeSession.RemoteAddress := sValue + else if SameText(sName,'RemotePort') then fNativeSession.RemotePort := StrToIntDef(sValue, fNativeSession.RemotePort) + else if SameText(sName,'RemoteService') then fNativeSession.RemoteService := sValue + else if SameText(sName,'RemoteTrace') then FNativeSession.RemoteTrace := StrToBoolDef(sValue, FNativeSession.RemoteTrace) + else if SameText(sName,'RemoteTimeout') then fNativeSession.RemoteTimeout := StrToIntDef(sValue, fNativeSession.RemoteTimeout) + else if SameText(sName,'RemotePing') then FNativeSession.RemotePing := StrToBoolDef(sValue, FNativeSession.RemotePing) + else if SameText(sName,'RemotePingInterval') then fNativeSession.RemotePingInterval := StrToIntDef(sValue, fNativeSession.RemotePingInterval) + // + else if SameText(sName,'DataBaseName') then FDataBaseName:=sValue; + end; + fNativeDatabase.DatabaseName := FDataBaseName; + fNativeDatabase.Database := FDataBaseName; + if gEngineProperties.ConfigPath = '' then gEngineProperties.ConfigPath := '.'; + end; +end; + +function TDAEEDBConnection.DoBeginTransaction: integer; +begin + CheckConnected; + fNativeDatabase.StartTransaction(EmptyEDBStringsArray); + Result := 0; +end; + +procedure TDAEEDBConnection.DoCommitTransaction; +begin + CheckConnected; + fNativeDatabase.Commit; +end; + +function TDAEEDBConnection.CreateCustomConnection: TCustomConnection; +begin + FNativeSession := TEDBSession.Create(nil); + FNativeSession.AutoSessionName:=True; + fNativeDatabase := TEDBDatabase.Create(nil); + fNativeDatabase.SessionName := FNativeSession.SessionName; + result := fNativeDatabase; +end; + +function TDAEEDBConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEElevDBQuery; +end; + +function TDAEEDBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEElevDBStoredProcedure; +end; + +procedure TDAEEDBConnection.DoRollbackTransaction; +begin + CheckConnected; + fNativeDatabase.Rollback; +end; + +function TDAEEDBConnection.DoGetInTransaction: boolean; +begin + CheckConnected; + Result := fNativeDatabase.InTransaction; +end; + + +procedure TDAEEDBConnection.SetConnected(Value: boolean); +begin + if (fNativeDatabase <> nil) then + if Value then begin + FNativeSession.Connected:=True; + ElevateDB_RegisterDatabase(CreateConfigQuery,fNativeDatabase.DatabaseName,FDataBasePath); + fNativeDatabase.Connected:=True; + end + else begin + fNativeDatabase.Connected:=False; + FNativeSession.Connected:=False; + end; +end; + +procedure TDAEEDBConnection.CheckConnected; +begin + if not fNativeDatabase.Connected then SetConnected(True); +end; + +destructor TDAEEDBConnection.Destroy; +begin + FNativeSession.Free; + if Engine.SessionCount = 0 then Engine.Active:=False; + inherited; +end; + +function TDAEEDBConnection.CreateConfigQuery: TDAEDataset; +begin + Result:= GetDatasetClass.Create(Self); + TEDBQuery(TDAEElevDBQuery(Result).Dataset).DatabaseName := ElevateDB_ConfigDBName; +end; + +function TDAEEDBConnection.EngineProperties: IElevateDBEngineProperties; +begin + Result:= gEngineProperties; +end; + +function TDAEEDBConnection.GetForceBufferFlush: Boolean; +begin + Result := FNativeSession.ForceBufferFlush; +end; + +function TDAEEDBConnection.GetKeepConnections: Boolean; +begin + Result := FNativeSession.KeepConnections; +end; + +function TDAEEDBConnection.GetKeepTablesOpen: Boolean; +begin + Result := FNativeSession.KeepTablesOpen; +end; + +function TDAEEDBConnection.GetProgressTimeInterval: Integer; +begin + Result := FNativeSession.ProgressTimeInterval; +end; + +function TDAEEDBConnection.GetRecordChangeDetection: Boolean; +begin + Result := FNativeSession.RecordChangeDetection; +end; + +function TDAEEDBConnection.GetRecordLockProtocol: TEDBRecordLockProtocol; +begin + Result := FNativeSession.RecordLockProtocol; +end; + +function TDAEEDBConnection.GetRecordLockRetryCount: Integer; +begin + Result := FNativeSession.RecordLockRetryCount; +end; + +function TDAEEDBConnection.GetRecordLockWaitTime: Integer; +begin + Result := FNativeSession.RecordLockWaitTime; +end; + +function TDAEEDBConnection.GetRemoteAddress: TEDBString; +begin + Result := FNativeSession.RemoteAddress; +end; + +function TDAEEDBConnection.GetRemoteCompression: Integer; +begin + Result := FNativeSession.RemoteCompression; +end; + +function TDAEEDBConnection.GetRemoteEncryption: Boolean; +begin + Result := FNativeSession.RemoteEncryption; +end; + +function TDAEEDBConnection.GetRemoteHost: TEDBString; +begin + Result := FNativeSession.RemoteHost; +end; + +function TDAEEDBConnection.GetRemotePing: Boolean; +begin + Result := FNativeSession.RemotePing; +end; + +function TDAEEDBConnection.GetRemotePingInterval: Integer; +begin + Result := FNativeSession.RemotePingInterval; +end; + +function TDAEEDBConnection.GetRemotePort: Integer; +begin + Result := FNativeSession.RemotePort; +end; + +function TDAEEDBConnection.GetRemoteService: TEDBString; +begin + Result := FNativeSession.RemoteService; +end; + +function TDAEEDBConnection.GetRemoteTimeout: Integer; +begin + Result := FNativeSession.RemoteTimeout; +end; + +function TDAEEDBConnection.GetRemoteTrace: Boolean; +begin + Result := FNativeSession.RemoteTrace; +end; + +function TDAEEDBConnection.GetSessionType: TEDBSessionType; +begin + Result := FNativeSession.SessionType; +end; + +procedure TDAEEDBConnection.SetForceBufferFlush(const Value: Boolean); +begin + FNativeSession.ForceBufferFlush := Value; +end; + +procedure TDAEEDBConnection.SetKeepConnections(const Value: Boolean); +begin + FNativeSession.KeepConnections := Value; +end; + +procedure TDAEEDBConnection.SetKeepTablesOpen(const Value: Boolean); +begin + FNativeSession.KeepTablesOpen := Value; +end; + +procedure TDAEEDBConnection.SetProgressTimeInterval(const Value: Integer); +begin + FNativeSession.ProgressTimeInterval := Value; +end; + +procedure TDAEEDBConnection.SetRecordChangeDetection(const Value: Boolean); +begin + FNativeSession.RecordChangeDetection := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockProtocol( + const Value: TEDBRecordLockProtocol); +begin + FNativeSession.RecordLockProtocol := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockRetryCount(const Value: Integer); +begin + FNativeSession.RecordLockRetryCount := Value; +end; + +procedure TDAEEDBConnection.SetRecordLockWaitTime(const Value: Integer); +begin + FNativeSession.RecordLockWaitTime := Value; +end; + +procedure TDAEEDBConnection.SetRemoteAddress(const Value: TEDBString); +begin + FNativeSession.RemoteAddress := Value; +end; + +procedure TDAEEDBConnection.SetRemoteCompression(const Value: Integer); +begin + FNativeSession.RemoteCompression := Value; +end; + +procedure TDAEEDBConnection.SetRemoteEncryption(const Value: Boolean); +begin + FNativeSession.RemoteEncryption := Value; +end; + +procedure TDAEEDBConnection.SetRemoteHost(const Value: TEDBString); +begin + FNativeSession.RemoteHost := Value; +end; + +procedure TDAEEDBConnection.SetRemotePing(const Value: Boolean); +begin + FNativeSession.RemotePing := Value; +end; + +procedure TDAEEDBConnection.SetRemotePingInterval(const Value: Integer); +begin + FNativeSession.RemotePingInterval := Value; +end; + +procedure TDAEEDBConnection.SetRemotePort(const Value: Integer); +begin + FNativeSession.RemotePort := Value; +end; + +procedure TDAEEDBConnection.SetRemoteService(const Value: TEDBString); +begin + FNativeSession.RemoteService := Value; +end; + +procedure TDAEEDBConnection.SetRemoteTimeout(const Value: Integer); +begin + FNativeSession.RemoteTimeout := Value; +end; + +procedure TDAEEDBConnection.SetRemoteTrace(const Value: Boolean); +begin + FNativeSession.RemoteTrace := Value; +end; + +procedure TDAEEDBConnection.SetSessionType(const Value: TEDBSessionType); +begin + FNativeSession.SessionType := Value; +end; + +function TDAEEDBConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + Result:= ''; // not supported! +end; + +{ TDAEElevateDBDriver } + +procedure TDAEElevateDBDriver.GetAuxDrivers(out List: IROStrings); +begin + inherited; + // List.Add('Driver1'); + // List.Add('Driver2'); +end; + +procedure TDAEElevateDBDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('DataBaseName='); + List.Add('ForceBufferFlush=(True,False)'); + List.Add('KeepConnections=(True,False)'); + List.Add('KeepTablesOpen=(True,False)'); + List.Add('RecordLockProtocol=(lpPessimistic,lpOptimistic)'); + List.Add('RecordLockRetryCount='); + List.Add('RecordLockWaitTime='); + List.Add('RecordChangeDetection=(True,False)'); + List.Add('ProgressTimeInterval='); + List.Add('SessionType=(stLocal,stRemote)'); + List.Add('RemoteCompression='); + List.Add('RemoteEncryption=(True,False)'); + List.Add('RemoteHost='); + List.Add('RemoteAddress='); + List.Add('RemotePort='); + List.Add('RemoteService='); + List.Add('RemoteTrace=(True,False)'); + List.Add('RemoteTimeout='); + List.Add('RemotePing=(True,False)'); + List.Add('RemotePingInterval='); + List.Add(''); + List.Add('=== Global Engine Options ==='); + List.Add('EngineType=(etClient,etServer)'); + List.Add('Signature='); + List.Add('EncryptionPassword='); + List.Add('LargeFileSupport=(True,False)'); + List.Add('LicensedSessions='); + List.Add('ConfigPath='); + List.Add('ConfigName='); + List.Add('ConfigExtension='); + List.Add('LockExtension='); + List.Add('LogExtension='); + List.Add('MaxLogFileSize='); + List.Add('CatalogName='); + List.Add('CatalogExtension='); + List.Add('BackupExtension='); + List.Add('TableExtension='); + List.Add('TableIndexExtension='); + List.Add('TableBlobExtension='); + List.Add('TempTablesPath='); + List.Add('ServerName='); + List.Add('ServerDescription='); + List.Add('ServerPort='); + List.Add('ServerThreadCacheSize='); + List.Add('ServerEncryptedOnly=(True,False)'); + List.Add('ServerSessionTimeout='); + List.Add('ServerDeadSessionInterval='); + List.Add('ServerDeadSessionExpiration='); + List.Add('ServerMaxDeadSessions='); + List.Add('ServerRunJobs=(True,False)'); + List.Add('ServerJobCategory='); +end; + +function TDAEElevateDBDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result:=[doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEElevateDBDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEEDBConnection; +end; + + +function TDAEElevateDBDriver.GetDescription: string; +begin + result := 'ElevateDB Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEElevateDBDriver.GetDriverID: string; +begin + result := 'ElevateDB'; +end; + +function TDAEElevateDBDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result:='DataBaseName='; +end; + +{ TDAEElevDBQuery } + +procedure TDAEElevDBQuery.ClearParams; +begin + inherited; + TEDBQuery(Dataset).Params.Clear; +end; + +function TDAEElevDBQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + Result := TEDBQuery.Create(nil); + TEDBQuery(Result).SessionName := TDAEEDBConnection(aConnection).fNativeDatabase.SessionName; + TEDBQuery(Result).DatabaseName := TDAEEDBConnection(aConnection).fNativeDatabase.DatabaseName; +end; + +function TDAEElevDBQuery.DoExecute: integer; +begin + TEDBQuery(Dataset).ExecSQL; + Result:=TEDBQuery(Dataset).RowsAffected; +end; + +function TDAEElevDBQuery.DoGetSQL: string; +begin + Result := TEDBQuery(Dataset).SQL.Text; +end; + +procedure TDAEElevDBQuery.DoPrepare(Value: boolean); +begin +//nothing + TEDBQuery(Dataset).Prepared:= Value; +end; + +procedure TDAEElevDBQuery.DoSetSQL(const Value: string); +begin + TEDBQuery(Dataset).SQL.Text := Value; +end; + +function TDAEElevDBQuery.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEElevDBQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TEDBQuery(Dataset).Params); +end; + +procedure TDAEElevDBQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TEDBQuery(Dataset).Params); +end; + +{ TDAEElevDBStoredProcedure } + +function TDAEElevDBStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TEDBStoredProc.Create(nil); + TEDBStoredProc(Result).SessionName := TDAEEDBConnection(aConnection).fNativeDatabase.SessionName; + TEDBStoredProc(Result).DatabaseName := TDAEEDBConnection(aConnection).fNativeDatabase.DatabaseName; +end; + +function TDAEElevDBStoredProcedure.Execute: integer; +begin + TEDBStoredProc(Dataset).Prepare; + SetParamValues(GetParams); + Result:= DoExecute; + //Result:=TEDBStoredProc(Dataset).RecordCount; + GetParamValues(GetParams); +end; + +function TDAEElevDBStoredProcedure.DoGetSQL: string; +begin + Result := ''; +end; + +procedure TDAEElevDBStoredProcedure.DoPrepare(Value: boolean); +begin + TEDBStoredProc(Dataset).Prepared:=Value; +end; + +procedure TDAEElevDBStoredProcedure.DoSetSQL(const Value: string); +begin + // +end; + +procedure TDAEElevDBStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TEDBStoredProc(Dataset).Params); +end; + +function TDAEElevDBStoredProcedure.GetStoredProcedureName: string; +begin + Result := TEDBStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEElevDBStoredProcedure.RefreshParams; +var + lField: TField; + i: integer; + par: TDAParam; +begin + DoPrepare(False); + DoPrepare(True); + RefreshParamsStd(TEDBStoredProc(Dataset).Params); + For i:=0 to TEDBStoredProc(Dataset).FieldCount-1 do begin + par := GetParams.Add; + lField:=TEDBStoredProc(Dataset).Fields[i]; + par.Name := lField.Name; + par.DataType := intVCLTypeToDAType(lField.DataType,lField.Size); + par.ParamType := daptOutput; + par.Size := lField.Size; + end; +end; + +procedure TDAEElevDBStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TEDBStoredProc(Dataset).Params); +end; + +procedure TDAEElevDBStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TEDBStoredProc(Dataset).StoredProcName := Name; +end; + +function TDAEElevDBStoredProcedure.DoExecute: integer; +begin + TEDBStoredProc(Dataset).ExecProc; + Result:=0; +end; + +{ TElevateDBEngineProperties } + +function TElevateDBEngineProperties.GetBackupExtension: TEDBString; +begin + Result := edbcomps.Engine.BackupExtension; +end; + +function TElevateDBEngineProperties.GetCatalogExtension: TEDBString; +begin + Result := edbcomps.Engine.CatalogExtension; +end; + +function TElevateDBEngineProperties.GetCatalogName: TEDBString; +begin + Result := edbcomps.Engine.CatalogName; +end; + +function TElevateDBEngineProperties.GetConfigExtension: TEDBString; +begin + Result := edbcomps.Engine.ConfigExtension; +end; + +function TElevateDBEngineProperties.GetConfigName: TEDBString; +begin + Result := edbcomps.Engine.ConfigName; +end; + +function TElevateDBEngineProperties.GetConfigPath: TEDBString; +begin + Result := edbcomps.Engine.ConfigPath; +end; + +function TElevateDBEngineProperties.GetEncryptionPassword: TEDBString; +begin + Result := edbcomps.Engine.EncryptionPassword; +end; + +function TElevateDBEngineProperties.GetEngineType: TEDBEngineType; +begin + Result := edbcomps.Engine.EngineType; +end; + +function TElevateDBEngineProperties.GetLargeFileSupport: Boolean; +begin + Result := edbcomps.Engine.LargeFileSupport; +end; + +function TElevateDBEngineProperties.GetLicensedSessions: Integer; +begin + Result := edbcomps.Engine.LicensedSessions; +end; + +function TElevateDBEngineProperties.GetLockExtension: TEDBString; +begin + Result := edbcomps.Engine.LockExtension; +end; + +function TElevateDBEngineProperties.GetLogCategories: TEDBLogCategories; +begin + Result := edbcomps.Engine.LogCategories; +end; + +function TElevateDBEngineProperties.GetLogExtension: TEDBString; +begin + Result := edbcomps.Engine.LogExtension; +end; + +function TElevateDBEngineProperties.GetMaxLogFileSize: Integer; +begin + Result := edbcomps.Engine.MaxLogFileSize; +end; + +function TElevateDBEngineProperties.GetServerAddress: TEDBString; +begin + Result := edbcomps.Engine.ServerAddress; +end; + +function TElevateDBEngineProperties.GetServerAuthorizedAddresses: TEDBStrings; +begin + Result := edbcomps.Engine.ServerAuthorizedAddresses; +end; + +function TElevateDBEngineProperties.GetServerBlockedAddresses: TEDBStrings; +begin + Result := edbcomps.Engine.ServerBlockedAddresses; +end; + +function TElevateDBEngineProperties.GetServerDeadSessionExpiration: Integer; +begin + Result := edbcomps.Engine.ServerDeadSessionExpiration; +end; + +function TElevateDBEngineProperties.GetServerDeadSessionInterval: Integer; +begin + Result := edbcomps.Engine.ServerDeadSessionInterval; +end; + +function TElevateDBEngineProperties.GetServerDescription: TEDBString; +begin + Result := edbcomps.Engine.ServerDescription; +end; + +function TElevateDBEngineProperties.GetServerEncryptedOnly: Boolean; +begin + Result := edbcomps.Engine.ServerEncryptedOnly; +end; + +function TElevateDBEngineProperties.GetServerJobCategory: TEDBString; +begin + Result := edbcomps.Engine.ServerJobCategory; +end; + +function TElevateDBEngineProperties.GetServerMaxDeadSessions: Integer; +begin + Result := edbcomps.Engine.ServerMaxDeadSessions; +end; + +function TElevateDBEngineProperties.GetServerName: TEDBString; +begin + Result := edbcomps.Engine.ServerName; +end; + +function TElevateDBEngineProperties.GetServerPort: Integer; +begin + Result := edbcomps.Engine.ServerPort; +end; + +function TElevateDBEngineProperties.GetServerRunJobs: Boolean; +begin + Result := edbcomps.Engine.ServerRunJobs; +end; + +function TElevateDBEngineProperties.GetServerSessionTimeout: Integer; +begin + Result := edbcomps.Engine.ServerSessionTimeout; +end; + +function TElevateDBEngineProperties.GetServerThreadCacheSize: Integer; +begin + Result := edbcomps.Engine.ServerThreadCacheSize; +end; + +function TElevateDBEngineProperties.GetSignature: TEDBString; +begin + Result := edbcomps.Engine.Signature; +end; + +function TElevateDBEngineProperties.GetTableBlobExtension: TEDBString; +begin + Result := edbcomps.Engine.TableBlobExtension; +end; + +function TElevateDBEngineProperties.GetTableExtension: TEDBString; +begin + Result := edbcomps.Engine.TableExtension; +end; + +function TElevateDBEngineProperties.GetTableIndexExtension: TEDBString; +begin + Result := edbcomps.Engine.TableIndexExtension; +end; + +function TElevateDBEngineProperties.GetTempTablesPathProperty: TEDBString; +begin + Result := edbcomps.Engine.TempTablesPath; +end; + +procedure TElevateDBEngineProperties.SetBackupExtension( + const Value: TEDBString); +begin + edbcomps.Engine.BackupExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetCatalogExtension( + const Value: TEDBString); +begin + edbcomps.Engine.CatalogExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetCatalogName( + const Value: TEDBString); +begin + edbcomps.Engine.CatalogName := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigExtension( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigName( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigName := Value; +end; + +procedure TElevateDBEngineProperties.SetConfigPath( + const Value: TEDBString); +begin + edbcomps.Engine.ConfigPath := Value; +end; + +procedure TElevateDBEngineProperties.SetEncryptionPassword( + const Value: TEDBString); +begin + edbcomps.Engine.EncryptionPassword := Value; +end; + +procedure TElevateDBEngineProperties.SetEngineType( + const Value: TEDBEngineType); +begin + edbcomps.Engine.EngineType := Value; +end; + +procedure TElevateDBEngineProperties.SetLargeFileSupport( + const Value: Boolean); +begin + edbcomps.Engine.LargeFileSupport := Value; +end; + +procedure TElevateDBEngineProperties.SetLicensedSessions( + const Value: Integer); +begin + edbcomps.Engine.LicensedSessions := Value; +end; + +procedure TElevateDBEngineProperties.SetLockExtension( + const Value: TEDBString); +begin + edbcomps.Engine.LockExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetLogCategories( + const Value: TEDBLogCategories); +begin + edbcomps.Engine.LogCategories := Value; +end; + +procedure TElevateDBEngineProperties.SetLogExtension( + const Value: TEDBString); +begin + edbcomps.Engine.LogExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetMaxLogFileSize( + const Value: Integer); +begin + edbcomps.Engine.MaxLogFileSize := Value; +end; + +procedure TElevateDBEngineProperties.SetServerAddress( + const Value: TEDBString); +begin + edbcomps.Engine.ServerAddress := Value; +end; + +procedure TElevateDBEngineProperties.SetServerAuthorizedAddresses( + const Value: TEDBStrings); +begin + edbcomps.Engine.ServerAuthorizedAddresses := Value; +end; + +procedure TElevateDBEngineProperties.SetServerBlockedAddresses( + const Value: TEDBStrings); +begin + edbcomps.Engine.ServerBlockedAddresses := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDeadSessionExpiration( + const Value: Integer); +begin + edbcomps.Engine.ServerDeadSessionExpiration := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDeadSessionInterval( + const Value: Integer); +begin + edbcomps.Engine.ServerDeadSessionInterval := Value; +end; + +procedure TElevateDBEngineProperties.SetServerDescription( + const Value: TEDBString); +begin + edbcomps.Engine.ServerDescription := Value; +end; + +procedure TElevateDBEngineProperties.SetServerEncryptedOnly( + const Value: Boolean); +begin + edbcomps.Engine.ServerEncryptedOnly := Value; +end; + +procedure TElevateDBEngineProperties.SetServerJobCategory( + const Value: TEDBString); +begin + edbcomps.Engine.ServerJobCategory := Value; +end; + +procedure TElevateDBEngineProperties.SetServerMaxDeadSessions( + const Value: Integer); +begin + edbcomps.Engine.ServerMaxDeadSessions := Value; +end; + +procedure TElevateDBEngineProperties.SetServerName( + const Value: TEDBString); +begin + edbcomps.Engine.ServerName := Value; +end; + +procedure TElevateDBEngineProperties.SetServerPort(const Value: Integer); +begin + edbcomps.Engine.ServerPort := Value; +end; + +procedure TElevateDBEngineProperties.SetServerRunJobs( + const Value: Boolean); +begin + edbcomps.Engine.ServerRunJobs := Value; +end; + +procedure TElevateDBEngineProperties.SetServerSessionTimeout( + const Value: Integer); +begin + edbcomps.Engine.ServerSessionTimeout := Value; +end; + +procedure TElevateDBEngineProperties.SetServerThreadCacheSize( + const Value: Integer); +begin + edbcomps.Engine.ServerThreadCacheSize := Value; +end; + +procedure TElevateDBEngineProperties.SetSignature(const Value: TEDBString); +begin + edbcomps.Engine.Signature := Value; +end; + +procedure TElevateDBEngineProperties.SetTableBlobExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableBlobExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTableExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTableIndexExtension( + const Value: TEDBString); +begin + edbcomps.Engine.TableIndexExtension := Value; +end; + +procedure TElevateDBEngineProperties.SetTempTablesPath( + const Value: TEDBString); +begin + edbcomps.Engine.TempTablesPath := Value; +end; + +exports + GetDriverObject name func_GetDriverObject; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + gEngineProperties := TElevateDBEngineProperties.Create; +finalization + gEngineProperties := nil; + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas new file mode 100644 index 0000000..d596d87 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAFIBDriver.pas @@ -0,0 +1,682 @@ +unit uDAFIBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_FIBDriver_Glyphs.res} + +{.$DEFINE MANUAL_STARTTRANSACTION} +interface + +uses + Classes, DB, uDAEngine, uDAInterfaces, uDAIBInterfaces, FIBDatabase, + uROClasses, pFIBDatabase, FIBQuery, pFIBQuery, pFIBStoredProc, uDAUtils, + FIBDataSet, ibase, FIBSQLMonitor; + +type + { TDAFIBDriver } + TDAFIBDriver = class(TDADriverReference) + end; + + { TFIBConnection } + TFIBConnection = class(TDAConnectionWrapper) + private + fDatabase: TpFIBDatabase; + fTransaction: TFIBTransaction; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TpFIBDatabase read fDatabase; + property Transaction: TFIBTransaction read fTransaction; + end; + + { TDAEFIBDriver } + TDAEFIBDriver = class(TDAIBDriver) + private + fFIBTraceOptions: TFIBTraceFlags; + fTraceCallback: TDALogTraceEvent; + fMonitor: TFIBSQLMonitor; + procedure OnTrace(EventText: string; EventTime: TDateTime); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + public + end; + + { TDAEFIBConnection } + TDAEFIBConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TFIBConnection; + procedure IntOpen; + protected + + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override; safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + public + end; + + { TDAEFIBQuery } + TDAEFIBQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure RefreshParams; override; + procedure DoSetActive(Value: Boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEFIBStoredProcedure } + TDAEFIBStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + private + FSP: TpFIBStoredProc; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, + pFIBProps; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAFIBDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEFIBDriver.Create(nil); + result := _driver; +end; + + +{ TFIBConnection } + +constructor TFIBConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TpFIBDatabase.Create(Self); + fTransaction := TFIBTransaction.Create(Self); + + fDatabase.UseLoginPrompt := FALSE; + fDatabase.DefaultTransaction := fTransaction; +end; + +function TFIBConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TFIBConnection.SetConnected(Value: boolean); +begin + // This first check is required. + // I think there's a bug in the FIB destroying sequence and the notification. TCustomConnection gets to this point *after* + // the owned components are destroyed. Only happens with FIB... + + if (csDestroying in ComponentState) then Exit; + fDatabase.Connected := Value +end; + +{ TDAEFIBConnection } + +procedure TDAEFIBConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + fConnection.Database.SQLDialect := 3; + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.ConnectParams.UserName := Self.UserID + else + fConnection.Database.ConnectParams.UserName := UserID; + + if (Self.Password <> '') then + fConnection.Database.ConnectParams.Password := Self.Password + else + fConnection.Database.ConnectParams.Password := Password; + + if Server <> '' then + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + fConnection.Database.SQLDialect := StrtoInt(AuxParams['Dialect']) + else if AuxParams['SQLDialect'] <> '' then + fConnection.Database.SQLDialect := StrtoInt(AuxParams['SQLDialect']); + + if AuxParams['Role'] <> '' then + fConnection.Database.ConnectParams.RoleName := AuxParams['Role']; + + if AuxParams['Charset'] <> '' then + SetCharset(AuxParams['Charset']); + + end; +end; + +function TDAEFIBConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.DefaultTransaction.StartTransaction; +end; + +procedure TDAEFIBConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEFIBConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TFIBConnection.Create(nil); + result := fConnection; +end; + +function TDAEFIBConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEFIBQuery +end; + +function TDAEFIBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEFIBStoredProcedure +end; + +function TDAEFIBConnection.GetTransaction: TObject; +begin + result := fConnection.fTransaction; +end; + +procedure TDAEFIBConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEFIBConnection.GetRole: string; +begin + result := fConnection.Database.ConnectParams.RoleName; +end; + +function TDAEFIBConnection.GetSQLDialect: integer; +begin + result := fConnection.Database.SQLDialect +end; + +function TDAEFIBConnection.GetCharset: string; +begin + result := fConnection.Database.ConnectParams.CharSet +end; + +procedure TDAEFIBConnection.SetRole(const Value: string); +begin + fConnection.Database.ConnectParams.RoleName := Value +end; + +procedure TDAEFIBConnection.SetSQLDialect(Value: integer); +begin + fConnection.Database.SQLDialect := Value +end; + +procedure TDAEFIBConnection.SetCharset(const Value: string); +begin + fConnection.Database.ConnectParams.CharSet := Value; +end; + +procedure TDAEFIBConnection.Commit; +begin + fConnection.fTransaction.Commit +end; + +procedure TDAEFIBConnection.CommitRetaining; +begin + fConnection.fTransaction.CommitRetaining +end; + +procedure TDAEFIBConnection.Rollback; +begin + fConnection.fTransaction.Rollback +end; + +procedure TDAEFIBConnection.RollbackRetaining; +begin + fConnection.fTransaction.RollbackRetaining +end; + +function TDAEFIBConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fTransaction.InTransaction +end; + +procedure TDAEFIBConnection.IntOpen; +begin + {$IFNDEF MANUAL_STARTTRANSACTION} + if not fConnection.Connected then fConnection.Open; + if not fConnection.Transaction.InTransaction then fConnection.Transaction.StartTransaction; + {$ENDIF} +end; + +{ TDAEFIBDriver } + +procedure TDAEFIBDriver.CustomizeConnectionObject(aConnection: TDAEConnection); +begin + // 25/04/06 13:05 Donald Shimoda . To do. + //TDAEFIBConnection(aConnection).fConnection.Database.TraceFlags := fIBTraceOptions; +end; + +procedure TDAEFIBDriver.DoSetTraceOptions(TraceActive: boolean; + TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TFIBSQLMonitor.Create(Self); + + fMonitor.Active := False; + fMonitor.OnSQL := OnTrace; + + fFIBTraceOptions := []; + if (toPrepare in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQPrepare]; + if (toExecute in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQExecute]; + if (toFetch in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfQFetch]; + if (toConnect in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfConnect]; + if (toTransact in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfTransact]; + if (toService in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfService]; + if (toMisc in TraceOptions) then fFIBTraceOptions := fFIBTraceOptions + [tfMisc]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := fFIBTraceOptions; + fMonitor.Active := True; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + + +function TDAEFIBDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEFIBConnection; +end; + +function TDAEFIBDriver.GetDescription: string; +begin + result := 'FIBPlus Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEFIBDriver.GetDriverID: string; +begin + result := 'FIB'; +end; + +procedure CreateParams(FQuery: TFIBQuery; Pars: TDAParamCollection; CreateOutputParams: Boolean = False); +var + i: Integer; + par: TDAParam; + sqPar: TFIBXSQLVAR; +begin + if FQuery.Database.Handle = nil then + FQuery.Database.Open; + + if not FQuery.Prepared then + FQuery.Prepare; + pars.Clear; + for i := 0 to FQuery.ParamCount -1 do begin + sqpar := FQuery.Params[i]; + if sqpar.IsParam then begin + par := pars.Add; + par.Name := sqPar.Name; + par.ParamType:= daptInput; + case sqpar.SQLType and not 1 of + SQL_VARYING, SQL_TEXT: + begin + if sqPar.CharacterSet = 'UNICODE_FSS' then + par.DataType := datWideString + else + par.DataType := datString; + par.Size := sqPar.Size; + end; + SQL_DOUBLE, SQL_FLOAT,SQL_D_FLOAT:par.DataType := datFloat; + SQL_SHORT, SQL_LONG: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datInteger; + end; + SQL_INT64: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datLargeInt; + end; + SQL_TIMESTAMP, + SQL_TYPE_TIME, + SQL_TYPE_DATE: par.DataType := datDateTime; + SQL_BLOB: + if sqPar.SQLSubtype = 1 then + par.DataType := datMemo + else + par.DataType := datBlob; + SQL_BOOLEAN: par.DataType := datBoolean; + else + par.DataType := datUnknown; + end; + end; + end; + + if CreateOutputParams then + for i := 0 to FQuery.FieldCount -1 do begin + sqpar := FQuery.Fields[i]; + par := pars.Add; + par.Name := sqPar.Name; + par.ParamType:= daptOutput; + case sqpar.SQLType and not 1 of + SQL_VARYING, SQL_TEXT: + begin + if sqPar.CharacterSet = 'UNICODE_FSS' then + par.DataType := datWideString + else + par.DataType := datString; + par.Size := sqPar.Size; + end; + SQL_DOUBLE, SQL_FLOAT,SQL_D_FLOAT:par.DataType := datFloat; + SQL_SHORT, SQL_LONG: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datInteger; + end; + SQL_INT64: begin + if sqPar.Scale <> 0 then + par.DataType := datFloat + else + par.DataType := datLargeInt; + end; + SQL_TIMESTAMP, + SQL_TYPE_TIME, + SQL_TYPE_DATE: par.DataType := datDateTime; + SQL_BLOB: + if sqPar.SQLSubtype = 1 then + par.DataType := datMemo + else + par.DataType := datBlob; + SQL_BOOLEAN: par.DataType := datBoolean; + else + par.DataType := datUnknown; + end; + end; +end; + + +{ TDAEFIBQuery } + + +procedure TDAEFIBDriver.OnTrace(EventText: string; EventTime: TDateTime); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, EventText, 0); +end; + +procedure TDAEFIBQuery.ClearParams; +begin + inherited; + TFIBDataSet(Dataset).Params.ClearValues; +end; + +{ TDAEFIBStoredProcedure } + +function TDAEFIBStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + FreeAndNil(FSP); + FSP := TpFIBStoredProc.Create(nil); + FSP.Database := TDAEFIBConnection(aConnection).fConnection.Database; + result := nil; +end; + +function TDAEFIBStoredProcedure.Execute: integer; +begin + TDAEFIBConnection(Connection).IntOpen; + if FSP.Database.Handle = nil then FSP.Database.Open; + + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEFIBStoredProcedure.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + sqPar: TFIBXSQLVAR; +begin + FSP.Prepare; + for i := 0 to AParams.Count - 1 do begin + if (AParams[i].ParamType in [daptInput, daptInputOutput, daptUnknown]) then begin + sqPar:= FSP.ParamByName(AParams[i].Name); + if (sqPar <> nil) and sqPar.IsParam then sqPar.Value:=AParams[i].Value; + end; + end; +end; + +procedure TDAEFIBStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + sqPar: TFIBXSQLVAR; +begin + for i := 0 to AParams.Count - 1 do begin + if (AParams[i].ParamType in [daptOutput, daptInputOutput, daptResult]) then begin + sqPar:= FSP.FieldByName(AParams[i].Name); + if (sqPar <> nil) then AParams[i].Value:=sqPar.Value; + end; + end; +end; + + +function TDAEFIBStoredProcedure.GetStoredProcedureName: string; +begin + result := FSP.StoredProcName; +end; + +procedure TDAEFIBStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TDAEFIBConnection(Connection).IntOpen; + FSP.StoredProcName := Name; +end; + +procedure TDAEFIBStoredProcedure.RefreshParams; +begin + TDAEFIBConnection(Connection).IntOpen; + CreateParams(FSP, GetParams,True); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEFIBStoredProcedure.DoExecute: integer; +begin + FSP.ExecQuery; + result := FSP.RowsAffected; +end; + +{ TDAEFIBQuery } + +function TDAEFIBQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +var + ds: TFIBDataSet; +begin + ds := TFIBDataSet.Create(nil); + ds.Database := TDAEFIBConnection(aConnection).fConnection.Database; + ds.Transaction := TDAEFIBConnection(aConnection).fConnection.Transaction; + ds.PrepareOptions := ds.PrepareOptions + [psUseLargeIntField]; + result := ds; +end; + +function TDAEFIBQuery.DoExecute: integer; +begin + TDAEFIBConnection(Connection).IntOpen; + TFIBDataSet(Dataset).QSelect.ExecQuery; + result := TFIBDataSet(Dataset).QSelect.RowsAffected; +end; + +function TDAEFIBQuery.DoGetRecordCount: integer; +begin + result := TFIBDataSet(DAtaset).QSelect.RecordCount; +end; + +function TDAEFIBQuery.DoGetSQL: string; +begin + result := TFIBDataSet(DAtaset).QSelect.SQL.Text; +end; + +procedure TDAEFIBQuery.DoPrepare(Value: boolean); +begin + TDAEFIBConnection(Connection).IntOpen; + if Value then TFIBDataSet(DAtaset).QSelect.Prepare; +end; + +procedure TDAEFIBQuery.DoSetActive(Value: Boolean); +begin + TDAEFIBConnection(Connection).IntOpen; + if Value then begin + if not TFIBDataSet(Dataset).Database.Connected then + TFIBDataSet(Dataset).Database.Connected := true; + end; + inherited DoSetActive(Value); +end; + +procedure TDAEFIBQuery.DoSetSQL(const Value: string); +begin + TFIBDataSet(DAtaset).QSelect.SQL.Text := Value; +end; + + + +procedure TDAEFIBQuery.RefreshParams; +begin + CreateParams(TFIBDataSet(Dataset).QSelect, GetParams); +end; + + +procedure TDAEFIBQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + _par: TDAParam; +begin + TFIBDataSet(Dataset).Prepare; + for i := 0 to TFIBDataSet(Dataset).ParamCount - 1 do begin + _Par := AParams.ParamByName(TFIBDataSet(Dataset).Params[i].Name); + if (_Par.ParamType in [daptInput, daptInputOutput, daptUnknown]) then + if (TFIBDataSet(Dataset).Params[i].IsParam) then + TFIBDataSet(Dataset).Params[i].Value := _Par.Value; + end; +end; + +procedure TDAEFIBQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + _Par: TDAParam; +begin + for i := 0 to TFIBDataSet(Dataset).ParamCount - 1 do begin + _Par := AParams.ParamByName(TFIBDataSet(Dataset).Params[i].Name); + if (_Par.ParamType in [daptOutput, daptInputOutput, daptResult]) then + _Par.Value := TFIBDataSet(Dataset).Params[i].Value; + end; +end; + + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas new file mode 100644 index 0000000..550449f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBDACDriver.pas @@ -0,0 +1,579 @@ +unit uDAIBDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_IBDACDriver_Glyphs.res} + +interface + +uses + DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + DBAccess, IBC, DASQLMonitor, + IBCSQLMonitor, Variants, uDAUtils, uDAIBInterfaces; + +type { TDAIBDACDriver } + TDAIBDACDriver = class(TDADriverReference) + end; + + { TDAEIBDACDriver } + TDAEIBDACDriver = class(TDAIBDriver) + private + fMonitor: TIBCSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + procedure OnIBDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + { TDAEIBDACConnection } + TDAEIBDACConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TIBCConnection; + protected + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer;override; safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + end; + + { TDAEIBDACQuery } + TDAEIBDACQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEIBDACStoredProcedure } + TDAEIBDACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: Integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin +{$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; +{$ENDIF} + if (_driver = nil) then _driver := TDAEIBDACDriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + +{ TDAEIBDACConnection } + +procedure TDAEIBDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + SetSQLDialect(3); + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + + if Server <> '' then + fConnection.Database := Server + ':' + Database + else + fConnection.Database := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then SetCharset(AuxParams['Charset']); + if AuxParams['EnableMemos'] <> '' then fConnection.Options.EnableMemos := StrToBool(AuxParams['EnableMemos']); + if AuxParams['UseUnicode'] <> '' then fConnection.Options.UseUnicode := StrToBool(AuxParams['UseUnicode']); + end; +end; + +function TDAEIBDACConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.StartTransaction; +end; + +procedure TDAEIBDACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +function TDAEIBDACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBCConnection.Create(nil); + fConnection.LoginPrompt := FALSE; + + result := fConnection; +end; + +function TDAEIBDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBDACQuery; +end; + +function TDAEIBDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBDACStoredProcedure; +end; + +(*function SqlServerToDAType(aType:integer):TDADataType; +begin + case aType of + 34:result := datBlob; + 35:result := datMemo; + 36:result := datString; //uniqueidentifier + 48:result := datInteger; + 52:result := datInteger; + 56:result := datInteger; + 58:result := datDateTime; + 59:result := datFloat; + 60:result := datCurrency; + 61:result := datDateTime; + 62:result := datFloat; + //98 sql_variant + 99:result := datMemo;// ntext + 104:result := datBoolean; + 106:result := datFloat; + 108:result := datFloat; + 122:result := datCurrency; + 127:result := datInteger; + 165:result := datBlob; // varbinary + 167:result := datString; + 173:result := datBlob; // binary + 175:result := datString; // char + 189:result := datBlob; // timestamp + 231:result := datString; // nvarchar + 239:result := datString; //nchar + 240:result := datDateTime; + 241:result := datBlob;// xml + else result := datUnknown; + end; +end; + +procedure TDAEIBDACConnection.DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); +var + ds : TIBCQuery; + lID:string; +begin + ds := TIBCQuery.Create(NIL); + try + + ds.Connection := fConnection; + ds.SQL.Text := 'select * from sysobjects where xtype=''P'' and name='''+aStoredProcedureName+''''; + ds.Open; + try + if ds.EOF then RaiseError('Stored Procedure %s not found in database',[aStoredProcedureName]); + lID := ds.FieldbyName('id').AsString; + finally + ds.Close(); + end; + + ds.SQL.Text := 'select * from sys.parameters where object_id='''+lID+''' ORDER BY parameter_id'; + ds.Open; + try + Params := TDAParamCollection.Create(nil); + while not ds.Eof do begin + with Params.Add() do begin + Name := ds.FieldByName('name').AsString; + + DataType := SqlServerToDAType(ds.FieldByName('system_type_id').AsInteger); + Size := ds.FieldByName('max_length').AsInteger; + + {if ds.FieldByName('has_default_value').AsBoolean then + DefaultValue := ds.FieldByName('default_Value').AsInteger;} + + if ds.FieldByName('is_output').AsBoolean then + ParamType := daptOutput + else + ParamType := daptInput; + + end; + ds.Next(); + end; + finally + Close(); + end; + + finally + ds.Free; + end; +end;*) + +procedure TDAEIBDACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + +function TDAEIBDACConnection.DoGetInTransaction: boolean; +begin + result := fConnection.InTransaction +end; + +procedure TDAEIBDACConnection.Commit; +begin + fConnection.Commit; +end; + +procedure TDAEIBDACConnection.CommitRetaining; +begin + fConnection.CommitRetaining; +end; + +function TDAEIBDACConnection.GetCharset: string; +begin + result := fConnection.Options.Charset; +end; + +function TDAEIBDACConnection.GetRole: string; +begin + Result := fConnection.Options.Role; +end; + +function TDAEIBDACConnection.GetSQLDialect: integer; +begin + Result := fConnection.SQLDialect; +end; + +function TDAEIBDACConnection.GetTransaction: TObject; +begin + Result := fConnection.DefaultTransaction; +end; + +procedure TDAEIBDACConnection.Rollback; +begin + fConnection.Rollback; +end; + +procedure TDAEIBDACConnection.RollbackRetaining; +begin + fConnection.RollbackRetaining; +end; + +procedure TDAEIBDACConnection.SetCharset(const Value: string); +begin + fConnection.Options.Charset := Value; +end; + +procedure TDAEIBDACConnection.SetRole(const Value: string); +begin + fConnection.Options.Role := Value; +end; + +procedure TDAEIBDACConnection.SetSQLDialect(Value: integer); +begin + fConnection.SQLDialect := Value; +end; + +{ TDAEIBDACDriver } + +procedure TDAEIBDACDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; +// List.Add('EnableMemos={True,False}'); +// List.Add('UseUnicode={True,False}'); +end; + +function TDAEIBDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBDACConnection; +end; + +function TDAEIBDACDriver.GetDescription: string; +begin + result := 'Core Lab IBDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEIBDACDriver.GetDriverID: string; +begin + result := 'IBDAC'; +end; + +procedure TDAEIBDACDriver.OnIBDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + inherited; + // if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEIBDACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + IBDACopts: TDATraceFlags; +begin + inherited; + exit; + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIBCSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnIBDACTrace; + + IBDACopts := []; + if (toPrepare in TraceOptions) then IBDACopts := IBDACopts + [tfQPrepare]; + if (toExecute in TraceOptions) then IBDACopts := IBDACopts + [tfQExecute]; + if (toFetch in TraceOptions) then IBDACopts := IBDACopts + [tfQFetch]; + if (toError in TraceOptions) then IBDACopts := IBDACopts + [tfError]; + if (toStmt in TraceOptions) then IBDACopts := IBDACopts + [tfStmt]; + if (toConnect in TraceOptions) then IBDACopts := IBDACopts + [tfConnect]; + if (toTransact in TraceOptions) then IBDACopts := IBDACopts + [tfTransact]; + if (toBlob in TraceOptions) then IBDACopts := IBDACopts + [tfBlob]; + if (toService in TraceOptions) then IBDACopts := IBDACopts + [tfService]; + if (toMisc in TraceOptions) then IBDACopts := IBDACopts + [tfMisc]; + if (toParams in TraceOptions) then IBDACopts := IBDACopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := IBDACopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +procedure TDAEIBDACDriver.CustomizeConnectionObject( + aConnection: TDAEConnection); +begin + // +end; + +{ TDAEIBDACQuery } + +procedure TDAEIBDACQuery.ClearParams; +begin + inherited; + TIBCQuery(Dataset).Params.Clear; +end; + +function TDAEIBDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBCQuery.Create(nil); + TIBCQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TIBCQuery(result).Unidirectional := True; + TIBCQuery(result).ReadOnly := TRUE; + TIBCQuery(result).Connection := TDAEIBDACConnection(aConnection).fConnection; + TIBCQuery(result).AutoCommit := False; +end; + +function TDAEIBDACQuery.DoExecute: integer; +begin + TIBCQuery(Dataset).ExecSQL; + result := TIBCQuery(Dataset).RowsAffected; +end; + +function TDAEIBDACQuery.DoGetRecordCount: integer; +begin + Result := TIBCQuery(Dataset).RecordCount; +end; + +function TDAEIBDACQuery.DoGetSQL: string; +begin + result := TIBCQuery(Dataset).SQL.Text; +end; + +procedure TDAEIBDACQuery.DoPrepare(Value: boolean); +begin + TIBCQuery(Dataset).Prepared := Value; +end; + +procedure TDAEIBDACQuery.DoSetSQL(const Value: string); +begin + TIBCQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEIBDACQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TIBCParam; +begin + for i := 0 to TIBCQuery(DataSet).Params.Count - 1 do begin + lParam:=TIBCQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + AParams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEIBDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TIBCQuery(Dataset).Params, true); +end; + +{ TDAEIBDACStoredProcedure } + +function TDAEIBDACStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBCStoredProc.Create(nil); + TIBCStoredProc(result).Connection := TDAEIBDACConnection(aConnection).fConnection; + TIBCStoredProc(result).AutoCommit := False; +end; + +function TDAEIBDACStoredProcedure.Execute: integer; +begin + TIBCStoredProc(Dataset).Prepare; + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + + +procedure TDAEIBDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TIBCParam; +begin + for i := 0 to TIBCStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TIBCStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + AParams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +function TDAEIBDACStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBCStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEIBDACStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBCStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBDACStoredProcedure.RefreshParams; +begin + TIBCStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBCStoredProc(Dataset).Params); +end; + +procedure TDAEIBDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TIBCStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBDACStoredProcedure.DoExecute: Integer; +begin + TIBCStoredProc(Dataset).ExecProc; + result := TIBCStoredProc(Dataset).RowsAffected; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas new file mode 100644 index 0000000..cc2d92a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBODriver.pas @@ -0,0 +1,530 @@ +unit uDAIBODriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_IBODriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAIBInterfaces, uROClasses, + IBODataset, IB_Components, IB_Monitor, uDAUtils; + +type + { TDAIBODriver } + TDAIBODriver = class(TDADriverReference) + end; + + { TIBOConnection } + TIBOConnection = class(TDAConnectionWrapper) + private + fDatabase: TIBODatabase; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Database: TIBODatabase read fDatabase; + end; + + { TDAEIBODriver } + TDAEIBODriver = class(TDAIBDriver) + private + fTraceCallback: TDALogTraceEvent; + fMonitor: TIB_Monitor; + procedure OnIBOTrace(Sender: TObject; const NewString: string); + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; + Callback: TDALogTraceEvent); override; + + public + end; + + { TDAEIBOConnection } + TDAEIBOConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, + IDAFileBasedDatabase) + private + fConnection: TIBOConnection; + fSQLDialect: integer; // See TDAEIBOConnection.GetSQLDialect for more details + + protected + + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override;safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + public + end; + + { TDAEIBOQuery } + TDAEIBOQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEIBOStoredProcedure } + TDAEIBOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, uROBinaryHelpers, Variants; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBODriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEIBODriver.Create(nil); + result := _driver; +end; + + + +{ TIBOConnection } + +constructor TIBOConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TIBODatabase.Create(Self); + fDatabase.LoginPrompt := FALSE; +end; + +destructor TIBOConnection.Destroy; +begin + FreeAndNil(fDatabase); + inherited; +end; + +function TIBOConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TIBOConnection.SetConnected(Value: boolean); +begin + if fDatabase <> nil then fDatabase.Connected := Value; +end; + +{ TDAEIBOConnection } + +procedure TDAEIBOConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.Username := Self.UserID + else + fConnection.Database.Username := UserID; + + if (Self.Password <> '') then + fConnection.Database.Password := Self.Password + else + fConnection.Database.Password := Password; + + if (Server <> '') then + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then + SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then + fConnection.Database.CharSet := AuxParams['Charset']; + + end; +end; + +function TDAEIBOConnection.DoBeginTransaction: integer; +begin + fConnection.Database.DefaultTransaction.StartTransaction; + result := -1; +end; + +procedure TDAEIBOConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEIBOConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBOConnection.Create(nil); + fSQLDialect := fConnection.Database.SQLDialect; + result := fConnection; +end; + +function TDAEIBOConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBOQuery +end; + +function TDAEIBOConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBOStoredProcedure +end; + +function TDAEIBOConnection.GetTransaction: TObject; +begin + result := fConnection.Database.DefaultTransaction; +end; + +procedure TDAEIBOConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEIBOConnection.GetRole: string; +begin + result := fConnection.Database.SQLRole +end; + +function TDAEIBOConnection.GetSQLDialect: integer; +begin + // AleF: I modified this because somehow IBO returned 3 even after setting this value to 2 or else. + // Somewhere in the IBO code this calue gets reset. This is a work around that basically makes QuoteIdentifier work correctly + + result := fSQLDialect; // fConnection.Database.SQLDialect; +end; + +procedure TDAEIBOConnection.SetSQLDialect(Value: integer); +begin + fSQLDialect := Value; + fConnection.Database.SQLDialect := Value; +end; + +procedure TDAEIBOConnection.SetRole(const Value: string); +begin + fConnection.Database.SQLRole := Value +end; + +procedure TDAEIBOConnection.Commit; +begin + fConnection.Database.Commit +end; + +procedure TDAEIBOConnection.CommitRetaining; +begin + fConnection.Database.CommitRetaining +end; + +procedure TDAEIBOConnection.Rollback; +begin + fConnection.Database.Rollback +end; + +procedure TDAEIBOConnection.RollbackRetaining; +begin + fConnection.Database.RollbackRetaining +end; + +function TDAEIBOConnection.DoGetInTransaction: boolean; +begin + result := fConnection.Database.InTransaction +end; + +function TDAEIBOConnection.GetCharset: string; +begin + result := fConnection.Database.CharSet; +end; + +procedure TDAEIBOConnection.SetCharset(const Value: string); +begin + fConnection.Database.CharSet := Value; +end; + +{ TDAEIBODriver } + +function TDAEIBODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBOConnection +end; + +function TDAEIBODriver.GetDescription: string; +begin + result := 'Interbase Objects (IBO) Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEIBODriver.GetDriverID: string; +begin + result := 'IBO'; +end; + +procedure TDAEIBODriver.OnIBOTrace(Sender: TObject; const NewString: string); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, NewString, 0); +end; + +procedure TDAEIBODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: + TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIB_Monitor.Create(Self); + + fMonitor.Enabled := FALSE; + fMonitor.OnMonitorOutputItem := OnIBOTrace; + fMonitor.IncludeTimeStamp := True; + fMonitor.ItemStart := ''; + fMonitor.ItemEnd := ''; + fMonitor.NewLineText := ','; + + FMonitor.MonitorGroups := []; + FMonitor.StatementGroups := []; + + if (toPrepare in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgPrepare, sgAllocate, sgStatementInfo, sgDescribe]; + end; + + if (toExecute in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgExecute]; + end; + + if (toFetch in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement, mgRow]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgDescribe, sgStatementInfo]; + end; + + if (toStmt in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgStatement]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgDescribe, sgStatementInfo]; + end; + + if (toConnect in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgConnection]; + if (toTransact in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgtransaction]; + + if (toBlob in TraceOptions) then FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgBlob]; + + if (toMisc in TraceOptions) then begin + FMonitor.MonitorGroups := FMonitor.MonitorGroups + [mgBlob, mgArray, mgClientTrace]; + FMonitor.StatementGroups := FMonitor.StatementGroups + [sgStatementInfo, sgServerCursor, sgServerCursor]; + end; + + fTraceCallBack := Callback; + + fMonitor.Enabled := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +{ TDAEIBOQuery } + +procedure TDAEIBOQuery.ClearParams; +begin + inherited; + TIBOQuery(Dataset).Params.Clear; +end; + +function TDAEIBOQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBOQuery.Create(nil); + TIBOQuery(result).IB_Connection := TDAEIBOConnection(aConnection).fConnection.Database; + TIBOQuery(result).AutoFetchAll := TRUE; + TIBOQuery(result).RecordCountAccurate := TRUE; +end; + +function TDAEIBOQuery.DoExecute: integer; +begin + TIBOQuery(Dataset).ExecSQL; + result := TIBOQuery(Dataset).RowsAffected; +end; + +function TDAEIBOQuery.DoGetSQL: string; +begin + result := TIBOQuery(Dataset).SQL.Text +end; + +procedure TDAEIBOQuery.DoPrepare(Value: boolean); +begin + TIBOQuery(Dataset).Prepared := Value; +end; + +procedure TDAEIBOQuery.DoSetSQL(const Value: string); +begin + TIBOQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEIBOQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TIBOQuery(Dataset).Params); +end; + +procedure TDAEIBOQuery.SetParamValues(AParams: TDAParamCollection); +var i: Integer; +begin + for i := 0 to AParams.Count - 1 do + if (VarType(AParams[i].Value) = varOleStr) and (AParams[i].Value = '') then + AParams[i].Value := Unassigned; + SetParamValuesStd(AParams, TIBOQuery(Dataset).Params); +end; + +{ TDAEIBOStoredProcedure } + +function TDAEIBOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBOStoredProc.Create(nil); + TIBOStoredProc(result).IB_Connection := TDAEIBOConnection(aConnection).fConnection.Database; +end; + +function TDAEIBOStoredProcedure.Execute: integer; +begin + with TIBOStoredProc(Dataset) do begin + Unprepare; + Prepare; + end; + + SetParamValues(GetParams); + Result := DoExecute; + GetParamValues(GetParams); +end; + +function TDAEIBOStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBOStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEIBOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBOStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBOStoredProcedure.RefreshParams; +begin + // Apparently a bug in IBO requires to do so... Automatic gathering only works at runtime + TIBOStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBOStoredProc(Dataset).Params); +end; + +procedure TDAEIBOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TIBOStoredProc(Dataset).Params); +end; + +procedure TDAEIBOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TIBOStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBOStoredProcedure.DoExecute: integer; +begin + TIBOStoredProc(Dataset).ExecProc; + result := TIBOStoredProc(Dataset).RowsAffected; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas new file mode 100644 index 0000000..938d609 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAIBXDriver.pas @@ -0,0 +1,538 @@ +unit uDAIBXDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_IBXDriver_Glyphs.res} + +interface + +uses + Classes, DB, uDAEngine, uDAInterfaces, uDAIBInterfaces, IBDatabase, + uROClasses, IBQuery, IBStoredProc, IBSQLMonitor, IB, uDAUtils; + +type + { TDAIBXDriver } + TDAIBXDriver = class(TDADriverReference) + end; + + { TIBXConnection } + TIBXConnection = class(TDAConnectionWrapper) + private + fDatabase: TIBDatabase; + fTransaction: TIBTransaction; + + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + + public + constructor Create(AOwner: TComponent); override; + + property Database: TIBDatabase read fDatabase; + property Transaction: TIBTransaction read fTransaction; + end; + + { TDAEIBXDriver } + TDAEIBXDriver = class(TDAIBDriver) + private + fIBTraceOptions: TTraceFlags; + fTraceCallback: TDALogTraceEvent; + fMonitor: TIBSQLMonitor; + + procedure OnIBXTrace(EventText: string; EventTime: TDateTime); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + procedure Finalize; override; + function GetDriverID: string; override; + function GetDescription: string; override; + public + end; + + { TDAEIBXConnection } + TDAEIBXConnection = class(TDAIBConnection, IDAInterbaseConnection, IDAIBTransactionAccess, IDAIBConnectionProperties, IDAUseGenerators, IDAFileBasedDatabase) + private + fConnection: TIBXConnection; + + protected + // IIBTransactionAccess + function GetTransaction: TObject; safecall; + + procedure Commit; safecall; + procedure CommitRetaining; safecall; + procedure Rollback; safecall; + procedure RollbackRetaining; safecall; + + // IIBConnectionProperties + function GetRole: string; safecall; + procedure SetRole(const Value: string); safecall; + function GetSQLDialect: integer; override;safecall; + procedure SetSQLDialect(Value: integer); safecall; + function GetCharset: string; safecall; + procedure SetCharset(const Value: string); safecall; + + + // IDAConnection + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + end; + + { TDAEIBXQuery } + TDAEIBXQuery = class(TDAEDataset,IDAMustSetParams) + + protected + function DoGetRecordCount: integer; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEIBXStoredProcedure } + TDAEIBXStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, IBCustomDataSet, IBSQL,uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAIBXDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAEIBXDriver.Create(nil); + result := _driver; +end; + +{ TIBXConnection } + +constructor TIBXConnection.Create(AOwner: TComponent); +begin + inherited; + + fDatabase := TIBDatabase.Create(Self); + fTransaction := TIBTransaction.Create(Self); + fTransaction.AutoStopAction := saNone; + //fTransaction.AutoStopAction := saCommit; + // ^ new per recommendation from Andy Gibson, to fix the "Transaction in progress" error. + + fDatabase.LoginPrompt := FALSE; + fDatabase.DefaultTransaction := fTransaction; +end; + +function TIBXConnection.GetConnected: Boolean; +begin + result := fDatabase.Connected +end; + +procedure TIBXConnection.SetConnected(Value: boolean); +begin + // This first check is required. + // I think there's a bug in the IBX destroying sequence and the notification. TCustomConnection gets to this point *after* + // the owned components are destroyed. Only happens with IBX... + + if (csDestroying in ComponentState) then Exit; + fDatabase.Connected := Value +end; + +{ TDAEIBXConnection } + +procedure TDAEIBXConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + if (Self.UserID <> '') then + fConnection.Database.Params.Add('user_name=' + Self.UserID) + else + fConnection.Database.Params.Add('user_name=' + UserID); + + if (Self.Password <> '') then + fConnection.Database.Params.Add('password=' + Self.Password) + else + fConnection.Database.Params.Add('password=' + Password); + + if Server <> '' then { Change: Aleksander Oven, 27. july 2003 } + fConnection.Database.DatabaseName := Server + ':' + Database + else + fConnection.Database.DatabaseName := Database; + + if AuxParams['Dialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['Dialect'])) + else if AuxParams['SQLDialect'] <> '' then + SetSQLDialect(StrToInt(AuxParams['SQLDialect'])); + + if AuxParams['Role'] <> '' then + SetRole(AuxParams['Role']); + + if AuxParams['Charset'] <> '' then + SetCharset(AuxParams['Charset']); + + end; +end; + +function TDAEIBXConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Database.DefaultTransaction.StartTransaction; +end; + +procedure TDAEIBXConnection.DoCommitTransaction; +begin + fConnection.Database.DefaultTransaction.Commit; +end; + +function TDAEIBXConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TIBXConnection.Create(nil); + result := fConnection; +end; + +function TDAEIBXConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEIBXQuery +end; + +function TDAEIBXConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEIBXStoredProcedure +end; + +function TDAEIBXConnection.GetTransaction: TObject; +begin + result := fConnection.fTransaction; +end; + +procedure TDAEIBXConnection.DoRollbackTransaction; +begin + fConnection.Database.DefaultTransaction.Rollback; +end; + +function TDAEIBXConnection.GetRole: string; +begin + result := fConnection.Database.Params.Values['sql_role_name'] +end; + +function TDAEIBXConnection.GetSQLDialect: integer; +begin + result := fConnection.Database.SQLDialect +end; + +function TDAEIBXConnection.GetCharset: string; +begin + result := fConnection.Database.Params.Values['lc_ctype'] +end; + +procedure TDAEIBXConnection.SetRole(const Value: string); +begin + fConnection.Database.Params.Values['sql_role_name'] := Value +end; + +procedure TDAEIBXConnection.SetSQLDialect(Value: integer); +begin + fConnection.Database.SQLDialect := Value +end; + +procedure TDAEIBXConnection.SetCharset(const Value: string); +begin + fConnection.Database.Params.Values['lc_ctype'] := Value; +end; + +procedure TDAEIBXConnection.Commit; +begin + fConnection.fTransaction.Commit +end; + +procedure TDAEIBXConnection.CommitRetaining; +begin + fConnection.fTransaction.CommitRetaining +end; + +procedure TDAEIBXConnection.Rollback; +begin + fConnection.fTransaction.Rollback +end; + +procedure TDAEIBXConnection.RollbackRetaining; +begin + fConnection.fTransaction.RollbackRetaining +end; + +function TDAEIBXConnection.DoGetInTransaction: boolean; +begin + result := fConnection.fTransaction.InTransaction +end; + +{ TDAEIBXDriver } + +procedure TDAEIBXDriver.CustomizeConnectionObject(aConnection: TDAEConnection); +begin + TDAEIBXConnection(aConnection).fConnection.Database.TraceFlags := fIBTraceOptions; +end; + +function TDAEIBXDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEIBXConnection; +end; + +function TDAEIBXDriver.GetDescription: string; +begin + result := 'Borland Interbase Express Driver'; +end; + +function TDAEIBXDriver.GetDriverID: string; +begin + result := 'IBX'; +end; + +procedure TDAEIBXDriver.OnIBXTrace(EventText: string; EventTime: TDateTime); +begin + if Assigned(fTraceCallback) then fTraceCallback(fMonitor, EventText, 0); +end; + +procedure TDAEIBXDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TIBSQLMonitor.Create(Self); + + fMonitor.Enabled := FALSE; + fMonitor.OnSQL := OnIBXTrace; + + fIBTraceOptions := []; + if (toPrepare in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQPrepare]; + if (toExecute in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQExecute]; + if (toFetch in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfQFetch]; + if (toError in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfError]; + if (toStmt in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfStmt]; + if (toConnect in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfConnect]; + if (toTransact in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfTransact]; + if (toBlob in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfBlob]; + if (toService in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfService]; + if (toMisc in TraceOptions) then fIBTraceOptions := fIBTraceOptions + [tfMisc]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := fIBTraceOptions; + fMonitor.Enabled := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; + if TraceActive then + EnableMonitoring + else + DisableMonitoring; +end; + +procedure TDAEIBXDriver.Finalize; +begin + inherited; +end; + +{ TDAEIBXQuery } + +procedure TDAEIBXQuery.ClearParams; +begin + inherited; + TIBQuery(Dataset).Params.Clear; +end; + +function TDAEIBXQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TIBQuery.Create(nil); + TIBQuery(result).UniDirectional := true; + TIBQuery(result).Database := TDAEIBXConnection(aConnection).fConnection.Database; +end; + +function TDAEIBXQuery.DoExecute: integer; +begin + TIBQuery(Dataset).ExecSQL; + result := TIBQuery(Dataset).RowsAffected; +end; + +function TDAEIBXQuery.DoGetRecordCount: integer; +begin + TIBQuery(Dataset).FetchAll; + Result := inherited DoGetRecordCount; +end; + +function TDAEIBXQuery.DoGetSQL: string; +begin + result := TIBQuery(Dataset).SQL.Text +end; + +procedure TDAEIBXQuery.DoPrepare(Value: boolean); +begin + TIBQuery(Dataset).Prepared := Value +end; + +procedure TDAEIBXQuery.DoSetSQL(const Value: string); +begin + TIBQuery(Dataset).SQL.Text := Value; +end; + + +procedure TDAEIBXQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TIBQuery(Dataset).Params); +end; + +procedure TDAEIBXQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + k: UnicodeString; +begin + for I := 0 to AParams.Count - 1 do + if AParams[i].DataType = datWideMemo then begin + k := AParams[i].AsWideString; + {$IFDEF UNICODE} + AParams[i].DataType := datMemo; + {$ELSE} + AParams[i].DataType := datBlob; + {$ENDIF} + AParams[i].AsWideString:=k; + end; + SetParamValuesStd(AParams,TIBQuery(Dataset).Params); +end; + +{ TDAEIBXStoredProcedure } + +function TDAEIBXStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TIBStoredProc.Create(nil); + TIBStoredProc(result).Database := TDAEIBXConnection(aConnection).fConnection.Database; +end; + +function TDAEIBXStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + +procedure TDAEIBXStoredProcedure.SetParamValues(AParams: TDAParamCollection); +var + i: integer; + k: UnicodeString; +begin + for I := 0 to AParams.Count - 1 do + if AParams[i].DataType = datWideMemo then begin + k := AParams[i].AsWideString; + {$IFDEF UNICODE} + AParams[i].DataType := datMemo; + {$ELSE} + AParams[i].DataType := datBlob; + {$ENDIF} + AParams[i].AsWideString:=k; + end; + SetParamValuesStd(AParams,TIBStoredProc(Dataset).Params); +end; + +procedure TDAEIBXStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TIBStoredProc(Dataset).Params); +end; + +function TDAEIBXStoredProcedure.GetStoredProcedureName: string; +begin + result := TIBStoredProc(Dataset).StoredProcName +end; + +procedure TDAEIBXStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TIBStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEIBXStoredProcedure.RefreshParams; +begin + // Apparently a bug in IBX requires to do so... Automatic gathering only works at runtime + TIBStoredProc(Dataset).Prepare; + RefreshParamsStd(TIBStoredProc(Dataset).Params); +end; + +exports + GetDriverObject name func_GetDriverObject; + +function TDAEIBXStoredProcedure.DoExecute: integer; +begin + TIBStoredProc(Dataset).ExecProc; + result := TIBStoredProc(Dataset).RowsAffected; +end; + +var + FOldMonitoringEnabled : Boolean; +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + FOldMonitoringEnabled := MonitoringEnabled; + DisableMonitoring; + +finalization + if FOldMonitoringEnabled then + EnableMonitoring + else + DisableMonitoring; + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas new file mode 100644 index 0000000..f8d68d9 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMyDACDriver.pas @@ -0,0 +1,544 @@ +unit uDAMyDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_MyDACDriver_Glyphs.res} +{.$DEFINE ENABLE_SQLMonitor} +{.$DEFINE MYSQL4Compatible} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, {uDAADOInterfaces,} uROClasses, DBAccess, MyAccess, + {$IFDEF ENABLE_SQLMonitor}DASQLMonitor, MySQLMonitor,{$ENDIF ENABLE_SQLMonitor} uROBinaryHelpers, uDAUtils, uDAMySQLInterfaces; + +type { TDAMyDACDriver } + TDAMyDACDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAMySQLDriver) + private + {$IFDEF ENABLE_SQLMonitor} + fMonitor: TMySQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnMyDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + {$ENDIF ENABLE_SQLMonitor} + protected + function GetConnectionClass: TDAEConnectionClass; override; + {$IFDEF ENABLE_SQLMonitor} + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + {$ENDIF ENABLE_SQLMonitor} + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + function GetDefaultCustomParameters: string; override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + { TDAEMyConnection } + TDAEMyConnection = class(TDAMySQLConnection, IDAMySQLConnection,IDACanQueryDatabaseNames) + private + function GetMyConnection: TMyConnection; + + protected + function GetTableSchema: string; override; + function useUnicode:Boolean; override; + + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + function GetDatabaseNames: IROStrings; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + property MyConnection: TMyConnection read GetMyConnection; + public + end; + + { TDAEMyQuery } + TDAEMyQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils,Variants, + uDADriverManager, uDARes; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAMyDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + + +{$I uDACRLabsUtils.inc} +{ TDAEMyConnection } + +function TDAEMyConnection.DoBeginTransaction: integer; +begin + MyConnection.StartTransaction; + result := 0; +end; + +procedure TDAEMyConnection.DoCommitTransaction; +begin + MyConnection.Commit; +end; + +function TDAEMyConnection.GetMyConnection: TMyConnection; +begin + result := TMyConnection(inherited ConnectionObject); +end; + +function TDAEMyConnection.CreateCustomConnection: TCustomConnection; +begin + result := TMyConnection.Create(nil); + TMyConnection(result).LoginPrompt := FALSE; +end; + +function TDAEMyConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMyQuery; +end; + +function TDAEMyConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +procedure TDAEMyConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + MyConnection.GetStoredProcNames(List.Strings); + {$ELSE} + inherited DoGetStoredProcedureNames(List); + {$ENDIF} +end; + +procedure TDAEMyConnection.DoGetTableNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + MyConnection.GetTableNames(List.Strings); + {$ELSE} + inherited DoGetTableNames(List); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoRollbackTransaction; +begin + MyConnection.Rollback; +end; + +function TDAEMyConnection.DoGetInTransaction: boolean; +begin + result := MyConnection.InTransaction +end; + + +procedure TDAEMyConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +const + stdMSSQL_ConnectionString = 'User ID=%s;Password=%s;Initial Catalog=%s;Data Source=%s'; +var + adoconn: string; + i: integer; + sName,sValue: string; +begin + inherited; + + with aConnStrParser do begin + adoconn := Format(stdMSSQL_ConnectionString, [UserID, Password, Database, Server]); + + MyConnection.Database := Database; + + MyConnection.Server := Server; + + if (Self.UserID <> '') then + MyConnection.Username := Self.UserID + else + MyConnection.Username := UserID; + + if (Self.Password <> '') then + MyConnection.Password := Self.Password + else + MyConnection.Password := Password; + for i := 0 to AuxParamsCount -1 do + begin + sName := AuxParamNames[i]; + sValue := AuxParams[AuxParamNames[i]]; + if SameText('Port', sName) then MyConnection.Port:= StrToIntDef(sValue,3306); + if SameText('useUnicode', sName) then MyConnection.Options.UseUnicode:=StrToBoolDef(sValue,False); + end; + end; +end; + +function TDAEMyConnection.GetTableSchema: string; +begin + Result:=MyConnection.Database; +end; + +function TDAEMyConnection.useUnicode: Boolean; +begin + Result:= GetMyConnection.Options.UseUnicode; +end; + +function TDAEMyConnection.GetDatabaseNames: IROStrings; +begin + {$IFDEF MYSQL4Compatible} + Result := TROStrings.Create(); + MyConnection.GetDatabaseNames(Result.Strings); + {$ELSE} + Result := inherited GetDatabaseNames; + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetViewNames(out List: IROStrings); +begin + {$IFDEF MYSQL4Compatible} + List := TROStrings.Create; + GetTablesList(MyConnection, List.Strings); + {$ELSE} + inherited DoGetViewNames(List); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + {$IFDEF MYSQL4Compatible} + ForeignKeys := TDADriverForeignKeyCollection.Create(nil); + {$ELSE} + inherited DoGetForeignKeys(ForeignKeys); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +{$IFDEF MYSQL4Compatible} +var + cmd: IDASQLCommand; + {$ENDIF MYSQL4Compatible} +begin + {$IFDEF MYSQL4Compatible} + cmd := NewCommand(aStoredProcedureName, stStoredProcedure); + cmd.RefreshParams; + Params := TDAParamCollection.Create(nil); + Params.AssignParamCollection(cmd.Params); + {$ELSE} + inherited DoGetStoredProcedureParams(aStoredProcedureName, Params); + {$ENDIF MYSQL4Compatible} +end; + +procedure TDAEMyConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +{$IFDEF MYSQL4Compatible} + var + qry: IDADataset; +{$ENDIF} +begin + {$IFDEF MYSQL4Compatible} + Fields := TDAFieldCollection.Create(nil); + qry := GetDatasetClass.Create(Self); + try + qry.SQL := 'SELECT * FROM ' + QuoteIdentifierIfNeeded(aTableName) + ' WHERE 1=0'; + qry.Open; + Fields.Assign(qry.Fields); + finally + qry := nil; + end; + {$ELSE} + inherited DoGetTableFields(aTableName, Fields); + {$ENDIF MYSQL4Compatible} +end; + +{ TDAEADODriver } + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('useUnicode=(True;False)'); +end; + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMyConnection; +end; + +function TDAEADODriver.GetDefaultCustomParameters: string; +begin + Result:= inherited GetDefaultCustomParameters + 'useUnicode=False;'; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Core Lab MyDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'MyDAC'; +end; + +{$IFDEF ENABLE_SQLMonitor} +procedure TDAEADODriver.OnMyDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + MyDACopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TMySQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnMyDACTrace; + + MyDACopts := []; + if (toPrepare in TraceOptions) then MyDACopts := MyDACopts + [tfQPrepare]; + if (toExecute in TraceOptions) then MyDACopts := MyDACopts + [tfQExecute]; + if (toFetch in TraceOptions) then MyDACopts := MyDACopts + [tfQFetch]; + if (toError in TraceOptions) then MyDACopts := MyDACopts + [tfError]; + if (toStmt in TraceOptions) then MyDACopts := MyDACopts + [tfStmt]; + if (toConnect in TraceOptions) then MyDACopts := MyDACopts + [tfConnect]; + if (toTransact in TraceOptions) then MyDACopts := MyDACopts + [tfTransact]; + if (toBlob in TraceOptions) then MyDACopts := MyDACopts + [tfBlob]; + if (toService in TraceOptions) then MyDACopts := MyDACopts + [tfService]; + if (toMisc in TraceOptions) then MyDACopts := MyDACopts + [tfMisc]; + if (toParams in TraceOptions) then MyDACopts := MyDACopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := MyDACopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; +{$ENDIF ENABLE_SQLMonitor} + +{ TDAEMyQuery } + +function TDAEMyQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TMyQuery.Create(nil); + TMyQuery(result).ReadOnly := TRUE; + TMyQuery(result).Connection := TDAEMyConnection(aConnection).MyConnection; + TMyQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + +// GetLastAutoInc will work in case these options is commented +// TMyQuery(result).FetchAll := False; +// TMyQuery(result).Unidirectional := True; +end; + +function TDAEMyQuery.DoExecute: integer; +begin + TMyQuery(Dataset).Execute; + result := TMyQuery(Dataset).RowsAffected; +end; + +function TDAEMyQuery.DoGetSQL: string; +begin + result := TMyQuery(Dataset).SQL.Text; +end; + +procedure TDAEMyQuery.DoPrepare(Value: boolean); +begin + // Do not do inherited DoPrepare for MySQL. + {with TMyQuery(Dataset) do begin + if not Options.Direct then Prepared := Value; + end;} +end; + +procedure TDAEMyQuery.DoSetSQL(const Value: string); +begin + TMyQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMyQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMyQuery(Dataset).Params); +end; + +procedure TDAEMyQuery.GetParamValues(AParams: TDAParamCollection); +var + i: integer; + par: uDAInterfaces.TDAParam; + inpar: TParam; +begin + for i := 0 to (AParams.Count - 1) do begin + par := AParams[i]; + inpar := TMyQuery(Dataset).Params.ParamByName(par.Name); + par.Value := inpar.Value; + end; +end; + +procedure TDAEMyQuery.ClearParams; +begin + inherited; + TMyQuery(Dataset).Params.Clear; +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TMyStoredProc.Create(nil); + TMyStoredProc(result).Connection := TDAEMyConnection(aConnection).MyConnection; +end; + +function TDAEADOStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:= DoExecute; + GetParamValues(GetParams); +end; + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TMyStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TMyStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMyStoredProc(Dataset).Params); +end; + +procedure TDAEADOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: DBAccess.TDAParam; +begin + for i := 0 to TMyStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TMyStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +exports + GetDriverObject name func_GetDriverObject; + +procedure TDAEADOStoredProcedure.RefreshParams; +begin + TMyStoredProc(Dataset).Prepare; + RefreshParamsStd(TMyStoredProc(DataSet).Params); +end; + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + TMyStoredProc(Dataset).ExecProc; + Result := -1; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas new file mode 100644 index 0000000..bc9702a --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAMySQLDACDriver.pas @@ -0,0 +1,366 @@ +unit uDAMySQLDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_MySQLDACDriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + uROBinaryHelpers, uDAUtils, mySQLAccess, mySQLDbTables, mySQLTypes, uDAMySQLInterfaces; + +type { TDAMySQLDACDriver } + TDAMySQLDacDriver = class(TDADriverReference) + end; + + { TDAEMySQLDacDriver } + TDAEMySQLDacDriver = class(TDAMySQLDriver) + private + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + end; + + { TDAEMyConnection } + TDAEMySQLDacConnection = class(TDAMySQLConnection, IDACanQueryDatabaseNames,IDAMySQLConnection) + private + function GetConnection: TmySQLDatabase; + + protected + function GetTableSchema: string; override; + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + property Connection: TmySQLDatabase read GetConnection; + public + end; + + { TDAEMySQLDacQuery } + TDAEMySQLDacQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEMySQLDacStoredProcedure } + TDAEMySQLDacStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, uDAMacroProcessors; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAMySQLDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEMySQLDacDriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + +{ TDAEMySQLDacConnection } + +function TDAEMySQLDacConnection.DoBeginTransaction: integer; +begin + Connection.StartTransaction; + result := 0; +end; + +procedure TDAEMySQLDacConnection.DoCommitTransaction; +begin + Connection.Commit; +end; + +function TDAEMySQLDacConnection.GetConnection: TmySQLDatabase; +begin + result := TmySQLDatabase(inherited ConnectionObject); +end; + +function TDAEMySQLDacConnection.CreateCustomConnection: TCustomConnection; +begin + result := TmySQLDatabase.Create(nil); + TmySQLDatabase(result).LoginPrompt := false; +end; + +function TDAEMySQLDacConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMySQLDacQuery; +end; + +function TDAEMySQLDacConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEMySQLDacStoredProcedure; +end; + + +procedure TDAEMySQLDacConnection.DoRollbackTransaction; +begin + Connection.Rollback; +end; + +function TDAEMySQLDacConnection.DoGetInTransaction: boolean; +begin + result := Connection.InTransaction +end; + + + +procedure TDAEMySQLDacConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; +begin + inherited; + + with aConnStrParser do begin + Connection.DatabaseName := Database; + + Connection.Host := Server; + + if (Self.UserID <> '') then + Connection.Username := Self.UserID + else + Connection.Username := UserID; + + if (Self.Password <> '') then + Connection.UserPassword := Self.Password + else + Connection.UserPassword := Password; + if AuxParams['Port'] <> '' then Connection.Port := StrToIntDef(AuxParams['Port'],3306); + + for i := 0 to AuxParamsCount -1 do + begin + if SameText(AuxParamNames[i], 'Port') then continue; + if AuxParams[AuxParamNames[i]] <> '' then + Connection.Params.Add(AuxParamNames[i]+'='+AuxParams[AuxParamNames[i]]); + end; + end; +end; + + +function TDAEMySQLDacConnection.GetTableSchema: string; +begin + Result:=Connection.DatabaseName; +end; + +{ TDAEMySQLDacDriver } + + +function TDAEMySQLDacDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMySQLDacConnection; +end; + +function TDAEMySQLDacDriver.GetDescription: string; +begin + result := 'MicroOlap DAC for MySQL Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEMySQLDacDriver.GetDriverID: string; +begin + result := 'MySQLDAC'; +end; + + +{ TDAEMySQLDacQuery } + +procedure TDAEMySQLDacQuery.ClearParams; +begin + inherited; + TmySQLQuery(Dataset).Params.Clear; +end; + +function TDAEMySQLDacQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TmySQLQuery.Create(nil); + + TmySQLQuery(result).RequestLive := false; + TmySQLQuery(result).UniDirectional:=True; + TMySqlQuery(result).Database := TDAEMySQLDacConnection(aConnection).Connection; +end; + +function TDAEMySQLDacQuery.DoExecute: integer; +begin + TmySQLQuery(Dataset).ExecSQL; + result := TmySQLQuery(Dataset).RowsAffected; +end; + +function TDAEMySQLDacQuery.DoGetSQL: string; +begin + result := TmySQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEMySQLDacQuery.DoPrepare(Value: boolean); +begin + TmySQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEMySQLDacQuery.DoSetSQL(const Value: string); +begin + TmySQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMySQLDacQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TmySQLQuery(Dataset).Params); +end; + +procedure TDAEMySQLDacQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TmySQLQuery(Dataset).Params); +end; + + +{ TDAEADOStoredProcedure } + +function TDAEMySQLDacStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TmySQLStoredProc.Create(nil); + TmySQLStoredProc(result).Database := TDAEMySQLDacConnection(aConnection).Connection; +end; + +function TDAEMySQLDacStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: TmySQLSPParam; +begin + _params := GetParams; + + with TmySQLStoredProc(Dataset) do begin + for i := 0 to (Params.Count-1) do begin + lParam:=Params[i]; + if (lParam.ParamType in [ptInput, ptInputOutput]) then + lParam.Value := _params.ParamByName(lParam.Name).Value; + end; + + Result:= DoExecute; + + for i := 0 to (Params.Count-1) do begin + lParam:=Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + _params.ParamByName(lParam.Name).Value := lParam.Value; + end; + end; +end; + +function TDAEMySQLDacStoredProcedure.GetStoredProcedureName: string; +begin + Result := TmySQLStoredProc(Dataset).ProcedureName; +end; + +procedure TDAEMySQLDacStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TmySQLStoredProc(Dataset).ProcedureName := Name; +end; + +procedure TDAEMySQLDacStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TmySQLStoredProc(Dataset).Params); +end; + +procedure TDAEMySQLDacStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TmySQLStoredProc(Dataset).Params); +end; + +procedure TDAEMySQLDacStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TmySQLStoredProc(Dataset).Params); +end; + +exports GetDriverObject name func_GetDriverObject; + +function TDAEMySQLDacStoredProcedure.DoExecute: integer; +begin + TmySQLStoredProc(Dataset).ExecProc; + result := -1; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr new file mode 100644 index 0000000..52a0cec Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.dcr differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas new file mode 100644 index 0000000..5d82280 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDANexusDBDriver.pas @@ -0,0 +1,1149 @@ +unit uDANexusDBDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ (c)opyright Nexus Database Systems Pty. Ltd. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +interface + +uses + Classes, + DB, + + uDAEngine, + uDAInterfaces, + uROClasses, + + nxllMemoryManager, + nxllSync, + nxllComponent, + nxllTransport, + + nxsdServerEngine, + + nxdb, + + {$IFNDEF DataAbstract_NexusDBPack} + nxptBasePooledTransport, + nxtwWinsockTransport, + nxtnNamedPipeTransport, + + nxreRemoteServerEngine, + {$ENDIF} + + nxsrSqlEngineBase, + nxsrServerEngine, + + nxsqlEngine, + + //nx1xAllEngines, + nxseAllEngines, // // NXDB2: Renamed + uDAUtils; + +type + TDANexusDBDriver = class(TDADriverReference) + end; + + INexusDBConnection = interface + ['{DFF41623-A766-44C0-A61A-CC18FB80CAE3}'] + end; + + INexusDBDriver = interface + ['{CFE4B5BB-3C38-40BF-BE57-5BE3C627A6C3}'] + procedure RegisterServerEngine(aServerEngine: TnxBaseServerEngine; + const aName: string); safecall; + + procedure UnregisterServerEngine(aServerEngine: TnxBaseServerEngine); overload; safecall; + procedure UnregisterServerEngine(const aName: string); overload; safecall; + end; + + TNexusDBConnection = class; + + TNexusDBBaseEngineContainer = class(TnxObject) + protected {private} + becServerName: string; + + becConnectionsHead : TNexusDBConnection; + becConnectionsTail : TNexusDBConnection; + protected + function becGetEngine: TnxBaseServerEngine; virtual; abstract; + public + constructor Create(aServerName: string); + destructor Destroy; override; + + procedure CheckedFree; virtual; + + property Engine: TnxBaseServerEngine + read becGetEngine; + end; + + TNexusDBConnection = class(TDAConnectionWrapper) + protected {private} + conEngineContainer : TNexusDBBaseEngineContainer; + conEngineContainerNext : TNexusDBConnection; + conEngineContainerPrev : TNexusDBConnection; + conEngineContainerAdded : Boolean; + + conSession : TnxSession; + conDatabase : TnxDatabase; + + procedure conSetEngineContainer(aContainer: TNexusDBBaseEngineContainer); + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + + procedure conAddToEngineContainer; + procedure conRemoveFromEngineContainer; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + property EngineContainer: TNexusDBBaseEngineContainer read conEngineContainer write conSetEngineContainer; + property Session: TnxSession read conSession; + property Database: TnxDatabase read conDatabase; + end; + + TDAENexusDBDriver = class(TDAEDriver, INexusDBDriver) + protected {private} + nxdEnginesPadlock: TnxPadlock; + nxdEngines: TStringList; + protected + function GetConnectionClass: TDAEConnectionClass; override; + + { IDADriver } + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultCustomParameters: string; override; safecall; + { INexusDBDriver } + procedure RegisterServerEngine(aServerEngine: TnxBaseServerEngine;const aName: string); safecall; + + procedure UnregisterServerEngine(aServerEngine: TnxBaseServerEngine); overload; safecall; + procedure UnregisterServerEngine(const aName: string); overload; safecall; + function GetDefaultConnectionType(const AuxDriver: string): string; override; safecall; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + end; + + { TDAENexusDBConnection } + TDAENexusDBConnection = class(TDAEConnection, INexusDBConnection) + private + dacConnection: TNexusDBConnection; + protected + { IDAConnection } + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject : TCustomConnection); override; + function DoBeginTransaction: Integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: Boolean; override; + + procedure DoGetTableNames(out aList: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + procedure DoGetTableFields(const aTableName : string; + out aFields : TDAFieldCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAENexusDBQuery } + TDAENexusDBQuery = class(TDAEDataset, IDAMustSetParams) + private + protected + function CreateDataset(aConnection: TDAEConnection): TDataSet; override; + procedure ClearParams; override; + function DoExecute: Integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: Boolean); override; + + { IDAMustSetParams } + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAENexusStoredProcedure } + TDAENexusStoredProcedure = class(TDAEStoredProcedure, IDAStoredProcedure, IDAMustSetParams) + protected + // Internal + // function DoGetStoredProcedureName: string; override; + // procedure DoSetStoredProcedureName(const Name: string); override; + + // IDAStoredProcedure + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; safecall; + function DoGetSQL: string; override; safecall; + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +const + Nexus_DriverType = 'Nexus'; +implementation + +uses + SysUtils, + + nxllUtils,nxsdTypes,nxsqlBase, + + uDADriverManager, + uDARes, + uDAMacroProcessors, + + TypInfo; + +const + csUrlSeperator = '://'; + + csEmbedded = 'embedded'; + csRegistered = 'registered'; + csEmbeddedDefault = 'embedded://default'; + + csAlias = 'alias'; + csPath = 'path'; + + csNexusDB = 'NexusDB'; + csNexusDBDriver = 'NexusDB Driver'; + +resourcestring + rsEmbeddedOnly = ' [embedded only]'; + rsThisDriverOnlySupportsEmbeddedServerEngines = 'This driver only supports embedded server engines. Connections to remote server engines require a full NexusDB license.'; + rsNoProtocolHasBeenSpecified = 'No protocol has been specified'; + rsNoServerEngineHasBeenRegisteredAs = 'No Server Engine has been registered as "%s"'; + rsNoTransportAvailableForProtocol = 'No transport available for protocol "%s"'; + rsUnknownDatabaseType = 'Unknown database type "%s"'; + +var + _driver : TDAENexusDBDriver = nil; + +{===Register===================================================================} +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDANexusDBDriver]); +end; +{==============================================================================} + + + +{===GetDriverObject============================================================} +{$IFDEF DataAbstract_SchemaModelerOnly}{$INCLUDE DataAbstract_SchemaModelerOnly.inc}{$ENDIF DataAbstract_SchemaModelerOnly} +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + Result := nil; + Exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAENexusDBDriver.Create(nil); + Result := _driver; +end; +{==============================================================================} + + + +{===TNexusDBBaseEngineContainer================================================} +procedure TNexusDBBaseEngineContainer.CheckedFree; +begin + if not Assigned(becConnectionsHead) then + Free; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBBaseEngineContainer.Create(aServerName: string); +begin + becServerName := aServerName; + + inherited Create; + + _driver.nxdEnginesPadlock.Lock; + try + _driver.nxdEngines.AddObject(aServerName, Self); + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{------------------------------------------------------------------------------} +destructor TNexusDBBaseEngineContainer.Destroy; +var + i : Integer; +begin + if Assigned(_driver) then begin + _driver.nxdEnginesPadlock.Lock; + try + with _driver.nxdEngines do + if Find(becServerName, i) and (Objects[i] = Self) then + Delete(i); + while Assigned(becConnectionsHead) do try + becConnectionsHead.EngineContainer := nil; + except end; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + end; + + inherited; +end; +{==============================================================================} + + + +{===TNexusDBEmbeddedEngineContainer============================================} +type + TNexusDBEmbeddedEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + eecServerEngine: TnxServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName: string); + destructor Destroy; override; + + procedure CheckedFree; override; + end; +function TNexusDBEmbeddedEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := eecServerEngine; +end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +procedure TNexusDBEmbeddedEngineContainer.CheckedFree; +begin + if not SameText(becServerName, csEmbeddedDefault) then + inherited; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBEmbeddedEngineContainer.Create(aServerName: string); +begin + eecServerEngine := TnxServerEngine.Create(nil); + eecServerEngine.SqlEngine := TnxSqlEngine.Create(eecServerEngine); + eecServerEngine.Open; + + inherited Create(aServerName); +end; +{------------------------------------------------------------------------------} +destructor TNexusDBEmbeddedEngineContainer.Destroy; +begin + inherited; + FreeAndNil(eecServerEngine); +end; +{==============================================================================} + + + +{$IFNDEF DataAbstract_NexusDBPack} +{==============================================================================} +type + TNexusDBRemoteEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + recTransport: TnxBaseTransport; + recServerEngine: TnxRemoteServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName, aAuxParamsString: string; + aTransportClass: TnxBaseTransportClass); + destructor Destroy; override; + end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +function TNexusDBRemoteEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := recServerEngine; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBRemoteEngineContainer.Create(aServerName, aAuxParamsString: string; + aTransportClass: TnxBaseTransportClass); +var + S, + N, + V : string; + AuxParams : IROStrings; + i : integer; + + procedure SetProperty(Instance: TObject; const Prefix, Name, Value: string); + begin + if (Pos(Prefix, Name) = 1) then + begin + SetPropValue(Instance, + Copy(Name, Length(Prefix) + 1, Length(Name)), + Value); + end; + end; + +begin + S := aServerName; + Delete(S, 1, Pos(csUrlSeperator, S) + 2); + + AuxParams := ListStringElements(aAuxParamsString); + + recTransport := aTransportClass.Create(nil); + recTransport.ServerName := S; + + recServerEngine := TnxRemoteServerEngine.Create(nil); + recServerEngine.Transport := recTransport; + + for i := 0 to AuxParams.Count-1 do + begin + N := AuxParams.Names[i]; + V := AuxParams.Values[AuxParams.Names[i]]; + SetProperty(recTransport, 'Transport.', N, V); + SetProperty(recServerEngine, 'Server.', N, V); + end; + + recTransport.Open; + recServerEngine.Open; + + inherited Create(aServerName); +end; +{------------------------------------------------------------------------------} +destructor TNexusDBRemoteEngineContainer.Destroy; +begin + inherited; + FreeAndNil(recServerEngine); + FreeAndNil(recTransport); +end; +{==============================================================================} +{$ENDIF} + + + +{===TNexusDBRegisteredEngineContainer==========================================} +type + TNexusDBRegisteredEngineContainer = class(TNexusDBBaseEngineContainer) + protected {private} + regecServerEngine: TnxBaseServerEngine; + protected + function becGetEngine: TnxBaseServerEngine; override; + public + constructor Create(aServerName: string; + aServerEngine: TnxBaseServerEngine); + + procedure CheckedFree; override; + end; +{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} +function TNexusDBRegisteredEngineContainer.becGetEngine: TnxBaseServerEngine; +begin + Result := regecServerEngine; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBRegisteredEngineContainer.CheckedFree; +begin + {never} +end; +{------------------------------------------------------------------------------} +constructor TNexusDBRegisteredEngineContainer.Create(aServerName: string; + aServerEngine: TnxBaseServerEngine); +begin + regecServerEngine := aServerEngine; + inherited Create(aServerName); +end; +{==============================================================================} + + + +{===TNexusDBConnection=========================================================} +procedure TNexusDBConnection.conAddToEngineContainer; +begin + if conEngineContainerAdded then + Exit; + if not Assigned(conEngineContainer) then + Exit; + + _driver.nxdEnginesPadlock.Lock; + try + conEngineContainerPrev := conEngineContainer.becConnectionsTail; + conEngineContainer.becConnectionsTail := Self; + if Assigned(conEngineContainerPrev) then + conEngineContainerPrev.conEngineContainerNext := Self; + if not Assigned(conEngineContainer.becConnectionsHead) then + conEngineContainer.becConnectionsHead := Self; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + + conEngineContainerAdded := True; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.conRemoveFromEngineContainer; +begin + if not conEngineContainerAdded then + Exit; + + _driver.nxdEnginesPadlock.Lock; + try + if Assigned(conEngineContainerNext) then + conEngineContainerNext.conEngineContainerPrev := conEngineContainerPrev + else + if conEngineContainer.becConnectionsTail = Self then + conEngineContainer.becConnectionsTail := conEngineContainerPrev; + + if Assigned(conEngineContainerPrev) then + conEngineContainerPrev.conEngineContainerNext := conEngineContainerNext + else + if conEngineContainer.becConnectionsHead = Self then + conEngineContainer.becConnectionsHead := conEngineContainerNext; + + conEngineContainerNext := nil; + conEngineContainerPrev := nil; + + conEngineContainer.CheckedFree; + conEngineContainer := nil; + finally + _driver.nxdEnginesPadlock.Unlock; + end; + conEngineContainerAdded := False; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.conSetEngineContainer(aContainer: TNexusDBBaseEngineContainer); +begin + if conEngineContainer <> aContainer then begin + conSession.Close; + conSession.ServerEngine := nil; + + conRemoveFromEngineContainer; + + conEngineContainer := aContainer; + if Assigned(conEngineContainer) then + conSession.ServerEngine := conEngineContainer.Engine; + + conAddToEngineContainer; + end; +end; +{------------------------------------------------------------------------------} +constructor TNexusDBConnection.Create(aOwner: TComponent); +begin + inherited; + + conSession := TnxSession.Create(Self); + conDatabase := TnxDatabase.Create(Self); + conDatabase.Session := conSession; +end; +{------------------------------------------------------------------------------} +destructor TNexusDBConnection.Destroy; +begin + EngineContainer := nil; + inherited; +end; +{------------------------------------------------------------------------------} +function TNexusDBConnection.GetConnected: Boolean; +begin + Result := conDatabase.Connected; +end; +{------------------------------------------------------------------------------} +procedure TNexusDBConnection.SetConnected(Value: Boolean); +begin + if (csDestroying in ComponentState) then Exit; + + try + conSession.Active := Value; + conDatabase.Connected := Value; + except + conSession.Active := False; + conDatabase.Connected := False; + raise; + end; +end; +{==============================================================================} + + + +{===TDAENexusDBDriver==========================================================} +constructor TDAENexusDBDriver.Create(aOwner: TComponent); +begin + inherited; + nxdEnginesPadlock := TnxPadlock.Create; + nxdEngines := TStringList.Create; +end; +{------------------------------------------------------------------------------} +destructor TDAENexusDBDriver.Destroy; +var + i : Integer; +begin + if Assigned(nxdEnginesPadlock) then begin + nxdEnginesPadlock.Lock; + try + if Assigned(nxdEngines) then begin + for i := Pred(nxdEngines.Count) downto 0 do + nxdEngines.Objects[i].Free; + nxdEngines.Clear; + end; + finally + nxdEnginesPadlock.Unlock; + end; + end; + inherited; + FreeAndNil(nxdEnginesPadlock); + FreeAndNil(nxdEngines); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + {$IFDEF DataAbstract_NexusDBPack} + Result := [doDatabaseName]; + {$ELSE} + Result := [doServerName, doDatabaseName, doLogin, doCustom]; + {$ENDIF} +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetConnectionClass: TDAEConnectionClass; +begin + Result := TDAENexusDBConnection; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + Result:=Nexus_DriverType; +end; + +function TDAENexusDBDriver.GetDefaultCustomParameters: string; +begin + Result:=''; +end; + +function TDAENexusDBDriver.GetDescription: string; +begin + Result := csNexusDBDriver + {$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF} + {$IFDEF DataAbstract_NexusDBPack} + rsEmbeddedOnly{$ENDIF}; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBDriver.GetDriverID: string; +begin + Result := csNexusDB; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.RegisterServerEngine(aServerEngine : TnxBaseServerEngine; + const aName : string); +begin + TNexusDBRegisteredEngineContainer.Create(csRegistered + csUrlSeperator + aName, aServerEngine); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.UnregisterServerEngine(aServerEngine : TnxBaseServerEngine); +var + i : Integer; +begin + _driver.nxdEnginesPadlock.Lock; + try + for i := Pred(_driver.nxdEngines.Count) downto 0 do + if _driver.nxdEngines.Objects[i] is TNexusDBRegisteredEngineContainer then + if TNexusDBRegisteredEngineContainer(_driver.nxdEngines.Objects[i]).regecServerEngine = aServerEngine then + _driver.nxdEngines.Objects[i].Free; + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBDriver.UnregisterServerEngine(const aName : string); +var + i : Integer; +begin + _driver.nxdEnginesPadlock.Lock; + try + if _driver.nxdEngines.Find(csRegistered + csUrlSeperator + aName, i) then + _driver.nxdEngines.Objects[i].Free; + finally + _driver.nxdEnginesPadlock.Unlock; + end; +end; +{==============================================================================} + + + +{===TDAENexusDBConnection======================================================} +function TDAENexusDBConnection.CreateCustomConnection: TCustomConnection; +begin + Result := TNexusDBConnection.Create(nil); + dacConnection := TNexusDBConnection(Result); +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + Result := TOracleMacroProcessor.Create; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject : TCustomConnection); +var + S, T : string; + i : Integer; + sl : TStringList; + tpc : TnxBaseTransportClass; +begin + inherited; + + with aConnStrParser do begin + (aConnectionObject as TNexusDBConnection).Session.Close; + + if Self.UserID <> '' then + dacConnection.Session.Username := Self.UserID + else + dacConnection.Session.Username := UserID; + + if Self.Password <> '' then + dacConnection.Session.Password := Self.Password + else + dacConnection.Session.Password := Password; + + Server := Trim(Server); + + if Server = '' then + Server := csEmbeddedDefault; + + _driver.nxdEnginesPadlock.Lock; + try + S := Server; + SetLength(S, nxMaxI32(0, Pred(Pos(csUrlSeperator, S)))); + + if S = '' then + raise EDADriverException.Create(rsNoProtocolHasBeenSpecified); + + if not _driver.nxdEngines.Find(Server, i) then begin + + if SameText(S, csEmbedded) then begin + (aConnectionObject as TNexusDBConnection).EngineContainer := + TNexusDBEmbeddedEngineContainer.Create(Server); + end else if SameText(S, csRegistered) then begin + raise EDADriverException.CreateFmt(rsNoServerEngineHasBeenRegisteredAs, [Server]); + end else begin + {$IFDEF DataAbstract_NexusDBPack} + raise EDADriverException.Create(rsThisDriverOnlySupportsEmbeddedServerEngines); + {$ELSE} + sl := TStringList.Create; + try + TnxBaseDirectTransport.GetRegisteredClasses(sl); + tpc := nil; + for i := 0 to Pred(sl.Count) do + if SameText(S, TnxBaseTransportClass(sl.Objects[i]).ProtocolName) then begin + tpc := TnxBaseTransportClass(sl.Objects[i]); + Break; + end; + if not Assigned(tpc) then + raise EDADriverException.CreateFmt(rsNoTransportAvailableForProtocol, [S]); + (aConnectionObject as TNexusDBConnection).EngineContainer := + TNexusDBRemoteEngineContainer.Create(Server, AuxParamsString, tpc); + finally + FreeAndNil(sl); + end; + {$ENDIF} + end; + end else + (aConnectionObject as TNexusDBConnection).EngineContainer := + (_driver.nxdEngines.Objects[i] as TNexusDBBaseEngineContainer); + finally + _driver.nxdEnginesPadlock.Unlock; + end; + + Database := Trim(Database); + + S := Database; + SetLength(S, nxMaxI32(0, Pred(Pos(csUrlSeperator, S)))); + if Pos(csUrlSeperator, Database) > 0 then + T := Copy(Database, Length(S) + 4, High(Integer)) + else + T := Database; + + if S = '' then + if (aConnectionObject as TNexusDBConnection).EngineContainer.becGetEngine is TnxServerEngine then + S := csPath + else + S := csAlias; + + if SameText(S, csAlias) then + (aConnectionObject as TNexusDBConnection).Database.AliasName := T + else if SameText(S, csPath) then + (aConnectionObject as TNexusDBConnection).Database.AliasPath := T + else + raise EDADriverException.CreateFmt(rsUnknownDatabaseType, [S]); + + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoBeginTransaction: Integer; +begin + Result := -1; + dacConnection.Database.StartTransaction; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoCommitTransaction; +begin + dacConnection.Database.Commit; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoGetInTransaction: Boolean; +begin + Result := dacConnection.Database.InTransaction; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoGetTableFields(const aTableName : string; + out aFields : TDAFieldCollection); +var + i : Integer; + fld: TField; + dafld: TDAField; +begin + dacConnection.Open; + + with TnxQuery.Create(nil) do try + SQL.Text := 'SELECT * FROM "' + aTableName + '" WHERE ''c'' <> ''c'''; + Database := dacConnection.Database; + Open; + + aFields := TDAFieldCollection.Create(nil); + try + for i := 0 to Pred(FieldCount) do begin + fld:=Fields.Fields[i]; + with aFields.Add do begin + Name := fld.FieldName; + Size := fld.Size; + Required := fld.Required; + ReadOnly := fld.ReadOnly; + Calculated := fld.Calculated; + DisplayWidth := fld.DisplayWidth; + DisplayLabel := fld.DisplayLabel; + DataType := VCLTypeToDAType(fld.DataType); + if DataType = datDecimal then begin + case fld.DataType of + ftBCD: begin + DecimalPrecision:= TBCDField(fld).Precision; + DecimalScale:= TBCDField(fld).Size; + end; + ftFMTBCD: begin + DecimalPrecision:= TFMTBCDField(fld).Precision; + DecimalScale:= TFMTBCDField(fld).Size; + end; + end; + end; + end; + end; + except + FreeAndNil(aFields); + raise; + end; + close; + //pk + sql.Text := 'SELECT SEGMENT_FIELD FROM #INDEXFIELDS '+ + 'WHERE INDEX_NAME = ''$SQL$PRIMARYKEY$INDEX#0'' AND TABLE_NAME = '''+aTableName+''' '+ + 'ORDER BY TABLE_NAME, SEGMENT_INDEX'; + Open; + while not Eof do begin + daFld := aFields.FindField(Fields[0].AsString); + if dafld <> nil then begin + daFld.InPrimaryKey := True; + dafld.Required := True; + end; + Next; + end; + // field description + close; + sql.Text := 'SELECT FIELD_NAME, FIELD_DESC, FIELD_TYPE_SQL FROM #FIELDS WHERE TABLE_NAME = '''+aTableName+''' ORDER BY FIELD_INDEX'; + Open; + while not Eof do begin + daFld := aFields.FindField(Fields[0].AsString); + if dafld <> nil then begin + if not Fields[1].IsNull then daFld.Description := Fields[1].AsString; + if Fields[2].AsString = 'AUTOINC' then begin + dafld.DataType:= datAutoInc; + dafld.GeneratorName := aTableName; + end; + end; + Next; + end; + finally + Free; + end; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoGetTableNames(out aList: IROStrings); +begin + inherited; + dacConnection.Database.Open; + dacConnection.Database.GetTableNames(aList.Strings); +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBConnection.DoRollbackTransaction; +begin + dacConnection.Database.Rollback; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAENexusDBQuery; +end; + +function TDAENexusDBConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result:=TDAENexusStoredProcedure; +end; + +{------------------------------------------------------------------------------} +function TDAENexusDBConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +var + lvalue: cardinal; +begin + // dacConnection.Database.GetAutoIncValue(GeneratorName, Cardinal(Result)); // NXDB2: Changed + dacConnection.Database.GetAutoIncValue(GeneratorName, + dacConnection.Session.Password, + lValue); + result := lValue; +// Dec(Result); +end; +{==============================================================================} + + + +{===TDAENexusDBQuery===========================================================} +function TDAENexusDBQuery.CreateDataset(aConnection: TDAEConnection): TDataSet; +begin + Result := TnxQuery.Create(nil); + with TnxQuery(Result) do begin + Database := TDAENexusDBConnection(aConnection).dacConnection.Database; + RequestLive := False; + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBQuery.DoExecute: Integer; +begin + with TnxQuery(DataSet) do begin + ExecSQL; + Result := RowsAffected; + end; +end; +{------------------------------------------------------------------------------} +function TDAENexusDBQuery.DoGetSQL: string; +begin + Result := TnxQuery(DataSet).SQL.Text +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.DoPrepare(Value: Boolean); +begin + TnxQuery(DataSet).Prepared := Value; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.DoSetSQL(const Value: string); +begin + TnxQuery(DataSet).SQL.Text := Value; +end; +{------------------------------------------------------------------------------} +procedure TDAENexusDBQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TnxQuery(DataSet).Params); +end; + +procedure TDAENexusDBQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TnxQuery(DataSet).Params); +end; + +procedure TDAENexusDBQuery.ClearParams; +begin + inherited; + TnxQuery(DataSet).Params.Clear; +end; + + +{==============================================================================} + +exports GetDriverObject Name func_GetDriverObject; + +procedure TDAENexusDBConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited; + dacConnection.Database.Open; + dacConnection.Database.GetStoredProcNames(List.Strings); +end; + + +{ TDAENexusStoredProcedure } + +function TDAENexusStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + Result := TnxStoredProc.Create(nil); + with TnxStoredProc(Result) do begin + Database := TDAENexusDBConnection(aConnection).dacConnection.Database; + RequestLive := False; + end; +end; + +function TDAENexusStoredProcedure.Execute: integer; +begin + SetParamValues(GetParams); + Result:=DoExecute; + GetParamValues(GetParams); +end; + +function TDAENexusStoredProcedure.DoGetSQL: string; +begin + Result:=''; +end; + +procedure TDAENexusStoredProcedure.DoSetSQL(const Value: string); +begin +// +end; + +procedure TDAENexusStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TnxStoredProc(Dataset).Params); +end; + +function TDAENexusStoredProcedure.GetStoredProcedureName: string; +begin + Result:=TnxStoredProc(Dataset).StoredProcName; +end; + +procedure TDAENexusStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TnxStoredProc(Dataset).Params); +end; + +procedure TDAENexusStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TnxStoredProc(Dataset).StoredProcName:=Name; +end; + +procedure TDAENexusStoredProcedure.RefreshParams; +begin + TnxStoredProc(DataSet).RefreshParam; + RefreshParamsStd(TnxStoredProc(DataSet).Params); +end; + +procedure TDAENexusStoredProcedure.DoPrepare(Value: boolean); +begin + TnxStoredProc(DataSet).Prepared:=Value; +end; + + +function TDAENexusStoredProcedure.DoExecute: integer; +begin + TnxStoredProc(Dataset).ExecProc; + Result:=-1; +end; + + +function TDAENexusDBConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or IsReservedName(iIdentifier); +end; + +procedure TDAENexusDBConnection.DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); +const + sFK_SQL = + 'SELECT fkc.fk_constraint_name, fkc.fk_constraint_table_name as table_name, fkc.fk_constraint_references_table_name as target_table, '+ + 'srccols.fk_constraint_referencing_columns_name as srccol, destcols.fk_constraint_referenced_columns_name as destcol '+ + 'from #foreignkey_constraints fkc '+ + 'join #foreignkey_constraints_referencing_columns srccols on (fkc.fk_constraint_name = srccols.fk_constraint_name and fkc.fk_constraint_table_name = srccols.fk_constraint_table_name) '+ + 'join #foreignkey_constraints_referenced_columns destcols on (fkc.fk_constraint_name = destcols.fk_constraint_name and fkc.fk_constraint_table_name = destcols.fk_constraint_table_name '+ + 'and srccols.fk_constraint_referencing_columns_index = destcols.fk_constraint_referenced_columns_index) '+ + 'order by fkc.fk_constraint_table_name, fkc.fk_constraint_name, srccols.fk_constraint_referencing_columns_index'; +var + lCurrConstraint: string; + lCurrFK: TDADriverForeignKey; + Query: TnxQuery; +begin + inherited DoGetForeignKeys(ForeignKeys); + lCurrConstraint := ''; + lCurrFK := nil; + Query := TnxQuery.Create(nil); + try + Query.SQL.Text := sFK_SQL; + Query.Database := dacConnection.Database; + Query.Open; + + ForeignKeys.Clear; + while (not Query.EOF) do begin + + if lCurrConstraint <> Query.Fields[0].AsString then begin + lCurrConstraint := Query.Fields[0].AsString; + + lCurrFK := ForeignKeys.Add(); + with lCurrFK do begin + FKField := TrimRight(Query.Fields[3].AsString); + PKField := TrimRight(Query.Fields[4].AsString); + FKTable := TrimRight(Query.Fields[1].AsString); + PKTable := TrimRight(Query.Fields[2].AsString); + end; + end else begin + with lCurrFK do begin + FKField := FKField + ';' + TrimRight(Query.Fields[4].AsString); + PKField := PKField + ';' + TrimRight(Query.Fields[3].AsString); + end; + end; + Query.Next; + end; + finally + Query.Free; + end; + +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + try + _driver.Free; + except end; + _driver := nil; +end. + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas new file mode 100644 index 0000000..1086617 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAODACDriver.pas @@ -0,0 +1,677 @@ +unit uDAODACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_ODACDriver_Glyphs.res} + +{ + If you have the version with source code, uncomment the following conditional to + make this unit compile. +} + +{.$DEFINE SOURCECODEVERSION} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, Variants, + uDAOracleInterfaces, Ora, DBAccess, DASQLMonitor, OraSQLMonitor, OraSmart, uDAMacroProcessors, uDAUtils, OraClasses; + +type { TDAODACDriver } + TDAODACDriver = class(TDADriverReference) + end; + + { TDAEODACDriver } + TDAEODACDriver = class(TDAOracleDriver) + private + fMonitor: TOraSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnODACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; + function GetDefaultCustomParameters: string; override; + + public + end; + + { TDAEODACConnection } + TDAEODACConnection = class(TDAOracleConnection) + private + fConnection: TORASession; + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + public + function GetDatabaseNames: IROStrings; + end; + + { TDAEODACQuery } + TDAEODACQuery = class(TDAEDataset, IDAOracleDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function intVCLTypeToDAType(aFieldType: TFieldType; ASize: integer = 0; ADecimalPrecision: integer = 0; aDecimalScale: integer = 0): TDADataType;override; + procedure ClearParams; override; + // IDADataset + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + procedure DoSetActive(Value: boolean); override; + + // IOracleDataset + function GetLockMode: TDAOracleLockMode; + procedure SetLockMode(Value: TDAOracleLockMode); + function GetOptions: TDAOracleOptions; + procedure SetOptions(Value: TDAOracleOptions); + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEODACStoredProcedure } + TDAEODACStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function intVCLTypeToDAType(aFieldType: TFieldType; ASize: integer = 0; ADecimalPrecision: integer = 0; aDecimalScale: integer = 0): TDADataType;override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; + function Execute: integer; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAODACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEODACDriver.Create(nil); + result := _driver; +end; + + +procedure ReadODACParamValues(AParams: TDAParamCollection;aDACParams: TOraParams;pvSession: TOraSession); +var + i: integer; + lParam: TOraParam; + ms: IROStream; +begin + for i := 0 to aDACParams.Count - 1 do begin + lParam := aDACParams[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + if ord(lParam.DataType) = ftBFile then begin + ms := TROStream.Create; + lParam.AsBFile.SaveToStream(ms.Stream); + ms.Position:=0; + Aparams.ParamByName(lParam.Name).LoadFromStream(ms); + ms:=nil; + end + else + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + + +procedure WriteODACParamValues(InputParams: TDAParamCollection;OutputParams: TOraParams;pvSession: TOraSession); +var i : integer; + par : uDAInterfaces.TDAParam; + outpar : TOraParam; + ms: IROStream; + blobtype : TFieldType; + lvOraLob : TOralob; +begin + for i := 0 to (InputParams.Count-1) do begin + par := InputParams[i]; + outpar := OutputParams.ParamByName(par.Name); + + // If no blob type is specified, then gets the default field type. + // BlobType is only meaningful to Oracle. MSSQL works fine just setting the DataType + blobtype := BlobTypeMappings[par.BlobType]; + if (blobtype=ftUnknown) then blobtype := DADataTypesMappings[par.DataType]; + + case par.DataType of + datBlob : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := DADataTypesMappings[par.DataType]; + if par.ParamType <> daptOutput then begin + ms := TROStream.Create; + par.SaveToStream(ms); + ms.Position := 0; + lvOraLob := TOralob.Create(pvSession.OCISvcCtx); + try + lvOraLob.CreateTemporary(ltBlob); + if ms.Size>0 then lvOraLob.LoadFromStream(ms.Stream); + lvOraLob.WriteLob; + outpar.AsOraBLOB := lvOraLob; + finally + lvOraLob.Free; + end; + end; + + end; + datMemo : begin + outpar.ParamType := TParamType(par.ParamType); + outpar.DataType := ftMemo; + + // Only happens with Oracle + if (blobtype<>ftUnknown) then outpar.DataType := blobtype; + if par.ParamType <> daptOutput then outpar.Value := par.Value; + end; + else begin + outpar.ParamType := TParamType(par.ParamType); + case par.DataType of + datAutoInc : outpar.DataType := ftInteger; + datLargeAutoInc: outpar.DataType := ftLargeInt; + else + outpar.DataType := DADataTypesMappings[par.DataType]; + end; + if par.ParamType <> daptOutput then outpar.Value := par.Value; + end; + end; + end; +end; + +{ TDAEODACConnection } + +procedure TDAEODACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +begin + inherited; + + with aConnStrParser do begin + + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + + fConnection.Server := Server; + fConnection.ConnectPrompt := FALSE; + fConnection.Debug := (AuxParams['Debug']='1'); + + fConnection.Options.Net := AuxParams['Net'] = '1'; + end; +end; + +function TDAEODACConnection.DoBeginTransaction: integer; +begin + fConnection.StartTransaction; + result := 0; +end; + +procedure TDAEODACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +function TDAEODACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TORASession.Create(nil); + fConnection.LoginPrompt := FALSE; + + { ToDo: add a COnnectionString parameter to set + fConnection.Debug := TRUE; } + + result := fConnection; +end; + +function TDAEODACConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEODACQuery; +end; + +function TDAEODACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEODACStoredProcedure; +end; + +procedure TDAEODACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + +function TDAEODACConnection.DoGetInTransaction: boolean; +begin + result := fConnection.InTransaction +end; + +function TDAEODACConnection.GetDatabaseNames: IROStrings; +begin + Result := TROStrings.Create(); + fConnection.GetDatabaseNames(Result.Strings); +end; + + +{ TDAEODACDriver } + +function TDAEODACDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doLogin, doCustom]; +end; + +function TDAEODACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEODACConnection; +end; + +function TDAEODACDriver.GetDefaultCustomParameters: string; +begin + result := 'Net=0'; +end; + +function TDAEODACDriver.GetDescription: string; +begin + result := 'Core Lab ODAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEODACDriver.GetDriverID: string; +begin + result := 'ODAC'; +end; + +procedure TDAEODACDriver.GetAuxParams(const AuxDriver: string; out List: IROStrings); +begin + inherited; + List.Add('Net=0,1'); +end; + +procedure TDAEODACDriver.OnODACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEODACDriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TOraSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnODACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +{ TDAEODACQuery } + +function TDAEODACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TSmartQuery.Create(nil); + TSmartQuery(result).Debug := TDAEODACConnection(aConnection).fConnection.Debug; + TSmartQuery(result).ReadOnly := TRUE; + TSmartQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TSmartQuery(result).Unidirectional := True; + TSmartQuery(result).Session := TDAEODACConnection(aConnection).fConnection; +end; + +function TDAEODACQuery.DoGetSQL: string; +begin + result := TSmartQuery(Dataset).SQL.Text; +end; + +procedure TDAEODACQuery.DoSetSQL(const Value: string); +begin + TSmartQuery(Dataset).SQL.Text := Value; +end; + +function TDAEODACQuery.GetLockMode: TDAOracleLockMode; +begin + result := TDAOracleLockMode(TSmartQuery(Dataset).LockMode) +end; + +procedure TDAEODACQuery.SetLockMode(Value: TDAOracleLockMode); +begin + TSmartQuery(Dataset).LockMode := Ora.TLockMode(Value) +end; + +procedure TDAEODACQuery.SetOptions(Value: TDAOracleOptions); +var + {$IFDEF SOURCECODEVERSION} + dsopts: TOraDataSetOptions; + {$ELSE} + dsopts: TOraDataSetOptionsDS; + {$ENDIF} +begin + {$IFDEF SOURCECODEVERSION} + dsopts := TSmartQuery(Dataset).Options; + {$ELSE} + dsopts := TSmartQuery(Dataset).OptionsDS; + {$ENDIF} + + TSmartQuery(Dataset).DMLRefresh := True; // To get the output params when we exec SPs + dsopts.AutoClose := opAutoClose in Value; + dsopts.DefaultValues := opDefaultValues in Value; + dsopts.LongStrings := opLongStrings in Value; + dsopts.QueryRecCount := opQueryRecCount in Value; + dsopts.CacheLobs := opCacheLobs in Value; + dsopts.DeferredLobRead := opDeferredLobRead in Value; + dsopts.KeepPrepared := opKeepPrepared in Value; +end; + +function TDAEODACQuery.GetOptions: TDAOracleOptions; +var + {$IFDEF SOURCECODEVERSION} + dsopts: TOraDataSetOptions; + {$ELSE} + dsopts: TOraDataSetOptionsDS; + {$ENDIF} +begin + {$IFDEF SOURCECODEVERSION} + dsopts := TSmartQuery(Dataset).Options; + {$ELSE} + dsopts := TSmartQuery(Dataset).OptionsDS; + {$ENDIF} + + result := []; + + if dsopts.AutoClose then result := result + [opAutoClose]; + if dsopts.DefaultValues then result := result + [opDefaultValues]; + if dsopts.LongStrings then result := result + [opLongStrings]; + if dsopts.QueryRecCount then result := result + [opQueryRecCount]; + if dsopts.CacheLobs then result := result + [opCacheLobs]; + if dsopts.DeferredLobRead then result := result + [opDeferredLobRead]; + if dsopts.KeepPrepared then result := result + [opKeepPrepared]; +end; + +procedure TDAEODACQuery.DoPrepare(Value: boolean); +begin + TSmartQuery(Dataset).Prepared := Value +end; + +function TDAEODACQuery.DoExecute: integer; +begin + TSmartQuery(Dataset).ExecSQL; + result := TSmartQuery(Dataset).RowsAffected; +end; + +procedure TDAEODACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteODACParamValues(AParams, TSmartQuery(Dataset).Params, TSmartQuery(Dataset).Session); +end; + +procedure TDAEODACQuery.GetParamValues(AParams: TDAParamCollection); +begin + ReadODACParamValues(AParams, TSmartQuery(Dataset).Params, TSmartQuery(Dataset).Session) +end; + + +function ExtractTableName(aSQLStatement: string): string; +var sql: string; + idx, i, x: integer; +begin + result := ''; + + sql := UpperCase(aSQLStatement); + ReplaceChar(sql, [#13, #9, #10], #32); + + idx := Pos(' FROM ', sql); + if (idx=0) then Exit; + + for i := idx+6 to Length(sql) do begin + if (sql[i]<>#32) then begin + for x := i to Length(sql) do + if not (sql[x] in ['A'..'Z', '0'..'9', '.', '_']) then begin + result := Trim(Copy(sql, i, x-i)); + Exit; + end; + end; + end; +end; + +procedure TDAEODACQuery.DoSetActive(Value: boolean); +var willCreateFields: boolean; + fieldColl: TDAFieldCollection; + tableName: string; + fld: TDAField; + qry: TSmartQuery; +begin + fieldColl:=nil; // prevent warnings + willCreateFields := FALSE; + if Value then begin + fieldColl := inherited GetFields; + willCreateFields := fieldColl.Count=0; + end; + + inherited; + + if not willCreateFields then Exit; + + { Determines which ones are part of the PK } + tableName := UpperCase(ExtractTableName(DoGetSQL)); + + if (tableName='') then Exit; + qry := TSmartQuery.Create(NIL); + try + qry.Assign(Dataset); + qry.SQL.Text := Format( + 'SELECT cols.column_name, cols.position '+ + 'FROM all_constraints cons, all_cons_columns cols '+ + 'WHERE cols.table_name = ''%s'' AND cons.constraint_type = ''P'' AND cons.constraint_name = cols.constraint_name '+ + 'AND cons.owner = cols.owner ORDER BY cols.position', [tableName]); + qry.Open; + if (qry.RecordCount=0) then Exit; + + while not qry.Eof do try + fld := fieldColl.FindField(qry.Fields[0].AsString); + if (fld<>NIL) then begin + fld.InPrimaryKey := TRUE; + fld.Required := TRUE; + end; + finally + qry.Next; + end; + finally + qry.Free; + end; +end; + +function TDAEODACQuery.intVCLTypeToDAType(aFieldType: TFieldType; ASize: integer = 0; ADecimalPrecision: integer = 0; aDecimalScale: integer = 0): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + if ord(aFieldType) in [ftBFile] then aFieldType:=ftBlob; + with TSmartQuery(Dataset).Session do + if ord(aFieldType) in [ftNumber] then begin + if (Options.EnableIntegers) and (aDecimalScale = 0) and (ADecimalPrecision < IntegerPrecision) then aFieldType := ftInteger + else if (Options.EnableIntegers) and (aDecimalScale = 0) and (ADecimalPrecision < LargeIntPrecision) then aFieldType := ftLargeint + else if (Options.EnableNumbers) and (ADecimalPrecision > FloatPrecision) then aFieldType := ftFMTBcd + else aFieldType := ftFloat; + end; + Result:= inherited intVCLTypeToDAType(aFieldType,ASize,ADecimalPrecision,aDecimalScale); +end; + +procedure TDAEODACQuery.ClearParams; +begin + inherited; + TSmartQuery(Dataset).Params.Clear; +end; + +{ TDAEODACStoredProcedure } + +function TDAEODACStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TOraStoredProc.Create(nil); + TOraStoredProc(result).Debug := TDAEODACConnection(aConnection).fConnection.Debug; + TOraStoredProc(result).Session := TDAEODACConnection(aConnection).fConnection; +end; + +function TDAEODACStoredProcedure.Execute: integer; +var +// i: integer; + _params: TDAParamCollection; + // lParam: DBAccess.TDAParam; +begin + _params := GetParams; + setParamValues(_Params); +{ + with TOraStoredProc(Dataset) do begin + if (Params.Count <> _Params.Count) then TOraStoredProc(Dataset).PrepareSQL; + + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then + Params[i].Value := _params.ParamByName(Params[i].Name).Value; + + for i := 0 to (_params.Count - 1) do begin + lParam := Params.ParamByName(_params[i].Name); + if (_params[i].DataType = datString) and (_params[i].Size > 4000) and (lParam.ParamType in [ptOutput, ptInputOutput]) then + lParam.Size := _params[i].Size; + end; + end; +} + result := DoExecute; + GetParamValues(_Params); +end; + +function TDAEODACStoredProcedure.GetStoredProcedureName: string; +begin + result := TOraStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEODACStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TOraStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEODACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + if (AParams.Count <> TOraStoredProc(Dataset).Params.Count) then TOraStoredProc(Dataset).PrepareSQL; + WriteODACParamValues(AParams, TOraStoredProc(Dataset).Params, TOraStoredProc(Dataset).Session); +end; + +procedure TDAEODACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +begin + ReadODACParamValues(AParams, TOraStoredProc(Dataset).Params, TOraStoredProc(Dataset).Session) +end; + +procedure TDAEODACStoredProcedure.RefreshParams; +begin + TOraStoredProc(Dataset).PrepareSQL; + RefreshParamsStd(TOraStoredProc(Dataset).Params); +end; + +function TDAEODACStoredProcedure.intVCLTypeToDAType(aFieldType: TFieldType; ASize: integer = 0; ADecimalPrecision: integer = 0; aDecimalScale: integer = 0): TDADataType; +begin + if ord(aFieldType) in [ftTimeStampTZ,ftTimeStampLTZ] then aFieldType:=ftTimeStamp; + if ord(aFieldType) in [ftNumber] then aFieldType := ftFloat; + Result:= inherited intVCLTypeToDAType(aFieldType,ASize,ADecimalPrecision,aDecimalScale); +end; + +exports GetDriverObject name func_GetDriverObject; + +function TDAEODACStoredProcedure.DoExecute: integer; +begin + with TOraStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPgDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPgDACDriver.pas new file mode 100644 index 0000000..593a0ab --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPgDACDriver.pas @@ -0,0 +1,455 @@ +unit uDAPGDACDriver; +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_PgDACDriver_Glyphs.res} +interface + +uses + DB, Classes, + DBAccess, PgAccess, DASQLMonitor, PgSQLMonitor, + uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + uROBinaryHelpers, uDAUtils, uDAPostgresInterfaces; + +type + { TDAPgDACDriver } + TDAPgDACDriver = class(TDADriverReference) + end; + + { TDAEPgDACDriver } + TDAEPgDACDriver = class(TDAPostgresDriver) + private + fMonitor: TPgSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + procedure OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + + end; + + { TDAEMyConnection } + TDAEPgDACConnection = class(TDAEPostgresConnection) + private + fConnection: TPgConnection; + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + public + end; + + { TDAEPgDACQuery } + TDAEPgDACQuery = class(TDAEDataset,IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoPrepare(Value: boolean); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEPgDACStoredProcedure } + TDAEPgDACStoredProcedure = class(TDAEStoredProcedure,IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + + + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, Variants,TypInfo, + uDADriverManager, uDARes; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAPgDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEPgDacDriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + + +exports GetDriverObject name func_GetDriverObject; + + +{ TDAEPgDACDriver } + +procedure TDAEPgDACDriver.DoSetTraceOptions(TraceActive: boolean; + TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TPgSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnSDACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +procedure TDAEPgDACDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('Options.='); + List.Add('PoolingOptions.='); + List.Add('Port=5432'); + List.Add('SSLOptions.='); + List.Add(''); + List.Add('Consult to PgDAC documentation about Options, PoolingOptions and SSLOptions options.'); +end; + +function TDAEPgDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEPgDacConnection; +end; + +function TDAEPgDACDriver.GetDescription: string; +begin + result := 'Devart''s PostgreSQL Data Access Components'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEPgDACDriver.GetDriverID: string; +begin + Result := 'PgDAC'; +end; + +procedure TDAEPgDACDriver.OnSDACTrace(Sender: TObject; Text: string; + Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +{ TDAEPgDACConnection } + +function TDAEPgDACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TPgConnection.Create(nil); + fConnection.LoginPrompt := FALSE; + + result := fConnection; +end; + +procedure TDAEPgDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); +var + i: integer; + sName, sValue: string; +begin + inherited; + + with aConnStrParser do begin + fConnection.Database := Database; + + fConnection.Server := Server; + + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + + for i := 0 to AuxParamsCount -1 do begin + sName := AuxParamNames[i]; + sValue := AuxParams[sName]; + + if Pos('options.', AnsiLowerCase(sName)) = 1 then begin + sName := Copy(sName,9, Length(sName)-8); + SetPropValue(fConnection.Options, sName, sValue); + end + else if Pos('poolingoptions.', AnsiLowerCase(sName)) = 1 then begin + sName := Copy(sName,16, Length(sName)-15); + SetPropValue(fConnection.PoolingOptions, sName, sValue); + end + else if AnsiSameStr(sName, 'PORT') then begin + fConnection.Port := StrToIntDef(sValue,0); + end + else if Pos('ssloptions.', AnsiLowerCase(sName)) = 1 then begin + sName := Copy(sName,12, Length(sName)-11); + SetPropValue(fConnection.SSLOptions, sName, sValue); + end; + end; + end; +end; + +function TDAEPgDACConnection.DoBeginTransaction: integer; +begin + fConnection.StartTransaction; + result := 0; +end; + +procedure TDAEPgDACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +function TDAEPgDACConnection.DoGetInTransaction: boolean; +begin + Result := fConnection.InTransaction; +end; + +procedure TDAEPgDACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + + +function TDAEPgDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAEPgDACQuery; +end; + +function TDAEPgDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEPgDACStoredProcedure; +end; + +{ TDAEPgDACQuery } + +procedure TDAEPgDACQuery.ClearParams; +begin + inherited; + TPgQuery(Dataset).Params.Clear; +end; + +function TDAEPgDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TPgQuery.Create(nil); + + TPgQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TPgQuery(result).Unidirectional := True; + TPgQuery(result).ReadOnly := TRUE; + TPgQuery(result).Connection := TDAEPgDACConnection(aConnection).fConnection; +end; + +function TDAEPgDACQuery.DoExecute: integer; +begin + TPgQuery(Dataset).Execute; + result := TPgQuery(Dataset).RowsAffected; +end; + +function TDAEPgDACQuery.DoGetSQL: string; +begin + result := TPgQuery(Dataset).SQL.Text; +end; + +procedure TDAEPgDACQuery.DoPrepare(Value: boolean); +var + i: integer; + par: TPgParam; +begin + if Value and not TPgQuery(Dataset).Prepared and (TPgQuery(Dataset).ParamCount<>0) then begin + for I := 0 to GetParams.Count - 1 do begin + par:=TPgQuery(Dataset).ParamByName(GetParams[i].Name); + par.DataType:= DATypeToVCLType(GetParams[i].DataType); + if par.DataType = ftAutoInc then par.DataType:= ftInteger; + end; + end; + TPgQuery(Dataset).Prepared := Value; +end; + +procedure TDAEPgDACQuery.DoSetSQL(const Value: string); +begin + TPgQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEPgDACQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TPgParam; +begin + for i := 0 to TPgQuery(DataSet).Params.Count - 1 do begin + lParam:=TPgQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEPgDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TPgQuery(Dataset).Params, true); +end; + +{ TDAEPgDACStoredProcedure } + +function TDAEPgDACStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TPgStoredProc.Create(nil); + TPgStoredProc(result).Connection := TDAEPgDACConnection(aConnection).fConnection; +end; + +function TDAEPgDACStoredProcedure.DoExecute: integer; +begin + with TPgStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +function TDAEPgDACStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: uDAInterfaces.TDAParam; +begin + _params := GetParams; + + with TPgStoredProc(Dataset) do begin + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then begin + lParam := _params.ParamByName(Params[i].Name); + if (Params[i].DataType in [ftMemo, ftBlob, ftGraphic]) and VarIsArray(lParam.Value)then + Params[i].Value := VariantToAnsiString(lParam.Value) + else + Params[i].Value := lParam.Value; + end; + + result := DoExecute; + + for i := 0 to (_params.Count-1) do + if (_params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then _params[i].Value := params.ParamByName(_params[i].Name).Value; + end; +end; + +procedure TDAEPgDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TPgParam; +begin + for i := 0 to TPgStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TPgStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +function TDAEPgDACStoredProcedure.GetStoredProcedureName: string; +begin + result := TPgStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEPgDACStoredProcedure.RefreshParams; +begin + TPgStoredProc(Dataset).Prepare; + RefreshParamsStd(TPgStoredProc(Dataset).Params); +end; + +procedure TDAEPgDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TPgStoredProc(Dataset).Params); +end; + +procedure TDAEPgDACStoredProcedure.SetStoredProcedureName(const Name: string); +begin + TPgStoredProc(Dataset).StoredProcName := Name; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. \ No newline at end of file diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas new file mode 100644 index 0000000..6e20c81 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAPostgresDACDriver.pas @@ -0,0 +1,353 @@ +unit uDAPostgresDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_PostgresDACDriver_Glyphs.res} + +interface + +uses DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + uROBinaryHelpers, uDAUtils, PSQLDbTables, uDAPostgresInterfaces; + +type { TDAPostgresDACDriver } + TDAPostgresDACDriver = class(TDADriverReference) + end; + + { TDAEPostgresDACDriver } + TDAEPostgresDACDriver = class(TDAPostgresDriver) + private + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; safecall; + function GetDescription: string; override; safecall; + end; + + { TDAEMyConnection } + TDAEPostgresDACConnection = class(TDAEPostgresConnection) + private + function GetConnection: TPSQLDatabase; + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + property Connection: TPSQLDatabase read GetConnection; + public + end; + + { TDAEPostgresDACQuery } + TDAEPostgresDACQuery = class(TDAEDataset,IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAEPostgresDACStoredProcedure } + TDAEPostgresDACStoredProcedure = class(TDAEStoredProcedure,IDAMustSetParams) + private + fConnection:TDAEConnection; + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function GetStoredProcedureName: string; override; safecall; + procedure SetStoredProcedureName(const Name: string); override; safecall; + function DoExecute: integer; override;safecall; + function Execute: integer; override;safecall; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAPostgresDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEPostgresDacDriver.Create(nil); + result := _driver; +end; + +{$IFDEF LATEST_MyDAC} +{$I uDACRLabsUtils.inc} +{$ENDIF LATEST_MyDAC} + +{ TDAEPostgresDacConnection } + +function TDAEPostgresDacConnection.DoBeginTransaction: integer; +begin + Connection.StartTransaction; + result := 0; +end; + +procedure TDAEPostgresDacConnection.DoCommitTransaction; +begin + Connection.Commit; +end; + +function TDAEPostgresDacConnection.GetConnection: TPsqlDatabase; +begin + result := TPsqlDatabase(inherited ConnectionObject); +end; + +function TDAEPostgresDacConnection.CreateCustomConnection: TCustomConnection; +begin + result := TPsqlDatabase.Create(nil); + TPsqlDatabase(result).LoginPrompt := false; +end; + +function TDAEPostgresDacConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEPostgresDacQuery; +end; + +function TDAEPostgresDacConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEPostgresDacStoredProcedure; +end; + +procedure TDAEPostgresDacConnection.DoRollbackTransaction; +begin + Connection.Rollback; +end; + +function TDAEPostgresDacConnection.DoGetInTransaction: boolean; +begin + result := Connection.InTransaction +end; + + +procedure TDAEPostgresDacConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i: Integer; +begin + inherited; + + with aConnStrParser do begin + Connection.DatabaseName := Database; + + Connection.Host := Server; + + if (Self.UserID <> '') then + Connection.Username := Self.UserID + else + Connection.Username := UserID; + + if (Self.Password <> '') then + Connection.UserPassword := Self.Password + else + Connection.UserPassword := Password; + + for i := 0 to AuxParamsCount -1 do + begin + if AuxParams[AuxParamNames[i]] <> '' then + Connection.Params.Add(AuxParamNames[i]+'='+AuxParams[AuxParamNames[i]]); + end; + end; +end; + + +{ TDAEPostgresDacDriver } + + +function TDAEPostgresDacDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEPostgresDacConnection; +end; + +function TDAEPostgresDacDriver.GetDescription: string; +begin + result := 'MicroOlap DAC for Postgres Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEPostgresDacDriver.GetDriverID: string; +begin + result := 'PostgresDAC'; +end; + + +{ TDAEPostgresDacQuery } + +procedure TDAEPostgresDACQuery.ClearParams; +begin + inherited; + TPSQLQuery(Dataset).Params.Clear; +end; + +function TDAEPostgresDacQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TPSQLQuery.Create(nil); + TPSQLQuery(result).UniDirectional := True; + TPSQLQuery(result).RequestLive := false; + TPSQLQuery(result).Database := TDAEPostgresDacConnection(aConnection).Connection; +end; + +function TDAEPostgresDacQuery.DoExecute: integer; +begin + TPSQLQuery(Dataset).ExecSQL; + result := TPSQLQuery(Dataset).RowsAffected; +end; + +function TDAEPostgresDacQuery.DoGetSQL: string; +begin + result := TPSQLQuery(Dataset).SQL.Text; +end; + +procedure TDAEPostgresDacQuery.DoPrepare(Value: boolean); +begin + TPSQLQuery(Dataset).Prepared := Value; +end; + +procedure TDAEPostgresDacQuery.DoSetSQL(const Value: string); +begin + TPSQLQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEPostgresDACQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TPSQLQuery(Dataset).Params); +end; + +procedure TDAEPostgresDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TPSQLQuery(Dataset).Params); +end; + + +{ TDAEADOStoredProcedure } + +function TDAEPostgresDacStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + fConnection := aConnection; + result := TPSQLStoredProc.Create(nil); + TPSQLStoredProc(result).Database := TDAEPostgresDacConnection(aConnection).Connection; +end; + +function TDAEPostgresDACStoredProcedure.DoExecute: integer; +begin + TPSQLStoredProc(Dataset).ExecProc; + result := -1; +end; + +function TDAEPostgresDacStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; +begin + _params := GetParams; + + with TPSQLStoredProc(Dataset) do begin + for i := 0 to (ParamCount-1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then + Params[i].Value := _params.ParamByName(Params[i].Name).Value; + + result := DoExecute; + + for i := 0 to (ParamCount-1) do + if (Params[i].ParamType in [ptOutput, ptInputOutput, ptResult]) then + _params.ParamByName(Params[i].Name).Value := Params[i].Value; + end; +end; + +procedure TDAEPostgresDACStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams,TPSQLStoredProc(Dataset).Params); +end; + +function TDAEPostgresDacStoredProcedure.GetStoredProcedureName: string; +begin + Result := TPSQLStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEPostgresDACStoredProcedure.RefreshParams; +begin + TPSQLStoredProc(Dataset).RefreshParams; + RefreshParamsStd(TPSQLStoredProc(Dataset).Params); +end; + +procedure TDAEPostgresDACStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams,TPSQLStoredProc(Dataset).Params); +end; + +procedure TDAEPostgresDacStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TPSQLStoredProc(Dataset).StoredProcName := Name; +end; + +exports GetDriverObject name func_GetDriverObject; + + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas new file mode 100644 index 0000000..5d1f139 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASDACDriver.pas @@ -0,0 +1,506 @@ +unit uDASDACDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up +{ platform: Win32 +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_SDACDriver_Glyphs.res} + +interface + +uses + DB, Classes, uDAEngine, uDAInterfaces, uDAADOInterfaces, uROClasses, + DBAccess, MSAccess, DASQLMonitor, + MSSQLMonitor, Variants, uDAUtils; + +type { TDASDACDriver } + TDASDACDriver = class(TDADriverReference) + end; + + { TDAEADODriver } + TDAEADODriver = class(TDAMSSQLDriver) + private + fMonitor: TMSSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + + procedure OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; safecall; + function GetDefaultCustomParameters: String; override; safecall; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + end; + + { TDAEMSConnection } + TDAEMSConnection = class(TDAMSConnection, IDAADOConnection, IDACanQueryDatabaseNames) + private + fMSConnection: TMSConnection; + +// procedure GetSysObjects(const aCondition: string; aList: TStrings); + + protected + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + // IADOConnection + function GetProviderName: string; safecall; + function GetProviderType: TDAOleDBProviderType; safecall; + function GetCommandTimeout: Integer; safecall; + procedure SetCommandTimeout(const Value: Integer); safecall; + end; + + { TDAEMSQuery } + TDAEMSQuery = class(TDAEDataset, IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure DoPrepare(Value: boolean); override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEADOStoredProcedure } + TDAEADOStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + SysUtils, + uDADriverManager, uDARes, OLEDBAccess, + uROBinaryHelpers; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDASDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEADODriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + +{ TDAEMSConnection } + +procedure TDAEMSConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + adoconn: string; + i: integer; +begin + inherited; + + with aConnStrParser do begin + adoconn := Format(stdMSSQL_ConnectionString, [UserID, Password, Database, Server]); + adoconn := ''; + if UserId <> '' then begin + if adoconn = '' then + AdoConn := 'User ID='+UserID + else + AdoConn := ADoConn + ';User ID='+UserID; + end; + if Password <> '' then begin + if adoconn = '' then + AdoConn := 'Password='+Password + else + AdoConn := ADoConn + ';Password='+Password; + end; + if DataBase <> '' then begin + if adoconn = '' then + AdoConn := 'Initial Catalog='+Database + else + AdoConn := ADoConn + ';Initial Catalog='+Database; + end; + if Server <> '' then begin + if adoconn = '' then + AdoConn := 'Data Source='+Server + else + AdoConn := ADoConn + ';Data Source='+Server; + end; + + AdoConn := ADoConn + ';'; + MSSQLSchemaEnabled := True; // by default + for i := 0 to AuxParamsCount -1 do + begin + if Uppercase(AuxParamNames[i]) = 'SCHEMAS' then + MSSQLSchemaEnabled := AuxParams['Schemas'] = '1' + else + adoconn := adoconn + AuxParamNames[i] + '=' + AuxParams[AuxParamNames[i]]+';'; + end; + + fMSConnection.ConnectString := adoconn; + + if (Self.UserID <> '') then fMSConnection.Username := Self.UserID; + + if (Self.Password <> '') then fMSConnection.Password := Self.Password; + end; +end; + +function TDAEMSConnection.DoBeginTransaction: integer; +begin + fMSConnection.StartTransaction; + result := 0; +end; + +procedure TDAEMSConnection.DoCommitTransaction; +begin + fMSConnection.Commit; +end; + +function TDAEMSConnection.CreateCustomConnection: TCustomConnection; +begin + fMSConnection := TMSConnection.Create(nil); + fMSConnection.LoginPrompt := FALSE; + + result := fMSConnection; +end; + +function TDAEMSConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAEMSQuery; +end; + +function TDAEMSConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAEADOStoredProcedure; +end; + +procedure TDAEMSConnection.DoRollbackTransaction; +begin + fMSConnection.Rollback; +end; + +function TDAEMSConnection.DoGetInTransaction: boolean; +begin + result := fMSConnection.InTransaction +end; + +function TDAEMSConnection.GetProviderName: string; +begin + result := oledb_MSSQLId; +end; + +function TDAEMSConnection.GetProviderType: TDAOleDBProviderType; +begin + result := oledb_MSSQL; +end; + +function TDAEMSConnection.GetCommandTimeout: Integer; +begin + if fMSConnection <> nil then + Result := fMSConnection.ConnectionTimeout + else + Result:=0; +end; + +procedure TDAEMSConnection.SetCommandTimeout(const Value: Integer); +begin + if fMSConnection <> nil then + fMSConnection.ConnectionTimeout := Value; +end; + +{ TDAEADODriver } + +function TDAEADODriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEMSConnection; +end; + +function TDAEADODriver.GetDescription: string; +begin + result := 'Core Lab SDAC Driver'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEADODriver.GetDriverID: string; +begin + result := 'SDAC'; +end; + +procedure TDAEADODriver.OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +procedure TDAEADODriver.DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TMSSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnSDACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +function TDAEADODriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + result := [doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEADODriver.GetDefaultCustomParameters: String; +begin + Result := 'Schemas=1;Integrated Security=SSPI'; +end; + + + +procedure TDAEADODriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + MSSQL_GetAuxParams(List); +end; + +{ TDAEMSQuery } + +procedure TDAEMSQuery.ClearParams; +begin + inherited; + TMSQuery(Dataset).Params.Clear; +end; + +function TDAEMSQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TMSQuery.Create(nil); + + TMSQuery(result).FetchAll := True; //for preventing creating an additional session when you call StartTransaction (an known issue of OLEDB) + TMSQuery(result).Unidirectional := True; + TMSQuery(result).ReadOnly := TRUE; + TMSQuery(result).Connection := TDAEMSConnection(aConnection).fMSConnection; +// TMSQuery(result).Options.AutoPrepare:=True; +end; + +function TDAEMSQuery.DoExecute: integer; +begin + TMSQuery(Dataset).Execute; + result := TMSQuery(Dataset).RowsAffected; +end; + +function TDAEMSQuery.DoGetSQL: string; +begin + result := TMSQuery(Dataset).SQL.Text; +end; + +procedure TDAEMSQuery.DoPrepare(Value: boolean); +var + i: integer; + par: TMSParam; +begin + if Value and not TMSQuery(Dataset).Prepared and (TMSQuery(Dataset).ParamCount<>0) then begin + for I := 0 to GetParams.Count - 1 do begin + par:=TMSQuery(Dataset).ParamByName(GetParams[i].Name); + par.DataType:= DATypeToVCLType(GetParams[i].DataType); + if par.DataType = ftAutoInc then par.DataType:= ftInteger; + end; + end; + TMSQuery(Dataset).Prepared := Value; +end; + +procedure TDAEMSQuery.DoSetSQL(const Value: string); +begin + TMSQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEMSQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TMSParam; +begin + for i := 0 to TMSQuery(DataSet).Params.Count - 1 do begin + lParam:=TMSQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEMSQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMSQuery(Dataset).Params, true); +end; + +{ TDAEADOStoredProcedure } + +function TDAEADOStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TMSStoredProc.Create(nil); + TMSStoredProc(result).Connection := TDAEMSConnection(aConnection).fMSConnection; +end; + +function TDAEADOStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: uDAInterfaces.TDAParam; +begin + _params := GetParams; + + with TMSStoredProc(Dataset) do begin + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then begin + lParam := _params.ParamByName(Params[i].Name); + if (Params[i].DataType in [ftMemo, ftBlob, ftGraphic]) and VarIsArray(lParam.Value)then + Params[i].Value := VariantToAnsiString(lParam.Value) + else + Params[i].Value := lParam.Value; + end; + + result := DoExecute; + + for i := 0 to (_params.Count-1) do + if (_params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then _params[i].Value := params.ParamByName(_params[i].Name).Value; + end; +end; + +procedure TDAEADOStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TMSParam; +begin + for i := 0 to TMSStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TMSStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + + +function TDAEADOStoredProcedure.GetStoredProcedureName: string; +begin + result := TMSStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEADOStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TMSStoredProc(Dataset).StoredProcName := Name; +end; + +procedure TDAEADOStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TMSStoredProc(Dataset).Params); +end; + + +exports + GetDriverObject name func_GetDriverObject; + +procedure TDAEADOStoredProcedure.RefreshParams; +begin + TMSStoredProc(Dataset).PrepareSQL; + RefreshParamsStd(TMSStoredProc(Dataset).Params); +end; + +function TDAEADOStoredProcedure.DoExecute: integer; +begin + with TMSStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas new file mode 100644 index 0000000..18961a3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLiteDriver.pas @@ -0,0 +1,349 @@ +unit uDASQLiteDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library +{ +{ compiler: Delphi 6 and up, Kylix 3 and up +{ platform: Win32, Linux +{ +{ (c)opyright RemObjects Software. all rights reserved. +{ +{ Using this code requires a valid license of the Data Abstract +{ which can be obtained at http://www.remobjects.com. +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$R DataAbstract_SQLiteDriver_Glyphs.res} + +interface + +uses Windows, Classes, DB, uDAEngine, uDAInterfaces, uROClasses, uDAUtils, ASGSQLite3, uDASQLiteInterfaces; + +type + { TDASQLiteDriver } + TDASQLiteDriver = class(TDADriverReference) + end; + + { TDAESQLiteDriver } + TDAESQLiteDriver = class(uDASQLiteInterfaces.TDASQLiteDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + public + end; + + // for access to protected methods + TDAASQLite3DB = class(TASQLite3DB) + private + public + function GetLastInsertRow: integer; + end; + + { TSQLiteConnection } + TSQLiteConnection = class(TDAConnectionWrapper) + private + fConnection: TDAASQLite3DB; + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Connection: TDAASQLite3DB read fConnection; + end; + + { TDAESQLiteConnection } + TDAESQLiteConnection = class(TDASQLiteConnection) + private + FtransactionFlag: Boolean; + fConnection: TSQLiteConnection; + protected + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall; + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + end; + + { TDAESQLiteQuery } + TDAESQLiteQuery = class(TDAEDataset,IDAMustSetParams) + private + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; safecall; + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, + uROBinaryHelpers, uDASQL92Interfaces; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDASQLiteDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAESQLiteDriver.Create(nil); + result := _driver; +end; + +{ TSQLiteConnection } + +constructor TSQLiteConnection.Create(AOwner: TComponent); +begin + inherited; + fConnection := TDAASQLite3DB.Create(nil); +end; + +destructor TSQLiteConnection.Destroy; +begin + inherited; + fConnection.Free; +end; + +function TSQLiteConnection.GetConnected: Boolean; +begin + result := fConnection.Connected; +end; + +procedure TSQLiteConnection.SetConnected(Value: Boolean); +begin + fConnection.Connected := Value; +end; + +{ TDAESQLiteConnection } + +procedure TDAESQLiteConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + sName, sValue: string; + i: integer; +begin + inherited; + with aConnStrParser do begin + TSQLiteConnection(aConnectionObject).Connection.Database := Database; + for i := 0 to (AuxParamsCount - 1) do begin + sName := AuxParamNames[i]; + sValue := AuxParams[sName]; + if AnsiSameText(sName, 'TransactionType') then begin + if AnsiSameText(sValue, 'DEFAULT') or + AnsiSameText(sValue, 'DEFERRED') or + AnsiSameText(sValue, 'IMMEDIATE') or + AnsiSameText(sValue, 'EXCLUSIVE') then + fConnection.fConnection.TransactionType := AnsiUpperCase(sValue); + end + else if AnsiSameText(sName, 'DriverDll') then begin + fConnection.fConnection.DriverDll := sValue + end + else if AnsiSameText(sName, 'CharacterEncoding') then begin + if AnsiSameText(sValue, 'STANDARD') or + AnsiSameText(sValue, 'UTF8') then + fConnection.fConnection.CharacterEncoding := AnsiUpperCase(sValue); + end; + end; + end; +end; + +function TDAESQLiteConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Connection.StartTransaction; + FtransactionFlag := True; +end; + +procedure TDAESQLiteConnection.DoCommitTransaction; +begin + fConnection.Connection.Commit; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TSQLiteConnection.Create(nil); + result := fConnection; +end; + +function TDAESQLiteConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAESQLiteQuery; +end; + +procedure TDAESQLiteConnection.DoRollbackTransaction; +begin + FtransactionFlag := False; + fConnection.Connection.RollBack; +end; + +function TDAESQLiteConnection.DoGetInTransaction: boolean; +begin + Result := FtransactionFlag; +end; + +procedure TDAESQLiteConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + List: TList; + i: integer; + fld: TDAField; +begin + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + List := TList.Create; + try + fConnection.Connection.GetTableInfo(aTableName, List); + for i := 0 to List.Count - 1 do + with TASQLite3Field(List[i]) do begin + fld := Fields.FieldByName(FieldName); + fld.Required := FieldNN <> 0; + fld.InPrimaryKey := FieldPK <> 0; + if fld.InPrimaryKey then fld.Required := True; + fld.DefaultValue := FieldDefault; + end; + finally + List.Free; + end; +end; + +function TDAESQLiteConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result := inherited IdentifierNeedsQuoting(iIdentifier) or + SQL92_IdentifierNeedsQuoting(iIdentifier); +end; + +constructor TDAESQLiteConnection.Create(aDriver: TDAEDriver; + aName: string); +begin + inherited; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +begin + Result := fConnection.Connection.GetLastInsertRow; +end; + +{ TDAESQLiteDriver } + +function TDAESQLiteDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAESQLiteConnection; +end; + +function TDAESQLiteDriver.GetDescription: string; +begin + result := 'SQLite Driver'; +end; + +function TDAESQLiteDriver.GetDriverID: string; +begin + result := 'SQLite'; +end; + +procedure TDAESQLiteDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + List.Add('TransactionType=(DEFAULT,DEFERRED,IMMEDIATE,EXCLUSIVE)'); + List.Add('DriverDll=SQLite3.dll'); + List.Add('CharacterEncoding=(STANDARD,UTF8)'); +end; + +{ TDAESQLiteQuery } + +procedure TDAESQLiteQuery.ClearParams; +begin + inherited; + TASQLite3Query(Dataset).Params.Clear; +end; + +function TDAESQLiteQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TASQLite3Query.Create(nil); + TASQLite3Query(result).Connection := TDAESQLiteConnection(aConnection).fConnection.Connection; +end; + +function TDAESQLiteQuery.DoExecute: integer; +begin + Result := -1; + TASQLite3Query(Dataset).ExecSQL; +end; + +function TDAESQLiteQuery.DoGetSQL: string; +begin + result := TASQLite3Query(Dataset).SQL.Text; +end; + +procedure TDAESQLiteQuery.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESQLiteQuery.DoSetSQL(const Value: string); +begin + TASQLite3Query(Dataset).SQL.Text := Value; +end; + +procedure TDAESQLiteQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TASQLite3Query(Dataset).Params); +end; + +procedure TDAESQLiteQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TASQLite3Query(Dataset).Params); +end; + +exports GetDriverObject name func_GetDriverObject; +{ TDAASQLite3DB } + +function TDAASQLite3DB.GetLastInsertRow: integer; +begin + result := SQLite3_LastInsertRow(DBHandle) +end; + +initialization + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLitePassDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLitePassDriver.pas new file mode 100644 index 0000000..854f51f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDASQLitePassDriver.pas @@ -0,0 +1,390 @@ +unit uDASQLitePassDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{ } +{ based on code of Giovanni Siano } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$IFNDEF FPC} +{$R DataAbstract_SQLitePassDriver_Glyphs.res} +{$ENDIF} + +interface + +uses + {$IFDEF MSWINDOWS}Windows,{$ENDIF} + Classes, DB, uDAEngine, uDAInterfaces, uROClasses, uDAUtils, uDASQLiteInterfaces, SqlitePassDbo; + +type + { TDASQLitePassDriver } + TDASQLitePassDriver = class(TDADriverReference) + end; + + { TDAESQLiteDriver } + TDAESQLiteDriver = class(uDASQLiteInterfaces.TDASQLiteDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + // IDADriver + function GetDriverID: string; override; + function GetDescription: string; override; + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; + public + end; + + // for access to protected methods + TDASQLite3PassDB = class(TSqlitePassDatabase) + private + public + end; + + { TSQLiteConnection } + TSQLiteConnection = class(TDAConnectionWrapper) + private + fConnection: TDASQLite3PassDB; + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Connection: TDASQLite3PassDB read fConnection; + end; + + { TDAESQLiteConnection } + TDAESQLiteConnection = class(TDASQLiteConnection) + private + FtransactionFlag: Boolean; + fConnection: TSQLiteConnection; + protected + procedure SetConnected(Value: boolean); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // TDAEConnection + function CreateCustomConnection: TCustomConnection; override; + function GetDatasetClass: TDAEDatasetClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + function DoGetLastAutoInc(const GeneratorName: string): integer; override; + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetTableNames(out List: IROStrings); override; + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + end; + + { TDAESQLiteQuery } + TDAESQLiteQuery = class(TDAEDataset,IDAMustSetParams) + private + protected + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; + function DoGetSQL: string; override; + procedure DoSetSQL(const Value: string); override; + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses SysUtils, uDADriverManager, uDARes, Variants, TypInfo, + uROBinaryHelpers, uDASQL92Interfaces, SqlitePassApi_v3, SqlitePassErrorLang; + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDASQLitePassDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAESQLiteDriver.Create(nil); + result := _driver; +end; + +{ TSQLiteConnection } + +constructor TSQLiteConnection.Create(AOwner: TComponent); +begin + inherited; + fConnection := TDASQLite3PassDB.Create(nil); +end; + +destructor TSQLiteConnection.Destroy; +begin + inherited; + fConnection.Free; +end; + +function TSQLiteConnection.GetConnected: Boolean; +begin + result := fConnection.Connected; +end; + +procedure TSQLiteConnection.SetConnected(Value: Boolean); +begin + fConnection.Connected := Value; +end; + +{ TDAESQLiteConnection } + +procedure TDAESQLiteConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + sName, sValue: string; + i: integer; +begin + inherited; + with aConnStrParser do begin + for i := 0 to (AuxParamsCount - 1) do begin + sName := AuxParamNames[i]; + sValue := AuxParams[sName]; + if AnsiSameText(sName, 'SqliteLibrary') then begin + fConnection.fConnection.SQLiteLibrary := sValue; + end + else if AnsiSameText(sName, 'DatabaseType') then begin + if AnsiSameText(sValue, 'dbtSqlitePass') then fConnection.fConnection.DatabaseType := dbtSqlitePass + else if AnsiSameText(sValue, 'dbtKexi') then fConnection.fConnection.DatabaseType := dbtKexi + else if AnsiSameText(sValue, 'dbtSqliteAdmin') then fConnection.fConnection.DatabaseType := dbtSqliteAdmin + else if AnsiSameText(sValue, 'dbtSqlite4Fpc') then fConnection.fConnection.DatabaseType := dbtSqlite4Fpc + else if AnsiSameText(sValue, 'dbtSqliteExpert') then fConnection.fConnection.DatabaseType := dbtSqliteExpert + else fConnection.fConnection.DatabaseType := dbtUnknown; + end + else if Pos('datatypeoptions.', AnsiLowerCase(sName)) = 1 then begin + sName := Copy(sName,17, Length(sName)-16); + SetPropValue(fConnection.fConnection.DatatypeOptions, sName, sValue); + end + else if Pos('options.', AnsiLowerCase(sName)) = 1 then begin + sName := Copy(sName,9, Length(sName)-8); + SetPropValue(fConnection.fConnection.Options, sName, sValue); + end; + end; + TSQLiteConnection(aConnectionObject).Connection.Database := Database; + end; +end; + +function TDAESQLiteConnection.DoBeginTransaction: integer; +begin + result := -1; + fConnection.Connection.Engine.Transaction.Start; + FtransactionFlag := True; +end; + +procedure TDAESQLiteConnection.DoCommitTransaction; +begin + fConnection.Connection.Engine.Transaction.Commit; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TSQLiteConnection.Create(nil); + result := fConnection; +end; + +function TDAESQLiteConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAESQLiteQuery; +end; + +procedure TDAESQLiteConnection.DoRollbackTransaction; +begin + FtransactionFlag := False; + fConnection.Connection.Engine.Transaction.Rollback; +end; + +function TDAESQLiteConnection.DoGetInTransaction: boolean; +begin + Result := FtransactionFlag; +end; + +procedure TDAESQLiteConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + i: integer; + fld: TDAField; + lSqlitePassTableDef: TSqlitePassTableDef; +begin + inherited DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), Fields); + + lSqlitePassTableDef := fConnection.Connection.TableDefs.TableByName(aTableName); + + with lSqlitePassTableDef do begin + for i := 0 to Pred(Fields.Count - 1) do + with FieldDefs.FindFieldDef(Fields[i].Name) do + begin + fld := Fields[i]; + fld.Required := NotNull; + fld.InPrimaryKey := PrimaryKey; + if fld.InPrimaryKey then fld.Required := True; + fld.DefaultValue := DefaultValue; + end; + end; +end; + +procedure TDAESQLiteConnection.SetConnected(Value: boolean); +var + lErrorCode: integer; + lMsg: String; + lDateTime: TDateTime; +begin + inherited; + if not fConnection.fConnection.Connected then begin + fConnection.fConnection.DatabaseError.GetLastError(lErrorCode,lMsg, lDateTime); + if lMsg <> Msg1002 then raise Exception.Create(lMsg); + end; +end; + +constructor TDAESQLiteConnection.Create(aDriver: TDAEDriver; + aName: string); +begin + inherited; + FtransactionFlag := False; +end; + +function TDAESQLiteConnection.DoGetLastAutoInc( + const GeneratorName: string): integer; +begin + Result := SqliteDbv3_last_insert_rowid(fConnection.Connection); +end; + + + +procedure TDAESQLiteConnection.DoGetTableNames(out List: IROStrings); +var + i: integer; +begin + inherited; + {Giovanni: to avoid return of system table names} + for i := Pred(List.Count) downto 0 do + if fConnection.fConnection.IsSystemTable(List.Strings[i]) then List.Delete(i); +end; + +{ TDAESQLiteDriver } + +procedure TDAESQLiteDriver.CustomizeConnectionObject( + aConnection: TDAEConnection); +begin + inherited; + //TODO: +end; + + +function TDAESQLiteDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAESQLiteConnection; +end; + +function TDAESQLiteDriver.GetDescription: string; +begin + result := 'SQLitePass Driver'; +end; + +function TDAESQLiteDriver.GetDriverID: string; +begin + result := 'SQLitePass'; +end; + +procedure TDAESQLiteDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + //TODO: TDAESQLiteDriver.GetAuxParams() + //List.Add('TransactionType=(DEFAULT,DEFERRED,IMMEDIATE,EXCLUSIVE)'); + List.Add('DatabaseType=(dbtSqlitePass, dbtKexi, dbtSqliteAdmin, dbtSqlite4Fpc, dbtSqliteExpert, dbtUnknown)'); + List.Add('SqliteLibrary=path to sqlitepass3.dll or libsqlitepass3.so'); + List.Add('DatatypeOptions.='); + List.Add('Options.='); + + List.Add(''); + List.Add('Consult to SQLitePass documentation about DatatypeOptions and Options options.'); + + //List.Add('CharacterEncoding=(STANDARD,UTF8)'); +end; + +{ TDAESQLiteQuery } + +procedure TDAESQLiteQuery.ClearParams; +begin + inherited; + TSqlitePassDataset(Dataset).Params.Clear; +end; + +function TDAESQLiteQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TSqlitePassDataset.Create(nil); + TSqlitePassDataset(Result).Database := TDAESQLiteConnection(aConnection).fConnection.Connection; + if not TDAESQLiteConnection(aConnection).GetConnected then TDAESQLiteConnection(aConnection).Open +end; + +function TDAESQLiteQuery.DoExecute: integer; +begin + Result := -1; + TSqlitePassDataset(Dataset).Open; +end; + +function TDAESQLiteQuery.DoGetSQL: string; +begin + result := TSqlitePassDataset(Dataset).SQL.Text; +end; + +procedure TDAESQLiteQuery.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESQLiteQuery.DoSetSQL(const Value: string); +begin + TSqlitePassDataset(Dataset).SQL.Text := Value; +end; + +procedure TDAESQLiteQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TSqlitePassDataset(Dataset).Params); +end; + +procedure TDAESQLiteQuery.SetParamValues(AParams: TDAParamCollection); +begin + SetParamValuesStd(AParams, TSqlitePassDataset(Dataset).Params); +end; + +exports GetDriverObject name func_GetDriverObject; + +initialization +{$IFDEF FPC} + {$I DataAbstract_SQLitePassDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAUniDACDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAUniDACDriver.pas new file mode 100644 index 0000000..f0d68fd --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAUniDACDriver.pas @@ -0,0 +1,1196 @@ +unit uDAUniDACDriver; +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + + +{.$DEFINE UNIDAC_NATIVE_ONLY} +interface + +uses DB, Classes, uDAEngine, uROClasses, + uROBinaryHelpers, uDAUtils, + DBAccess, Uni, DASQLMonitor, UniSQLMonitor, + uDAInterfaces, + uDAADOInterfaces, + uDAIBInterfaces, + uDASQLiteInterfaces, + uDAOracleInterfaces, + uDAMySQLInterfaces, + uDADB2Interfaces, + uDASybaseInterfaces, + uDAPostgresInterfaces; + +type + + TDAUnidacDriverType = ( + dauUnknown, + dauAccess, + dauAdvantage, + dauASE, + dauIBMDB2, + dauInterBase, + dauMySQL, + dauOracle, + dauPostgreSQL, + dauSQLite, + dauMSSQL); + +const + uni_access = 'access'; + uni_advantage = 'advantage'; + uni_ase = 'ase'; + uni_ibmdb2 = 'db2'; + uni_interbase = 'interbase'; + uni_mysql = 'mysql'; + uni_oracle = 'oracle'; + uni_postgresql = 'postgresql'; + uni_sqlite = 'sqlite'; + uni_sqlserver = 'sql server'; + +type + { TDAUniDACDriver } + TDAUniDACDriver = class(TDADriverReference) + end; + + { TDAEUniDACDriver } + TDAEUniDACDriver = class(TDAEDriver,IDADriver40) + private + fMonitor: TUniSQLMonitor; + fTraceCallBack: TDALogTraceEvent; + procedure OnSDACTrace(Sender: TObject; Text: string; Flag: TDATraceFlag); + protected + function GetConnectionClass: TDAEConnectionClass; override; + procedure DoSetTraceOptions(TraceActive: boolean; TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); override; + // IDADriver + function GetDriverID: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDescription: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxDrivers(out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptionsEx(AuxDriver: string): TDAAvailableDriverOptions; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //IDADriver40 + function GetProviderDefaultCustomParameters(Provider: string): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + { TDAEMyConnection } + TDAEUniDACConnection = class(TDAEConnection, IDAConnection, + IDAInterbaseConnection, //IDAIBTransactionAccess, IDAIBConnectionProperties, + IDAOracleConnection, + IDAMySQLConnection, + IDASQLiteConnection, + IDADB2Connection, + IDASybaseConnection, + IDAPostgresConnection, + // IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + // IDADirectoryBasedDatabase, + IDAUseGenerators, + IDAUseGenerators2, + IDACanQueryGeneratorsNames, + IDATestableObject) + private + fConnection: TUniConnection; + fDriverName: string; + fDriverType: TDAUnidacDriverType; + fMSSQLSchemaEnabled: Boolean; + FMySQLVersion: integer; + FSchemaSupported: integer; + function CombineSchemaWithName(aSchema, aName: string): string; + function GetMySQLVersion: integer; + procedure native_DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); + procedure native_DoGetForeignKeys(ForeignKeys: TDADriverForeignKeyCollection); + procedure native_GetGeneratorNames(AList: IROStrings); + procedure native_DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); + function isSchemaSupported: Boolean; + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + function CreateCustomConnection: TCustomConnection; override; + + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); override; + + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + //rocedure DoGetQueryFields(const aSQL: string; aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); override; + //procedure DoGetViewFields(const aViewName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + + { IDATestableObject } + // procedure Test; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAConnection } + + function GetSPSelectSyntax(HasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetQuoteChars: TDAQuoteCharArray; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function IdentifierIsQuoted(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifierIfNeeded(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifier(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldNameIfNeeded(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldName(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function isAlive: Boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetQueryBuilder: TDAQueryBuilder; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAInterbaseConnection } + // nothing + + { IDAIBTransactionAccess } + //function GetTransaction: TObject; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAIBConnectionProperties } + function GetRole: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetRole(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetSQLDialect: integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetSQLDialect(Value: integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCharset: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCharset(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + procedure Commit; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Rollback; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAOracleConnection } + // nothing + + { IDAConnectionModelling } + // function FieldToDeclaration(aField: TDAField): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryDatabaseNames } + function GetDatabaseNames: IROStrings; + + { IDAFileBasedDatabase } + function GetFileExtensions: IROStrings; + + { IDADirectoryBasedDatabase } + // nothing + + { IDAUseGenerators } + function GetNextAutoinc(const GeneratorName: string): integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + { IDAUseGenerators2 } + function GetNextAutoinc2(const GeneratorName: string): variant; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryGeneratorsNames } + function GetGeneratorNames: IROStrings; + public + end; + + { TDAEUniDACQuery } + TDAEUniDACQuery = class(TDAEDataset,IDAMustSetParams) + private + + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure ClearParams; override; + function DoExecute: integer; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoPrepare(Value: boolean); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + public + end; + + { TDAEUniDACStoredProcedure } + TDAEUniDACStoredProcedure = class(TDAEStoredProcedure,IDAMustSetParams) + protected + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + + function GetStoredProcedureName: string; override; + procedure SetStoredProcedureName(const Name: string); override; + function DoExecute: integer; override; + function Execute: integer; override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + + + + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + {$IFDEF MSWINDOWS}Windows, {$ENDIF} + SysUtils, Variants, + uDADriverManager, uDARes, TypInfo, + {$IFDEF MSWINDOWS} + AccessUniProvider, + AdvantageUniProvider, + ASEUniProvider, + DB2UniProvider, + ODBCUniProvider, + SQLServerUniProvider, + {$ENDIF} + InterBaseUniProvider, + MySQLUniProvider, + OracleUniProvider, + PostgreSQLUniProvider, + SQLiteUniProvider, + UniProvider; + +{$IFNDEF FPC} + {$R DataAbstract_UniDACDriver_Glyphs.res} +{$ENDIF} + + + +function UNIDriverIdToUNIDriverType(aAuxDriver: string): TDAUnidacDriverType; +begin + Result := dauUnknown; + aAuxDriver := LowerCase(aAuxDriver); + if uni_access = aAuxDriver then Result := dauAccess + else if uni_advantage = aAuxDriver then Result := dauAdvantage + else if uni_ase = aAuxDriver then Result := dauASE + else if uni_ibmdb2 = aAuxDriver then Result := dauIBMDB2 + else if uni_interbase = aAuxDriver then Result := dauInterBase + else if uni_MySQL = aAuxDriver then Result := dauMySQL + else if uni_ORACLE = aAuxDriver then Result := dauOracle + else if uni_PostgreSQL = aAuxDriver then Result := dauPostgreSQL + else if uni_SQLite = aAuxDriver then Result := dauSQLite + else if uni_sqlserver = aAuxDriver then Result := dauMSSQL + else ; +end; + + +var + _driver: TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAUniDACDriver]); +end; + +{$IFDEF DataAbstract_SchemaModelerOnly} +{$INCLUDE ..\DataAbstract_SchemaModelerOnly.inc} +{$ENDIF DataAbstract_SchemaModelerOnly} + +function GetDriverObject: IDADriver; +begin + {$IFDEF DataAbstract_SchemaModelerOnly} + if not RunningInSchemaModeler then begin + result := nil; + exit; + end; + {$ENDIF} + if (_driver = nil) then _driver := TDAEUniDACDriver.Create(nil); + result := _driver; +end; + +{$I uDACRLabsUtils.inc} + +{ TDAEUniDACDriver } + +procedure TDAEUniDACDriver.DoSetTraceOptions(TraceActive: boolean; + TraceOptions: TDATraceOptions; Callback: TDALogTraceEvent); +var + sdacopts: TDATraceFlags; +begin + inherited; + if TraceActive then begin + if (fMonitor = nil) then fMonitor := TUniSQLMonitor.Create(Self); + + fMonitor.Active := FALSE; + fMonitor.OnSQL := OnSDACTrace; + + sdacopts := []; + if (toPrepare in TraceOptions) then sdacopts := sdacopts + [tfQPrepare]; + if (toExecute in TraceOptions) then sdacopts := sdacopts + [tfQExecute]; + if (toFetch in TraceOptions) then sdacopts := sdacopts + [tfQFetch]; + if (toError in TraceOptions) then sdacopts := sdacopts + [tfError]; + if (toStmt in TraceOptions) then sdacopts := sdacopts + [tfStmt]; + if (toConnect in TraceOptions) then sdacopts := sdacopts + [tfConnect]; + if (toTransact in TraceOptions) then sdacopts := sdacopts + [tfTransact]; + if (toBlob in TraceOptions) then sdacopts := sdacopts + [tfBlob]; + if (toService in TraceOptions) then sdacopts := sdacopts + [tfService]; + if (toMisc in TraceOptions) then sdacopts := sdacopts + [tfMisc]; + if (toParams in TraceOptions) then sdacopts := sdacopts + [tfParams]; + + fTraceCallBack := Callback; + + fMonitor.TraceFlags := sdacopts; + fMonitor.Active := TRUE; + end + else begin + FreeAndNIL(fMonitor); + fTraceCallback := nil; + end; +end; + +procedure TDAEUniDACDriver.GetAuxDrivers(out List: IROStrings); +var + i : integer; + str: TStringList; +begin + inherited; + Str := TStringList.Create; + try + UniProviders.GetProviderNames(str); + for i := 0 to Str.Count - 1 do + if UNIDriverIdToUNIDriverType(str[i]) <> dauUnknown then + List.Add(str[i]); + List.Sorted := True; + finally + Str.Free; + end; +end; + +procedure TDAEUniDACDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +begin + inherited; + case UNIDriverIdToUNIDriverType(AuxDriver) of + dauMSSQL: MSSQL_GetAuxParams(List); + end; + List.Add('Options.='); + List.Add('SpecificOptions.='); + case UNIDriverIdToUNIDriverType(AuxDriver) of + dauAccess, dauSQLite:; + else + List.Add('Port='); + end; + List.Add(''); + List.Add('Consult to UniDAC documentation about Options and SpecificOptions options.'); +end; + +function TDAEUniDACDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAEUniDACDriver.GetAvailableDriverOptionsEx( + AuxDriver: string): TDAAvailableDriverOptions; +begin + case UNIDriverIdToUNIDriverType(AuxDriver) of + dauAccess : Result := [doAuxDriver, doDatabaseName, doLogin, doCustom]; + dauSQLite : Result := [doAuxDriver, doDatabaseName, doCustom]; + else + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + end; +end; + +function TDAEUniDACDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAEUniDACConnection; +end; + +function TDAEUniDACDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case UNIDriverIdToUNIDriverType(AuxDriver) of + dauAccess: Result := Access_DriverType; +// dauAdvantage, +// dauASE, + dauIBMDB2: Result:= DB2_DriverType; + dauInterBase: Result := IB_DriverType; + dauMySQL: Result := MySQL_DriverType; + dauOracle: Result := Oracle_DriverType; + dauPostgreSQL: Result := PostgreSQL_DriverType; + dauSQLite: Result:= SQLite_DriverType; + dauMSSQL: Result := MSSQL_DriverType; + else + Result:= inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAEUniDACDriver.GetDescription: string; +begin + result := 'Devart''s UniDAC'{$IFDEF DataAbstract_SchemaModelerOnly} + SchemaModelerOnly{$ENDIF}; +end; + +function TDAEUniDACDriver.GetDriverID: string; +begin + Result := 'UniDAC'; +end; + +function TDAEUniDACDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + case UNIDriverIdToUNIDriverType(Provider) of + dauMySQL: Result := MYSQL_GetDefaultCustomParameters; + dauMSSQL: Result := 'Schemas=1;Integrated Security=SSPI'; + end; +end; + +procedure TDAEUniDACDriver.OnSDACTrace(Sender: TObject; Text: string; + Flag: TDATraceFlag); +begin + if Assigned(fTraceCallback) then fTraceCallback(Sender, Text, integer(Flag)); +end; + +{ TDAEUniDACConnection } + +function TDAEUniDACConnection.CombineSchemaWithName(aSchema, + aName: string): string; +begin + if not isSchemaSupported then begin + Result := aName + end + else begin + if (fDriverType = dauMSSQL) and (not fMSSQLSchemaEnabled) then begin + if aSchema = 'dbo' then + Result := aName + else + Result := aSchema + '.' + aName; + end + else + Result := aSchema + '.' + aName; + end; +end; + +procedure TDAEUniDACConnection.Commit; +begin + Self.DoCommitTransaction; +end; + +function TDAEUniDACConnection.CreateCustomConnection: TCustomConnection; +begin + fConnection := TUniConnection.Create(nil); + fConnection.LoginPrompt := FALSE; + + result := fConnection; +end; + +procedure TDAEUniDACConnection.DoApplyConnectionString( + aConnStrParser: TDAConnectionStringParser; + aConnectionObject: TCustomConnection); +var + i: integer; + sName, lcName, sValue: string; +begin + FSchemaSupported := -1; + FMySQLVersion := -1; + fMSSQLSchemaEnabled := True; + inherited; + with aConnStrParser do begin + fDriverName := AuxDriver; + fDriverType := UNIDriverIdToUNIDriverType(AuxDriver); + + fConnection.ProviderName := AuxDriver; + if (Self.UserID <> '') then + fConnection.Username := Self.UserID + else + fConnection.Username := UserID; + + if (Self.Password <> '') then + fConnection.Password := Self.Password + else + fConnection.Password := Password; + if Server <> '' then fConnection.Server := Server; + if Database <> '' then fConnection.Database := Database; + + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + lcName := AnsiLowerCase(sName); + sValue := AuxParams[AuxParamNames[i]]; + if AnsiSameText(sName, 'port') then begin + if StrToIntDef(sValue, -1) <> -1 then fConnection.Port := StrToInt(sValue); + end + else if Pos('options.', lcName) = 1 then begin + sName := Copy(sName,9, Length(sName)-8); + SetPropValue(fConnection.Options, sName, sValue); + end + else if Pos('specificoptions.', lcName) = 1 then begin + sName := Copy(sName,17, Length(sName)- 16); + fConnection.SpecificOptions.Values[sValue]:=sName; + end + else if lcName = 'schemas' then begin + fMSSQLSchemaEnabled := AuxParams['Schemas'] = '1' + end + else if (fDriverType = dauMSSQL) and (lcname = 'integrated security') and (AnsiSameText(sValue, 'SSPI')) then begin + fConnection.SpecificOptions.Values['Authentication']:='auWindows'; + end; + end; + end; +end; + +function TDAEUniDACConnection.DoBeginTransaction: integer; +begin + fConnection.StartTransaction; + result := 0; +end; + +procedure TDAEUniDACConnection.DoCommitTransaction; +begin + fConnection.Commit; +end; + +procedure TDAEUniDACConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +begin + inherited; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled); + dauInterBase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dauMySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fConnection.Database,GetMySQLVersion); + dauPostgreSQL: Postgres_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + dauOracle: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dauSQLite: SQLite_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + else + {$ENDIF} + native_DoGetForeignKeys(ForeignKeys); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.DoGetInTransaction: boolean; +begin + Result := fConnection.InTransaction; +end; + +function TDAEUniDACConnection.DoGetLastAutoIncValue( + const GeneratorName: string): Variant; +begin + Result := -1; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dauInterBase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dauMySQL: Result := MySQL_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dauOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dauPostgreSQL: Result := Postgres_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + else + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.native_DoGetForeignKeys( + ForeignKeys: TDADriverForeignKeyCollection); +begin +// not implemented yet +end; + +procedure TDAEUniDACConnection.native_DoGetNames(AList: IROStrings; + AObjectType: TDAObjecttype); + + procedure _GetNames(aRestriction: string); + var + FMetadata: TUniMetaData; + fld, fld2: TField; + begin + FMetadata := TUniMetaData(fConnection.CreateMetaData); + try + FMetadata.MetaDataKind := 'tables'; + if (fDriverType = dauMSSQL) and not fMSSQLSchemaEnabled then + FMetadata.Restrictions.Values['TABLE_SCHEMA'] := 'dbo'; + FMetadata.Restrictions.Values['TABLE_TYPE'] := aRestriction; + FMetadata.Open; + fld := FMetadata.FindField('TABLE_SCHEMA'); + fld2 := FMetadata.FieldByName('TABLE_NAME'); + while not FMetadata.Eof do begin + if isSchemaSupported and (fld <> nil) and (fld.AsString <> '') then + AList.Add(CombineSchemaWithName(fld.AsString,fld2.AsString)) + else + AList.Add(fld2.AsString); + FMetadata.Next; + end; + finally + FMetadata.Free; + end; + end; + +begin + case AObjectType of + dotTable: _GetNames('TABLE'); + dotView: _GetNames('VIEW'); + dotProcedure: fConnection.GetStoredProcNames(AList.Strings); + end; +end; + +procedure TDAEUniDACConnection.native_DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + FMetadata: TUniMetaData; + i: integer; + lSchemaName,lTableName: string; + lPK: string; + fld: TDAField; +begin + inherited DoGetTableFields(aTableName,Fields); + + FMetadata := TUniMetaData(fConnection.CreateMetaData); + try + FMetadata.MetaDataKind := 'constraints'; + i := pos('.', aTableName); + if isSchemaSupported and (i <> 0) then begin + lSchemaName := Copy(aTableName, 1, i-1); + lTableName := Copy(aTableName, i+1, Length(aTableName)-i); + end + else begin + lSchemaName := ''; + lTableName := aTableName; + end; + + if (fDriverType = dauMSSQL) and not fMSSQLSchemaEnabled then + FMetadata.Restrictions.Values['TABLE_SCHEMA'] := 'dbo' + else + if lSchemaName <> '' then + FMetadata.Restrictions.Values['TABLE_SCHEMA'] := lSchemaName; + FMetadata.Restrictions.Values['TABLE_NAME'] := lTableName; + FMetadata.Restrictions.Values['CONSTRAINT_TYPE'] := 'PRIMARY KEY'; + FMetadata.Open; + if not FMetadata.Eof then lPk := FMetadata.FieldByName('CONSTRAINT_NAME').AsString; + if lpk <> '' then begin + FMetadata.Close; + FMetadata.MetaDataKind := 'IndexColumns'; + FMetadata.Restrictions.Values['INDEX_NAME'] := lPK; + FMetadata.Open; + While not FMetadata.Eof do begin + fld:= Fields.FindField(FMetadata.FieldByName('COLUMN_NAME').AsString); + if fld <> nil then begin + fld.InPrimaryKey := True; + fld.Required := True; + end; + FMetadata.Next; + end; + end; + finally + FMetadata.Free; + end; +end; + +procedure TDAEUniDACConnection.native_GetGeneratorNames(AList: IROStrings); +var + FMetadata: TUniMetaData; + s: string; +begin + // nowadays, IB is only supported + FMetadata := TUniMetaData(fConnection.CreateMetaData); + try + FMetadata.MetaDataKind := 'generators'; + FMetadata.Open; + while not FMetadata.Eof do begin + s:= FMetadata.Fields[0].AsString; + AList.Add(s); + FMetadata.Next; + end; + finally + FMetadata.Free; + end; +end; + +procedure TDAEUniDACConnection.DoGetStoredProcedureNames(out List: IROStrings); +begin + inherited; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled); + dauInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dauMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fConnection.Database,GetMySQLVersion); + dauSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dauPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + dauOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + {$ENDIF} + native_DoGetNames(List, dotProcedure); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + inherited DoGetStoredProcedureParams(aStoredProcedureName,Params); + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params, fConnection.Database); + dauOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + dauPostgreSQL: Postgres_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + dauMSSQL: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dauInterBase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dauMySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields, fConnection.Database,GetMySQLVersion); + dauOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dauPostgreSQL: Postgres_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + {$ENDIF} + native_DoGetTableFields(aTableName, Fields); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled); + dauInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dauMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fConnection.Database,GetMySQLVersion); + dauSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dauPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + dauOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + {$ENDIF} + native_DoGetNames(List, dotTable); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.DoGetViewNames(out List: IROStrings); +begin + inherited; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled); + dauInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dauMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fConnection.Database,GetMySQLVersion); + dauSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dauPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + dauOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + {$ENDIF} + native_DoGetNames(List, dotView); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +procedure TDAEUniDACConnection.DoRollbackTransaction; +begin + fConnection.Rollback; +end; + + +function TDAEUniDACConnection.GetCharset: string; +begin + Result := fConnection.SpecificOptions.Values['Charset']; +end; + +function TDAEUniDACConnection.GetDatabaseNames: IROStrings; +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: Result := MSSQL_GetDatabaseNames(Self); + dauMySQL: Result := MYSQL_GetDatabaseNames(Self); + dauPostgreSQL: Result := Postgres_GetDatabaseNames(Self); + else + {$ENDIF} + Result := NewROStrings; + fConnection.GetDatabaseNames(Result.Strings); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetDatasetClass: TDAEDatasetClass; +begin + Result := TDAEUniDACQuery; +end; + +function TDAEUniDACConnection.GetFileExtensions: IROStrings; +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauInterBase: Result := IB_GetFileExtensions; + dauSQLite: Result := SQLite_GetFileExtensions; + dauAccess: Result := MSACCESS_GetFileExtensions; + else + {$ENDIF} + Result := NewROStrings; + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetGeneratorNames: IROStrings; +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauInterBase: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + {$ENDIF} + Result := NewROStrings; + native_GetGeneratorNames(Result); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetMySQLVersion: integer; +begin + if FMySQLVersion = -1 then FMySQLVersion := MYSQL_GetVersion(GetDatasetClass.Create(Self)); + Result := FMySQLVersion; +end; + +function TDAEUniDACConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +function TDAEUniDACConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + Result := -1; + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dauOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dauPostgreSQL: Result := Postgres_GetNextAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetQuoteChars: TDAQuoteCharArray; +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: Result := MSSQL_GetQuoteChars; + dauOracle: Result:= Oracle_GetQuoteChars; + else + {$ENDIF} + Result := inherited GetQuoteChars; + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetRole: string; +begin + Result := fConnection.SpecificOptions.Values['Role']; +end; + +function TDAEUniDACConnection.GetSPSelectSyntax(HasArguments: Boolean): string; +begin + {$IFNDEF UNIDAC_NATIVE_ONLY} + case fDriverType of + dauMSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + dauInterBase: Result := IB_GetSPSelectSyntax(HasArguments); + dauOracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + dauPostgreSQL: Result := Postgres_GetSPSelectSyntax(HasArguments); + else + {$ENDIF} + Result := inherited GetSPSelectSyntax(HasArguments); + {$IFNDEF UNIDAC_NATIVE_ONLY} + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.GetSQLDialect: integer; +begin + Result := StrToIntDef(fConnection.SpecificOptions.Values['SQLDialect'],3); +end; + +function TDAEUniDACConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + Result := TDAEUniDACStoredProcedure; +end; + +function TDAEUniDACConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; +begin + Result:= inherited IdentifierNeedsQuoting(iIdentifier); + {$IFNDEF UNIDAC_NATIVE_ONLY} + if not result then + case fDriverType of + dauMSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + dauInterBase: Result := IB_IdentifierNeedsQuoting(iIdentifier, GetSQLDialect); + dauMySQL: Result := MYSQL_IdentifierNeedsQuoting(iIdentifier); + dauORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + dauPostgreSQL: Result:= Postgres_IdentifierNeedsQuoting(iIdentifier); + dauIBMDB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + dauASE,dauAdvantage: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + else + + end; + {$ENDIF} +end; + +function TDAEUniDACConnection.isSchemaSupported: Boolean; +var + Fld: TField; +begin + if FSchemaSupported = -1 then begin + With fConnection.CreateMetaData do try + MetaDataKind := 'tables'; + Restrictions.Values['TABLE_NAME']:='___'; + Open; + Fld := FindField('TABLE_SCHEMA'); + Result := Assigned(Fld) and (Fld.Size <> 0); + FSchemaSupported := ord(Result); + finally + Free; + end; + end + else + Result := FSchemaSupported = 1; +end; + +function TDAEUniDACConnection.QueryInterface(const IID: TGUID; + out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if fDriverType <> dauInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBTransactionAccess) then begin + if fDriverType <> dauInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBConnectionProperties) then begin + if fDriverType <> dauInterbase then Exit; + end else if IsEqualGUID(IID, IDAOracleConnection) then begin + if fDriverType <> dauOracle then Exit; + end else if IsEqualGUID(IID, IDASQLiteConnection) then begin + if fDriverType <> dauSQLite then Exit; + end else if IsEqualGUID(IID, IDADB2Connection) then begin + if fDriverType <> dauIBMDB2 then Exit; + end else if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [dauAdvantage, dauASE]) then Exit; + end else if IsEqualGUID(IID, IDAPostgresConnection) then begin + if fDriverType <> dauPostgreSQL then Exit; + end else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if fDriverType <> dauMySQL then Exit; + end else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fDriverType in [dauInterBase, dauSQLite, dauAccess]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dauInterBase, dauSQLite, dauAccess]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fDriverType in [dauInterBase, dauOracle, dauPostgreSQL]) then Exit; + end else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dauInterBase]) then Exit; + end + + // else if IsEqualGUID(IID, IDAConnectionModelling) then + // else if IsEqualGUID(IID, IDADirectoryBasedDatabase) then + ; + Result := inherited QueryInterface(IID, Obj); +end; + +procedure TDAEUniDACConnection.Rollback; +begin + Self.DoRollbackTransaction; +end; + +procedure TDAEUniDACConnection.SetCharset(const Value: string); +begin + fConnection.SpecificOptions.Values['Charset'] := Value; +end; + +procedure TDAEUniDACConnection.SetRole(const Value: string); +begin + fConnection.SpecificOptions.Values['Role'] := Value; +end; + +procedure TDAEUniDACConnection.SetSQLDialect(Value: integer); +begin + fConnection.SpecificOptions.Values['SQLDialect'] := IntToStr(Value); +end; + +{ TDAEUniDACQuery } + +procedure TDAEUniDACQuery.ClearParams; +begin + inherited; + TUniQuery(Dataset).Params.Clear; +end; + +function TDAEUniDACQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TUniQuery.Create(nil); + TUniQuery(result).Unidirectional := True; + TUniQuery(result).ReadOnly := TRUE; + TUniQuery(result).Connection := TDAEUniDACConnection(aConnection).fConnection; +end; + +function TDAEUniDACQuery.DoExecute: integer; +begin + TUniQuery(Dataset).Execute; + result := TUniQuery(Dataset).RowsAffected; +end; + +function TDAEUniDACQuery.DoGetSQL: string; +begin + result := TUniQuery(Dataset).SQL.Text; +end; + +procedure TDAEUniDACQuery.DoPrepare(Value: boolean); +var + i: integer; + par: TUniParam; +begin + if Value and not TUniQuery(Dataset).Prepared and (TUniQuery(Dataset).ParamCount<>0) then begin + for I := 0 to GetParams.Count - 1 do begin + par:=TUniQuery(Dataset).ParamByName(GetParams[i].Name); + par.DataType:= DATypeToVCLType(GetParams[i].DataType); + if par.DataType = ftAutoInc then par.DataType:= ftInteger; + end; + end; + TUniQuery(Dataset).Prepared := Value; +end; + +procedure TDAEUniDACQuery.DoSetSQL(const Value: string); +begin + TUniQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAEUniDACQuery.GetParamValues(AParams: TDAParamCollection); +var + I: Integer; + lParam: TUniParam; +begin + for i := 0 to TUniQuery(DataSet).Params.Count - 1 do begin + lParam:=TUniQuery(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +procedure TDAEUniDACQuery.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TUniQuery(Dataset).Params, true); +end; + +{ TDAEUniDACStoredProcedure } + +function TDAEUniDACStoredProcedure.CreateDataset( + aConnection: TDAEConnection): TDataset; +begin + result := TUniStoredProc.Create(nil); + TUniStoredProc(result).Connection := TDAEUniDACConnection(aConnection).fConnection; +end; + +function TDAEUniDACStoredProcedure.DoExecute: integer; +begin + with TUniStoredProc(Dataset) do begin + ExecProc; + result := RowsAffected; + end; +end; + +function TDAEUniDACStoredProcedure.Execute: integer; +var + i: integer; + _params: TDAParamCollection; + lParam: uDAInterfaces.TDAParam; +begin + _params := GetParams; + + with TUniStoredProc(Dataset) do begin + for i := 0 to (Params.Count - 1) do + if (Params[i].ParamType in [ptInput, ptInputOutput]) then begin + lParam := _params.ParamByName(Params[i].Name); + if (Params[i].DataType in [ftMemo, ftBlob, ftGraphic]) and VarIsArray(lParam.Value)then + Params[i].Value := VariantToAnsiString(lParam.Value) + else + Params[i].Value := lParam.Value; + end; + + result := DoExecute; + + for i := 0 to (_params.Count-1) do + if (_params[i].ParamType in [daptOutput, daptInputOutput, daptResult]) + then _params[i].Value := params.ParamByName(_params[i].Name).Value; + end; +end; + +procedure TDAEUniDACStoredProcedure.GetParamValues(AParams: TDAParamCollection); +var + i: Integer; + lParam: TUniParam; +begin + for i := 0 to TUniStoredProc(DataSet).Params.Count - 1 do begin + lParam:=TUniStoredProc(DataSet).Params[i]; + if (lParam.ParamType in [ptOutput, ptInputOutput, ptResult]) then + Aparams.ParamByName(lParam.Name).Value := lParam.Value; + end; +end; + +function TDAEUniDACStoredProcedure.GetStoredProcedureName: string; +begin + result := TUniStoredProc(Dataset).StoredProcName; +end; + +procedure TDAEUniDACStoredProcedure.RefreshParams; +begin + TUniStoredProc(Dataset).PrepareSQL; + RefreshParamsStd(TUniStoredProc(Dataset).Params); +end; + +procedure TDAEUniDACStoredProcedure.SetParamValues(AParams: TDAParamCollection); +begin + WriteCrLabsParamValues(AParams, TUniStoredProc(Dataset).Params); +end; + +procedure TDAEUniDACStoredProcedure.SetStoredProcedureName(const Name: string); +begin + TUniStoredProc(Dataset).StoredProcName := Name; +end; + +{$IFNDEF DARWIN} +exports GetDriverObject name func_GetDriverObject; +{$ENDIF} + +initialization +{$IFDEF FPC} + {$I DataAbstract_UniDACDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); + +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas new file mode 100644 index 0000000..90798e5 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/Drivers/uDAZeosDriver.pas @@ -0,0 +1,1267 @@ +unit uDAZeosDriver; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Driver Library } +{ } +{ compiler: Delphi 6 and up , FPC } +{ platform: Win32 } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +interface + +uses + Classes, DB, + ZConnection, ZSqlMetadata,ZDbcIntfs, ZClasses, + uDAInterfaces, + uDAADOInterfaces, + uDAIBInterfaces, + uDASQLiteInterfaces, + uDAOracleInterfaces, + uDAMySQLInterfaces, + uDADB2Interfaces, + uDASybaseInterfaces, + uDAPostgresInterfaces, + uROClasses, uDAEngine, uDAUtils; + +// declare for Zeos7 under FPC +{.$DEFINE ZEOS7} + + +{$IFNDEF FPC} +// it produces "Fatal: Internal error 200501152" under FPC +{$IF ZEOS_VERSION > '7'}{$DEFINE ZEOS7}{$IFEND} +{$ENDIF} + +{$IFNDEF ZEOS7} +type + IZDatabaseInfo = IZDatabaseMetadata; +{$ENDIF} + +type + TDAZEOSDriverType = ( + dazUnknown, + dazADO, + dazASA, + dazIBMDB2, + dazInterBase, + dazMSSQL, + dazMySQL, + dazOracle, + dazPostgreSQL, + dazSQLite, + dazSybase); + +const + ZEOS_ADO = 'ado'; + ZEOS_ASA = 'asa'; + ZEOS_IBMDB2 = 'db2'; + ZEOS_Interbase = 'interbase'; + ZEOS_Firebird = 'firebird'; + ZEOS_MSSQL = 'mssql'; + ZEOS_MySQL = 'mysql'; + ZEOS_ORACLE = 'oracle'; + ZEOS_PostgreSQL = 'postgresql'; + ZEOS_SQLite = 'sqlite'; + ZEOS_SYBASE = 'sybase'; + +type + { TDAZeosDriver } + TDAZeosDriver = class(TDADriverReference) + end; + + { TDAESampleDriver } + TDAESampleDriver = class(TDAEDriver, IDADriver40) + // TDAESampleDriver = class(TDAIBDriver, IDADriver40) + protected + function GetConnectionClass: TDAEConnectionClass; override; + //procedure CustomizeConnectionObject(aConnection: TDAEConnection); override; + //procedure DoSetTraceOptions(TraceActive: boolean; TraceFlags: TDATraceOptions; Callback: TDALogTraceEvent); override; + + { IDADriver } + function GetDriverID: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDescription: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetMajVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetMinVersion: byte; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxDrivers(out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetAuxParams(const AuxDriver: string; out List: IROStrings); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptions: TDAAvailableDriverOptions; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAvailableDriverOptionsEx(AuxDriver: string): TDAAvailableDriverOptions; override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure Initialize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure Finalize; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetDefaultCustomParameters: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDADriver40 } + function GetProviderDefaultCustomParameters(Provider: string): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + TZEOSConnection = class(TDAConnectionWrapper) + private + fConnection: TZConnection; + fMetaData: TZSQLMetaData; + protected + function GetConnected: Boolean; override; + procedure SetConnected(Value: boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Connection: TZConnection read fConnection write fConnection; + end; + + { TDAESampleConnection } + TDAESampleConnection = class(TDAEConnection, IDAConnection, + IDAADOConnection, + IDAInterbaseConnection, //IDAIBTransactionAccess, IDAIBConnectionProperties, + IDAOracleConnection, + IDAMySQLConnection, + IDASQLiteConnection, + IDADB2Connection, + IDASybaseConnection, + IDAPostgresConnection, + // IDAConnectionModelling, + IDACanQueryDatabaseNames, + IDAFileBasedDatabase, + // IDADirectoryBasedDatabase, + IDAUseGenerators, + IDAUseGenerators2, + IDACanQueryGeneratorsNames, + IDATestableObject) + private + fNativeConnection: TZEOSConnection; + fDriverType: TDAZEOSDriverType; + fDriverName: string; + fADOProviderName: string; + fADOProviderType: TDAOleDBProviderType; + fMSSQLSchemaEnabled: Boolean; + FMySQLVersion: integer; + function GetMySQLVersion: integer; + procedure DoGetNames(AList: IROStrings; AObjectType: TDAObjecttype); + function ZEOS_GetMetaData: IZDatabaseMetadata; + function ZEOS_GetDataBaseInfo: IZDatabaseInfo; + procedure FixWideStringBug(AFields: TDAFieldCollection); + protected + function QueryInterface(const IID: TGUID; out Obj): HResult; override; stdcall; + + function CreateCustomConnection: TCustomConnection; override; + function CreateMacroProcessor: TDASQLMacroProcessor; override; + function GetDatasetClass: TDAEDatasetClass; override; + function GetStoredProcedureClass: TDAEStoredProcedureClass; override; + procedure DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); override; + + // transaction support + function DoBeginTransaction: integer; override; + procedure DoCommitTransaction; override; + procedure DoRollbackTransaction; override; + function DoGetInTransaction: boolean; override; + + procedure DoGetTableNames(out List: IROStrings); override; + procedure DoGetViewNames(out List: IROStrings); override; + procedure DoGetStoredProcedureNames(out List: IROStrings); override; + + procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override; + procedure DoGetQueryFields(const aSQL: string; aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); override; + //procedure DoGetViewFields(const aViewName: string; out Fields: TDAFieldCollection); override; + + procedure DoGetStoredProcedureParams(const aStoredProcedureName: string; out Params: TDAParamCollection); override; + procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override; + + function DoGetLastAutoIncValue(const GeneratorName: string): Variant; override; + + { IDATestableObject } + // procedure Test; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAConnection } + + function GetSPSelectSyntax(HasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetQuoteChars: TDAQuoteCharArray; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function IdentifierIsQuoted(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifierIfNeeded(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteIdentifier(const iIdentifier: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldNameIfNeeded(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function QuoteFieldName(const aTableName, aFieldName: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function NewCommand(const Text: string; CommandType: TDASQLStatementType; const aCommandName: string = ''): IDASQLCommand; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function NewDataset(const SQL: string; const aDatasetName: string = ''): IDADataset; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // function isAlive: Boolean; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function GetQueryBuilder: TDAQueryBuilder; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAADOConnection } + function GetProviderName: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetProviderType: TDAOleDBProviderType; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCommandTimeout: Integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCommandTimeout(const Value: Integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAInterbaseConnection } + // nothing + + { IDAIBTransactionAccess } + //function GetTransaction: TObject; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + //procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAIBConnectionProperties } + function GetRole: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetRole(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetSQLDialect: integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetSQLDialect(Value: integer); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetCharset: string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetCharset(const Value: string); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + procedure Commit; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CommitRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure Rollback; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure RollbackRetaining; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDAOracleConnection } + // nothing + + { IDAConnectionModelling } + // function FieldToDeclaration(aField: TDAField): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function BuildCreateTableSQL(aDataSet: TDADataSet; const aOverrideName: string = ''): string; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // procedure CreateTable(aDataSet: TDADataSet; const aOverrideName: string = ''); {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryDatabaseNames } + function GetDatabaseNames: IROStrings; + + { IDAFileBasedDatabase } + function GetFileExtensions: IROStrings; + + { IDADirectoryBasedDatabase } + // nothing + + { IDAUseGenerators } + function GetNextAutoinc(const GeneratorName: string): integer; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + { IDAUseGenerators2 } + function GetNextAutoinc2(const GeneratorName: string): variant; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + { IDACanQueryGeneratorsNames } + function GetGeneratorNames: IROStrings; + + public + constructor Create(aDriver: TDAEDriver; aName: string = ''); override; + end; + + { TDAESampleQuery } + TDAESampleQuery = class(TDAEDataset , IDAMustSetParams) + protected + // procedure PrepareSQLStatement; override; + procedure ClearParams; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + procedure DoPrepare(Value: boolean); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + public + end; + + { TDAESampleStoredProcedure } + TDAESampleStoredProcedure = class(TDAEStoredProcedure, IDAMustSetParams) + protected + // Internal + // function DoGetStoredProcedureName: string; override; + // procedure DoSetStoredProcedureName(const Name: string); override; + procedure DoPrepare(Value: boolean); override; + procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // IDAStoredProcedure + function GetStoredProcedureName: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure SetStoredProcedureName(const Name: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + + // procedure PrepareSQLStatement; override; + function CreateDataset(aConnection: TDAEConnection): TDataset; override; + function DoExecute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure DoSetSQL(const Value: string); override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function DoGetSQL: string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function intVCLTypeToDAType(aFieldType: TFieldType): TDADataType;override; + + { IDASQLCommand } + // procedure RefreshParams; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function Execute: integer; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + // function DoGetRecordCount: integer; override; + // function DoGetActive: boolean; override; + // procedure DoSetActive(Value: boolean); override; + // function DoGetBOF: boolean; override; + // function DoGetEOF: boolean; override; + // procedure DoNext; override; + // function DoLocate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override; + + // IDAMustSetParams + procedure SetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + procedure GetParamValues(AParams: TDAParamCollection); override;{$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + end; + +procedure Register; + +function GetDriverObject: IDADriver; stdcall; + +implementation + +uses + {$IFDEF FPC}LResources,{$ENDIF} + {$IFDEF MSWINDOWS}Windows, {$ENDIF} + Variants, Types, SysUtils, + uDADriverManager, uDARes, uDASQL92Interfaces, + ZDataset, ZStoredProcedure; + +{$IFNDEF FPC} + {$R DataAbstract_ZeosDriver_Glyphs.res} +{$ENDIF} + +var + _driver : TDAEDriver = nil; + +procedure Register; +begin + RegisterComponents(DAPalettePageName, [TDAZeosDriver]); +end; + +function GetDriverObject: IDADriver; +begin + if (_driver = nil) then _driver := TDAESampleDriver.Create(nil); + result := _driver; +end; + +function ZEOSDriverIdToZEOSDriverType(aAuxDriver: string): TDAZEOSDriverType; +begin + aAuxDriver := LowerCase(aAuxDriver); + if aAuxDriver = '' then Result := dazUnknown + else if Pos(ZEOS_ADO, aAuxDriver) = 1 then Result := dazADO + else if Pos(ZEOS_ASA, aAuxDriver) = 1 then Result := dazASA + else if Pos(ZEOS_IBMDB2, aAuxDriver) = 1 then Result := dazIBMDB2 + else if Pos(ZEOS_Interbase, aAuxDriver) = 1 then Result := dazInterBase + else if Pos(ZEOS_Firebird, aAuxDriver) = 1 then Result := dazInterBase + else if Pos(ZEOS_MSSQL, aAuxDriver) = 1 then Result := dazMSSQL + else if Pos(ZEOS_MySQL, aAuxDriver) = 1 then Result := dazMySQL + else if Pos(ZEOS_ORACLE, aAuxDriver) = 1 then Result := dazOracle + else if Pos(ZEOS_PostgreSQL, aAuxDriver) = 1 then Result := dazPostgreSQL + else if Pos(ZEOS_SQLite, aAuxDriver) = 1 then Result := dazSQLite + else if Pos(ZEOS_SYBASE, aAuxDriver) = 1 then Result := dazSybase + else Result := dazUnknown; +end; + +{ TDAESampleConnection } + +procedure TDAESampleConnection.DoApplyConnectionString(aConnStrParser: TDAConnectionStringParser; aConnectionObject: TCustomConnection); +var + i : Integer; + sName, sValue : string; +begin + FMySQLVersion := -1; + inherited; + with aConnStrParser do begin + fDriverName := AuxDriver; + fDriverType := ZEOSDriverIdToZEOSDriverType(AuxDriver); + fADOProviderName := AuxParams['Provider']; + FADOProviderType := OleDBDriverIdToOleDBProviderType(FADOProviderName); + + fNativeConnection.fConnection.Protocol := AuxDriver; + if (Self.UserID <> '') then + fNativeConnection.fConnection.User := Self.UserID + else + fNativeConnection.fConnection.User := UserID; + + if (Self.Password <> '') then + fNativeConnection.fConnection.Password := Self.Password + else + fNativeConnection.fConnection.Password := Password; + if Server <> '' then fNativeConnection.fConnection.HostName := Server; + if Database <> '' then begin + fNativeConnection.fConnection.Database := Database; + if fDriverType <> dazSQLite then + fNativeConnection.fConnection.Catalog := Database; + end; + + for i := 0 to AuxParamsCount - 1 do begin + sName := AuxParamNames[i]; + if sName = '' then Continue; + sValue := AuxParams[AuxParamNames[i]]; + if AnsiSameText(sName, 'role') then begin + if fDriverType = dazInterBase then sName := 'rolename'; + end else if AnsiSameText(sName, 'charset') then begin + if fDriverType = dazInterBase then sName := 'codepage'; + end else if AnsiSameText(sName, 'port') then begin + if StrToIntDef(sValue, -1) <> -1 then fNativeConnection.fConnection.Port := StrToInt(sValue); + end else begin + if sName[1] = '@' then sName := Pchar(sName) + 1; + end; + fNativeConnection.fConnection.Properties.Values[sName] := sValue; + end; + + if fDriverType = dazADO then begin + if fADOProviderName = '' then + raise EDADriverException.Create('No proviver specified for ADO auxdriver'); + + fNativeConnection.fConnection.Properties.Values['User ID'] := fNativeConnection.fConnection.User; + fNativeConnection.fConnection.Properties.Values['Password'] := fNativeConnection.fConnection.Password; + if FADOProviderType = oledb_Jet then begin + fNativeConnection.fConnection.Properties.Values['Data Source'] := Database; + end else begin + if Database <> '' then begin + if fADOProviderType = oledb_Postgresql then + fNativeConnection.fConnection.Properties.Values['Location'] := Database + else + fNativeConnection.fConnection.Properties.Values['Initial Catalog'] := Database; + end; + if Server <> '' then fNativeConnection.fConnection.Properties.Values['Data Source'] := Server; + if fADOProviderType <> oledb_Postgresql then fNativeConnection.fConnection.Properties.Values['OLE DB SERVICES'] := '-2'; + end; + fNativeConnection.fConnection.Database := ''; + for i := 0 to fNativeConnection.fConnection.Properties.Count - 1 do begin + sName:=fNativeConnection.fConnection.Properties.Names[i]; + sValue:=fNativeConnection.fConnection.Properties.Values[sName]; + fNativeConnection.fConnection.Database:=fNativeConnection.fConnection.Database + sName+'='+sValue+';' + end; + end; + end; +end; + +function TDAESampleConnection.DoBeginTransaction: integer; +begin + fNativeConnection.fConnection.StartTransaction; + Result := 0; +end; + +procedure TDAESampleConnection.DoCommitTransaction; +begin + fNativeConnection.fConnection.Commit; +end; + +function TDAESampleConnection.CreateCustomConnection: TCustomConnection; +begin + fNativeConnection := TZEOSConnection.Create(nil); + result := fNativeConnection; +end; + +function TDAESampleConnection.GetDatasetClass: TDAEDatasetClass; +begin + result := TDAESampleQuery; +end; + +function TDAESampleConnection.GetStoredProcedureClass: TDAEStoredProcedureClass; +begin + result := TDAESampleStoredProcedure; +end; + +procedure TDAESampleConnection.DoRollbackTransaction; +begin + fNativeConnection.fConnection.Rollback; +end; + +function TDAESampleConnection.DoGetInTransaction: boolean; +begin + Result := fNativeConnection.fConnection.InTransaction +end; + +function TDAESampleConnection.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + Result := E_NOINTERFACE; + if IsEqualGUID(IID, IDAADOConnection) then begin + if fDriverType <> dazADO then Exit; + end else if IsEqualGUID(IID, IDAInterbaseConnection) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBTransactionAccess) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAIBConnectionProperties) then begin + if fDriverType <> dazInterbase then Exit; + end else if IsEqualGUID(IID, IDAOracleConnection) then begin + if fDriverType <> dazOracle then Exit; + end else if IsEqualGUID(IID, IDASQLiteConnection) then begin + if fDriverType <> dazSQLite then Exit; + end else if IsEqualGUID(IID, IDADB2Connection) then begin + if fDriverType <> dazIBMDB2 then Exit; + end else if IsEqualGUID(IID, IDASybaseConnection) then begin + if not (fDriverType in [dazSybase, dazASA]) then Exit; + end else if IsEqualGUID(IID, IDAPostgresConnection) then begin + if fDriverType <> dazPostgreSQL then Exit; + end else if IsEqualGUID(IID, IDAMySQLConnection) then begin + if fDriverType <> dazMySQL then Exit; + end else if IsEqualGUID(IID, IDACanQueryDatabaseNames) then begin + if (fDriverType in [dazInterBase, dazSQLite]) then Exit; + end else if IsEqualGUID(IID, IDAFileBasedDatabase) then begin + if not (fDriverType in [dazInterBase, dazSQLite]) then Exit; + end else if IsEqualGUID(IID, IDAUseGenerators) or IsEqualGUID(IID, IDAUseGenerators2) then begin + if not (fDriverType in [dazInterBase, dazOracle, dazPostgreSQL]) then Exit; + end else if IsEqualGUID(IID, IDACanQueryGeneratorsNames) then begin + if not (fDriverType in [dazInterBase]) then Exit; + end + + // else if IsEqualGUID(IID, IDAConnectionModelling) then + // else if IsEqualGUID(IID, IDADirectoryBasedDatabase) then + ; + Result := inherited QueryInterface(IID, Obj); +end; + +constructor TDAESampleConnection.Create(aDriver: TDAEDriver; aName: string); +begin + inherited Create(aDriver, aName); + fMSSQLSchemaEnabled := True; +end; + +function TDAESampleConnection.CreateMacroProcessor: TDASQLMacroProcessor; +begin + case fDriverType of + dazInterBase: Result := IB_CreateMacroProcessor; + dazMSSQL: Result := MSSQL_CreateMacroProcessor; + dazOracle: Result := Oracle_CreateMacroProcessor; + else + Result := inherited CreateMacroProcessor; + end; +end; + +function TDAESampleConnection.GetFileExtensions: IROStrings; +begin + case fDriverType of + dazInterBase: Result := IB_GetFileExtensions; + dazSQLite: Result := SQLite_GetFileExtensions; + else + Result := NewROStrings; + end; +end; + +function TDAESampleConnection.GetGeneratorNames: IROStrings; +begin + case fDriverType of + dazInterBase: Result:= IB_GetGeneratorNames(GetDatasetClass.Create(Self)); + else + Result := NewROStrings; + end; +end; + +procedure TDAESampleConnection.DoGetTableNames(out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fNativeConnection.fConnection.Catalog,GetMySQLVersion); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotTable); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotTable); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotTable, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotTable); + end; + end +end; + +procedure TDAESampleConnection.DoGetViewNames(out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fNativeConnection.fConnection.Catalog,GetMySQLVersion); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotView); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotView); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotView, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotView); + end; + end +end; + +procedure TDAESampleConnection.DoGetStoredProcedureNames( + out List: IROStrings); +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled); + dazInterBase: IB_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazMYSQL: MYSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fNativeConnection.fConnection.Catalog,GetMySQLVersion); + dazSQLite: SQLite_GetObjectNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazPostgreSQL: Postgres_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + dazOracle: Oracle_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetNames(GetDatasetClass.Create(Self), List, dotProcedure, fMSSQLSchemaEnabled) + else begin + DoGetNames(List, dotProcedure); + end; + end +end; + +procedure TDAESampleConnection.DoGetTableFields(const aTableName: string; + out Fields: TDAFieldCollection); +var + lschema, ltbl : string; + fld : TDAField; +begin + case fDriverType of + dazMSSQL: MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazInterBase: IB_GetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazMySQL: MYSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields, fNativeConnection.fConnection.Catalog,GetMySQLVersion); + dazOracle: Oracle_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + dazPostgreSQL: Postgres_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName), GetDatasetClass.Create(Self), Fields) + else begin + inherited; + if Pos('.', aTableName) > 0 then begin + lschema := Trim(Copy(aTableName, 1, Pos('.', aTableName) - 1)); + ltbl := Trim(Copy(aTableName, Pos('.', aTableName) + 1, Length(aTableName))); + end else begin + lschema := ''; + ltbl := aTableName; + end; + // required+default value + with ZEOS_GetMetadata.GetColumns(fNativeConnection.fConnection.Catalog, lschema, ltbl, '') do + while Next do begin + fld := Fields.FindField(GetStringByName('COLUMN_NAME')); + if fld = nil then Continue; + fld.Required := GetStringByName('IS_NULLABLE') = 'NO'; + + fld.DefaultValue := GetStringByName('COLUMN_DEF'); + if not TestDefaultValue(fld.DefaultValue, fld.DataType) then + fld.DefaultValue := ''; + end; + // pk + with ZEOS_GetMetadata.GetPrimaryKeys(fNativeConnection.fConnection.Catalog, lschema, ltbl) do + while Next do begin + fld := Fields.FindField(GetStringByName('COLUMN_NAME')); + if fld = nil then Continue; + fld.Required := True; + fld.InPrimaryKey := True; + end; + end; + end; + FixWideStringBug(Fields); +end; + +procedure TDAESampleConnection.DoGetForeignKeys( + out ForeignKeys: TDADriverForeignKeyCollection); +var + lSupportedSchema : boolean; +begin + inherited; + case fDriverType of + dazMSSQL: MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled); + dazInterBase: IB_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dazMySQL: MYSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fNativeConnection.fConnection.Catalog,GetMySQLVersion); + dazPostgreSQL: Postgres_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + dazOracle: Oracle_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys); + dazSQLite: SQLite_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + MSSQL_DoGetForeignKeys(GetDatasetClass.Create(Self), ForeignKeys, fMSSQLSchemaEnabled) + else begin + lSupportedSchema := ZEOS_GetDataBaseInfo.SupportsSchemasInDataManipulation; + with ZEOS_GetMetadata.GetCrossReference(fNativeConnection.fConnection.Catalog, '', '', fNativeConnection.fConnection.Catalog, '', '') do + while Next do + with ForeignKeys.Add do begin + if lSupportedSchema then begin + PKTable := GetStringByName('PKTABLE_SCHEM') + '.' + GetStringByName('PKTABLE_NAME'); + FKTable := GetStringByName('FKTABLE_SCHEM') + '.' + GetStringByName('FKTABLE_NAME'); + end + else begin + PKTable := GetStringByName('PKTABLE_NAME'); + FKTable := GetStringByName('FKTABLE_NAME'); + end; + PKField := GetStringByName('PKCOLUMN_NAME'); + FKField := GetStringByName('FKCOLUMN_NAME'); + end; + end; + end; +end; + +function TDAESampleConnection.GetDatabaseNames: IROStrings; +begin + case fDriverType of + dazMSSQL: Result := MSSQL_GetDatabaseNames(Self); + dazMySQL: Result := MYSQL_GetDatabaseNames(Self); + dazPostgreSQL: Result := Postgres_GetDatabaseNames(Self); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetDatabaseNames(Self) + else begin + Result := NewROStrings; + with ZEOS_GetMetadata.GetCatalogs do + while Next do + Result.Add(GetStringByName('TABLE_CAT')); + end; + end; +end; + +function TDAESampleConnection.GetQuoteChars: TDAQuoteCharArray; +var + s : string; +begin + Result := inherited GetQuoteChars; + case fDriverType of + dazMSSQL: Result := MSSQL_GetQuoteChars; + dazOracle: Result:= Oracle_GetQuoteChars; + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetQuoteChars + else begin + s := ZEOS_GetDataBaseInfo.GetIdentifierQuoteString; + if Length(s) = 1 then begin + Result[0] := s[1]; + Result[1] := s[1]; + end + else if Length(s) = 2 then begin + Result[0] := s[1]; + Result[1] := s[2]; + end + end; + end; +end; + +function TDAESampleConnection.IdentifierNeedsQuoting( + const iIdentifier: string): boolean; + + function _getList: string; + begin + fNativeConnection.Connected:=True; + with ZEOS_GetDataBaseInfo do + Result := + GetSQLKeywords + ',' + + GetNumericFunctions + ',' + + GetStringFunctions + ',' + + GetSystemFunctions + ',' + + GetTimeDateFunctions; + end; + +var + lList : TstringList; + i : integer; +begin + Result:= inherited IdentifierNeedsQuoting(iIdentifier); + if not result then + case fDriverType of + dazMSSQL: Result := MSSQL_IdentifierNeedsQuoting(iIdentifier); + dazInterBase: Result := IB_IdentifierNeedsQuoting(iIdentifier, GetSQLDialect); + dazMySQL: Result := MYSQL_IdentifierNeedsQuoting(iIdentifier); + dazORACLE: Result := Oracle_IdentifierNeedsQuoting(iIdentifier); + dazPostgreSQL: Result:= Postgres_IdentifierNeedsQuoting(iIdentifier); + dazIBMDB2: Result := DB2_IdentifierNeedsQuoting(iIdentifier); + dazASA,dazSybase: Result := Sybase_IdentifierNeedsQuoting(iIdentifier); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_IdentifierNeedsQuoting(iIdentifier) + else begin + lList := TStringList.Create; + try + lList.CommaText := _getList; + for i := 0 to lList.Count - 1 do + if CompareText(llist[i], iIdentifier) = 0 then begin + Result := True; + Exit; + end; + finally + lList.Free; + end + end; + end; +end; + +function TDAESampleConnection.GetRole: string; +begin + Result := fNativeConnection.fConnection.Properties.Values['rolename']; +end; + +function TDAESampleConnection.GetSQLDialect: integer; +begin + Result := StrToIntDef(fNativeConnection.fConnection.Properties.Values['dialect'], -1); + if Result = -1 then begin + if fDriverName = 'interbase-5' then + Result := 1 + else + Result := 3; + end; +end; + +procedure TDAESampleConnection.SetRole(const Value: string); +begin + fNativeConnection.fConnection.Properties.Values['rolename'] := Value; +end; + +procedure TDAESampleConnection.SetSQLDialect(Value: integer); +begin + fNativeConnection.fConnection.Properties.Values['dialect'] := IntToStr(Value); +end; + +function TDAESampleConnection.GetCharset: string; +begin + Result := fNativeConnection.fConnection.Properties.Values['codepage']; +end; + +procedure TDAESampleConnection.SetCharset(const Value: string); +begin + fNativeConnection.fConnection.Properties.Values['codepage'] := Value; +end; + +procedure TDAESampleConnection.Commit; +begin + Self.DoCommitTransaction; +end; + +procedure TDAESampleConnection.Rollback; +begin + Self.DoRollbackTransaction; +end; + +function TDAESampleConnection.DoGetLastAutoIncValue(const GeneratorName: string): Variant; +begin + Result := -1; + case fDriverType of + dazMSSQL: Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazInterBase: Result := IB_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazMySQL: Result := MySQL_GetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazOracle: Result := Oracle_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + dazPostgreSQL: Result := Postgres_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_DoGetLastAutoInc(GeneratorName, GetDatasetClass.Create(Self)) + else ; + end; +end; + +function TDAESampleConnection.GetNextAutoinc( + const GeneratorName: string): integer; +begin + Result := GetNextAutoinc2(GeneratorName); +end; + +procedure TDAESampleConnection.DoGetNames(AList: IROStrings; + AObjectType: TDAObjecttype); +var + lTableTypes : TStringDynArray; + lsupportSchema : Boolean; + lprocname : string; + i : integer; +begin + fNativeConnection.fConnection.Connect; + lsupportSchema := ZEOS_GetDataBaseInfo.SupportsSchemasInDataManipulation; + if AObjectType = dotProcedure then begin + with ZEOS_GetMetadata.GetProcedures(fNativeConnection.fConnection.Catalog, '', '') do + while Next do begin + lprocname := GetStringByName('PROCEDURE_NAME'); + i := pos(';', lprocname); + if i > 0 then lprocname := Copy(lprocname, 1, i - 1); + if lsupportSchema then + aList.Add(GetStringByName('PROCEDURE_SCHEM') + '.' + lprocname) + else + aList.Add(lprocname) + end; + end + else begin + SetLength(lTableTypes, 1); + if AObjectType = dotTable then + lTableTypes[0] := 'TABLE' + else + lTableTypes[0] := 'VIEW'; + with ZEOS_GetMetadata.GetTables(fNativeConnection.fConnection.Catalog, '', '', lTableTypes) do + while Next do + if lsupportSchema then + aList.Add(GetStringByName('TABLE_SCHEM') + '.' + GetStringByName('TABLE_NAME')) + else + aList.Add(GetStringByName('TABLE_NAME')) + end; +end; + +function TDAESampleConnection.GetSPSelectSyntax( + HasArguments: Boolean): string; +begin + case fDriverType of + dazMSSQL: Result := MSSQL_GetSPSelectSyntax(HasArguments); + dazInterBase: Result := IB_GetSPSelectSyntax(HasArguments); + dazOracle: Result := Oracle_GetSPSelectSyntax(HasArguments); + dazPostgreSQL: Result := Postgres_GetSPSelectSyntax(HasArguments); + else + if (fDriverType = dazADO) and (fADOProviderType in [oledb_MSSQL, oledb_MSSQL2005]) then + Result := MSSQL_GetSPSelectSyntax(HasArguments) + else begin + Result := inherited GetSPSelectSyntax(HasArguments); + end; + end; +end; + +function TDAESampleConnection.GetCommandTimeout: Integer; +begin + Result := StrToIntDef(fNativeConnection.fConnection.Properties.Values['timeout'], 0); +end; + +function TDAESampleConnection.GetProviderName: string; +begin + Result := fADOProviderName; +end; + +function TDAESampleConnection.GetProviderType: TDAOleDBProviderType; +begin + Result := fADOProviderType; +end; + +procedure TDAESampleConnection.SetCommandTimeout(const Value: Integer); +begin + fNativeConnection.fConnection.Properties.Values['timeout'] := InttoStr(Value); +end; + +procedure TDAESampleConnection.DoGetStoredProcedureParams( + const aStoredProcedureName: string; out Params: TDAParamCollection); +begin + case fDriverType of + dazMySQL: MYSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params, fNativeConnection.fConnection.Catalog); + dazOracle: Oracle_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + dazPostgreSQL: Postgres_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + dazMSSQL: MSSQL_DoGetStoredProcedureParams(aStoredProcedureName, GetDatasetClass.Create(Self), Params); + else + inherited; + end; +end; + + +function TDAESampleConnection.ZEOS_GetDataBaseInfo: IZDatabaseInfo; +begin + {$IFDEF ZEOS7} + Result := ZEOS_GetMetaData.GetDatabaseInfo; + {$ELSE} + Result := ZEOS_GetMetaData; + {$ENDIF} +end; + +function TDAESampleConnection.ZEOS_GetMetaData: IZDatabaseMetadata; +begin + fNativeConnection.Connected:=True; + Result:= fNativeConnection.fConnection.DbcConnection.GetMetadata; +end; + +procedure TDAESampleConnection.FixWideStringBug(AFields: TDAFieldCollection); +{$IFDEF DA_WideMemoSupport} +var + i: integer; +{$ENDIF} +begin + {$IFDEF DA_WideMemoSupport} + For i:=0 to AFields.Count -1 do + with AFields[i] do + if (DataType = datWideString) and (Size = MaxInt div 2) then begin + DataType:= datWideMemo; + Size := 0; + end; + {$ENDIF} +end; + +procedure TDAESampleConnection.DoGetQueryFields(const aSQL: string; + aParamsIfNeeded: TDAParamCollection; out Fields: TDAFieldCollection); +begin + inherited; + FixWideStringBug(Fields); +end; + +function TDAESampleConnection.GetMySQLVersion: integer; +begin + if FMySQLVersion = -1 then FMySQLVersion := MYSQL_GetVersion(GetDatasetClass.Create(Self)); + Result := FMySQLVersion; +end; + +function TDAESampleConnection.GetNextAutoinc2( + const GeneratorName: string): variant; +begin + Result := -1; + case fDriverType of + dazInterBase: Result := IB_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dazOracle: Result := Oracle_GetNextAutoinc(GeneratorName, GetDatasetClass.Create(Self)); + dazPostgreSQL: Result := Postgres_GetNextAutoInc(GeneratorName, GetDatasetClass.Create(Self)); + end; +end; + +{ TDAESampleDriver } + +procedure TDAESampleDriver.GetAuxDrivers(out List: IROStrings); +var + i, j : integer; + lDrivers : IZCollection; + Protocols : TStringDynArray; +begin + inherited; + lDrivers := ZDbcIntfs.DriverManager.GetDrivers; + for i := 0 to lDrivers.Count - 1 do begin + Protocols := (lDrivers[I] as IZDriver).GetSupportedProtocols; + for J := Low(Protocols) to High(Protocols) do + List.Add(Protocols[J]); + end; + List.Sorted := True; +end; + +procedure TDAESampleDriver.GetAuxParams(const AuxDriver: string; + out List: IROStrings); +var + i : TDAOleDBProviderType; + s : string; +begin + inherited; + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazADO: begin + s := ''; + for i := Low(TDAOleDBProviderType) to High(TDAOleDBProviderType) do + if (i <> oledb_Unknown) {// Redundant but safe if I change the enum later...} then begin + if s <> '' then s := s + ';'; + s := s + OleDBProviders[i]; + end; + List.Add('Provider=(' + s + ')'); + end; + dazInterBase: AddIBAuxParams(List); + end; + if not (ZEOSDriverIdToZEOSDriverType(AuxDriver) in [dazAdo, dazSQLite]) then List.Add('Port='); + List.Add('timeout='); +end; + +function TDAESampleDriver.GetAvailableDriverOptions: TDAAvailableDriverOptions; +begin + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; +end; + +function TDAESampleDriver.GetAvailableDriverOptionsEx( + AuxDriver: string): TDAAvailableDriverOptions; +begin + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazSQLite : Result := [doAuxDriver, doDatabaseName, doCustom]; + else + Result := [doAuxDriver, doServerName, doDatabaseName, doLogin, doCustom]; + end; +end; + +function TDAESampleDriver.GetConnectionClass: TDAEConnectionClass; +begin + result := TDAESampleConnection; +end; + +function TDAESampleDriver.GetDefaultConnectionType( + const AuxDriver: string): string; +begin + case ZEOSDriverIdToZEOSDriverType(AuxDriver) of + dazADO: Result := ''; + dazMySQL: Result := MySQL_DriverType; + dazIBMDB2: Result:= DB2_DriverType; + dazInterBase: Result := IB_DriverType; + dazMSSQL: Result := MSSQL_DriverType; + dazOracle: Result := Oracle_DriverType; + dazPostgreSQL: Result := PostgreSQL_DriverType; + dazSQLite : Result:= SQLite_DriverType; + dazASA: Result:=ASA_DriverType; + dazSybase: Result:=Sybase_DriverType; + else + Result:= inherited GetDefaultConnectionType(AuxDriver); + end; +end; + +function TDAESampleDriver.GetDescription: string; +begin + result := 'DataAbstact Zeos Driver'; +end; + +function TDAESampleDriver.GetDriverID: string; +begin + result := 'ZEOS'; +end; + +function TDAESampleDriver.GetProviderDefaultCustomParameters( + Provider: string): string; +begin + Result := ''; + case ZEOSDriverIdToZEOSDriverType(Provider) of + dazADO: Result := 'Provider=;'; + dazMySQL: Result := MYSQL_GetDefaultCustomParameters; + end; +end; + +{ TDAESampleQuery } + +function TDAESampleQuery.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TZReadOnlyQuery.Create(nil); + TZReadOnlyQuery(result).Connection := TDAESampleConnection(aConnection).fNativeConnection.fConnection; +end; + +function TDAESampleQuery.DoExecute: integer; +begin + TZReadOnlyQuery(Dataset).ExecSQL; + Result:=TZReadOnlyQuery(Dataset).RowsAffected; +end; + +function TDAESampleQuery.DoGetSQL: string; +begin + result := TZReadOnlyQuery(Dataset).SQL.Text; +end; + +procedure TDAESampleQuery.DoPrepare(Value: boolean); +begin + // nothing +end; + +procedure TDAESampleQuery.DoSetSQL(const Value: string); +begin + TZReadOnlyQuery(Dataset).SQL.Text := Value; +end; + +procedure TDAESampleQuery.SetParamValues(AParams: TDAParamCollection); +var + i: integer; +begin + SetParamValuesStd(AParams, TZReadOnlyQuery(Dataset).Params); + // zeos doesn't support ftfmtBCD, ftBCD + for i:=0 to TZReadOnlyQuery(Dataset).Params.Count-1 do + with TZReadOnlyQuery(Dataset).Params[i] do begin + if DataType = ftBCD then AsCurrency := Value + else if DataType = ftFMTBCD then AsFloat := Value; + end; +end; + +procedure TDAESampleQuery.GetParamValues(AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TZReadOnlyQuery(Dataset).Params); +end; + +procedure TDAESampleQuery.ClearParams; +begin + inherited; + TZReadOnlyQuery(Dataset).Params.Clear; +end; + +{ TDAESampleStoredProcedure } + +function TDAESampleStoredProcedure.CreateDataset(aConnection: TDAEConnection): TDataset; +begin + result := TZStoredProc.Create(nil); + TZStoredProc(result).Connection := TDAESampleConnection(aConnection).fNativeConnection.fConnection; +end; + +function TDAESampleStoredProcedure.DoExecute: integer; +begin + TZStoredProc(Dataset).ExecProc; + Result:=TZStoredProc(Dataset).RowsAffected; +end; + +function TDAESampleStoredProcedure.DoGetSQL: string; +begin + Result := ''; +end; + +procedure TDAESampleStoredProcedure.DoPrepare(Value: boolean); +begin +end; + +procedure TDAESampleStoredProcedure.DoSetSQL(const Value: string); +begin +end; + +procedure TDAESampleStoredProcedure.GetParamValues( + AParams: TDAParamCollection); +begin + GetParamValuesStd(AParams, TZStoredProc(Dataset).Params); +end; + +function TDAESampleStoredProcedure.GetStoredProcedureName: string; +begin + Result := TZStoredProc(Dataset).StoredProcName; +end; + +procedure TDAESampleStoredProcedure.RefreshParams; +begin + RefreshParamsStd(TZStoredProc(Dataset).Params); +end; + +procedure TDAESampleStoredProcedure.SetParamValues( + AParams: TDAParamCollection); +var + i: integer; +begin + SetParamValuesStd(AParams, TZStoredProc(Dataset).Params); + // zeos doesn't support ftfmtBCD, ftBCD + for i:=0 to TZStoredProc(Dataset).Params.Count-1 do + with TZStoredProc(Dataset).Params[i] do begin + if DataType = ftBCD then AsCurrency := Value + else if DataType = ftFMTBCD then AsFloat := Value; + end +end; + +procedure TDAESampleStoredProcedure.SetStoredProcedureName( + const Name: string); +begin + TZStoredProc(Dataset).Connection.Connect; + TZStoredProc(Dataset).StoredProcName := Name; +end; + +{ TZEOSConnection } + +constructor TZEOSConnection.Create(AOwner: TComponent); +begin + inherited; + fConnection := TZConnection.Create(nil); + fConnection.LoginPrompt := False; + fMetaData := TZSQLMetaData.Create(nil); + fMetaData.Connection := fConnection; +end; + +destructor TZEOSConnection.Destroy; +begin + inherited; + FreeAndNil(fMetaData); + FreeAndNil(fConnection); +end; + +function TZEOSConnection.GetConnected: Boolean; +begin + if fConnection <> nil then + Result := fConnection.Connected + else + Result:=False; +end; + +procedure TZEOSConnection.SetConnected(Value: boolean); +begin + fConnection.Connected := Value; +end; + +{$IFNDEF DARWIN} +exports + GetDriverObject name func_GetDriverObject; +{$ENDIF} + +initialization +{$IFDEF FPC} + {$I DataAbstract_ZeosDriver_Glyphs.lrs} +{$ENDIF} + _driver := nil; + RegisterDriverProc(GetDriverObject); +finalization + UnregisterDriverProc(GetDriverObject); + FreeAndNIL(_driver); +end. + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.lrs b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.lrs new file mode 100644 index 0000000..d9a86b7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.lrs @@ -0,0 +1,76 @@ +LazarusResources.Add('dalogo','BMP',[ + 'BMX'#8#0#0#0#0#0#0'6'#4#0#0'('#0#0#0' '#0#0#0' '#0#0#0#1#0#8#0#1#0#0#0'"'#4#0 + +#0#194#30#0#0#194#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128 + +#128#0#128#0#0#0#128#0#128#0#128#128#0#0#192#192#192#0#192#220#192#0#240#202 + +#166#0#0#148#0#0#0'1'#0#0#0'J'#0#0#0'R'#0#0#0'c'#0#0#0'k'#0#0#0's'#0#0#0'{'#0 + +#0#0#132#0#0#0#140#0#0#0#148#0#0#0#156#0#0#8#8#8#0#8#16#8#0#8#24#8#0#8'!'#8#0 + +#8')'#8#0#8'1'#8#0#8'J'#8#0#8'R'#8#0#8'c'#8#0#8'k'#8#0#8#132#8#0#8#165#8#0#16 + +#16#16#0#16#24#16#0#16')'#16#0#16'1'#16#0#16'9'#16#0#16'B'#16#0#16'R'#16#0#16 + +'c'#16#0#16'{'#16#0#16#132#16#0#8#165#16#0#24#24#24#0#24')'#24#0#24'1'#24#0 + +#24'9'#24#0#16#173#24#0'!!!'#0'!B!'#0#24#148'!'#0#24#181'!'#0')))'#0'!s)'#0 + +'!'#148')'#0#24#181')'#0'111'#0'191'#0'1R1'#0')'#140'1'#0')'#156'1'#0'!'#189 + +'1'#0'199'#0'999'#0'1R9'#0')'#165'9'#0')'#198'9'#0'9BB'#0'BBB'#0'9RB'#0'BZB' + +#0'9'#132'B'#0'1'#165'B'#0')'#181'B'#0'JJJ'#0'JRJ'#0'BkJ'#0'BsJ'#0'B{J'#0'B' + +#132'J'#0'9'#148'J'#0'1'#173'J'#0'1'#206'J'#0'JRR'#0'RRR'#0'J'#132'R'#0'B' + +#140'R'#0'B'#148'R'#0'9'#173'R'#0'B'#181'R'#0'1'#198'R'#0'1'#206'R'#0'ZZZ'#0 + +'B'#181'Z'#0'B'#189'Z'#0'9'#206'Z'#0'9'#214'Z'#0'Zcc'#0'ccc'#0'ckc'#0'Z'#132 + +'c'#0'J'#189'c'#0'B'#214'c'#0'B'#222'c'#0'cck'#0'kkk'#0'R'#165'k'#0'R'#189'k' + +#0'B'#222'k'#0'sss'#0'c'#148's'#0'Z'#173's'#0'J'#231's'#0'ss{'#0's{{'#0'{{{' + +#0'c'#173'{'#0'R'#239'{'#0'{'#132#132#0#132#132#132#0'Z'#231#132#0'R'#247#132 + +#0#140#140#140#0'Z'#239#140#0'Z'#247#140#0#140#140#148#0#140#148#148#0#148 + +#148#156#0#148#156#156#0#156#156#165#0#165#173#173#0#173#181#181#0#181#181 + +#189#0#181#189#189#0#181#189#198#0#189#198#198#0#189#198#206#0#198#198#206#0 + +#198#206#206#0#206#214#214#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#240#251 + +#255#0#164#160#160#0#128#128#128#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0 + +#255#0#255#0#255#255#0#0#255#255#255#0#10#140#0#13#137'cA--""6At'#134#140#0 + +#9#140#0#0#8#140#0#3#135'j2'#0#2'2'#4'-'#3'"'#2#22#0#3'A'#131#140#1#7#140#0#0 + +#7#140#1'o'#3'6'#3'2'#4'-'#3'"'#3#22#0#3'A'#134#140#6#5#140#0#0#5#140#0#4#135 + +'U:6'#2'6'#0#12'0('#30#17#16#16#15#14#28#26'"'#22#2#22#0#3'"'#140#0#4#140#0 + +#0#4#140#0#3#133'F:'#0#2':'#2'6'#0#8'3('#30#17#17#16#16#15#2#15#0#3#14#27#22 + +#0#3#22#1'x'#4#140#0#0#3#140#0#5#138'FAA:'#0#2':'#4'6'#0#6'/'#16#17#16#16#15 + +#2#15#0#4#14#13#24#22#2#22#1''#3#140#0#0#3#140#1'd'#4'A'#3':'#4'6'#1#30#2#17 + +#2#16#0#6#28'$##'#24#22#2#22#0#4'"'#134#140#140#0#0#2#140#1#128#2'F'#4'A'#3 + +':'#3'6'#1#31#3#17#1''''#3'-'#3'"'#3#22#1'A'#2#140#0#0#0#7#140#138'VFFBA'#22 + +#3'A'#3':'#4'6'#0#4'/0.-'#3'-'#3'"'#3#22#1#131#1#140#0#0#0#8#140'|LLG8FA'#3 + +'A'#3':'#4'6'#3'2'#4'-'#0#7'"'#26#27#22#22'A'#140'F'#0#0#0#9#140'^LL=8FFA'#15 + +#3'A'#3':'#4'6'#3'2'#4'-'#0#6'$'#14'"'#22#22#134#0#0#0#7#134'VLM?>F'#16#2'F' + +#4'A'#3':'#4'6'#3'2'#3'-'#0#6'$'#15#27'"'#22't'#0#0#1#130#2'V'#0#5'ODCLF'#17 + +#2'F'#4'A'#3':'#4'6'#3'2'#2'-'#0#6'$'#15#28'""A'#0#0#1'|'#2'V'#0#6'XTJLLF'#2 + +'F'#4'A'#3':'#4'6'#3'2'#0#7'-%'#15#14'""-L'#0#0#0#7's^V_]SL2'#2'L'#3'F'#4'A' + +#3':'#4'6'#3'2'#0#6'/'#16#15'-""'#0#0#1't'#2'^'#0#4'_bZL'#3'L'#3'F'#4'A'#3':' + +#4'6'#2'2'#1'0'#2#16#2'-'#1'"'#0#0#1'u'#2'^'#0#5'gh_VL:'#3'L'#3'F'#4'A'#3':' + +#1'3'#2'6'#0#6'0'''#15#17#16'-'#2'-'#0#0#0#9'ud^mnhWVL6'#3'L'#3'F'#4'A'#2':' + +#2#19#2#18#1#2#3#17#3'-'#0#0#1#130#2'd'#0#11'lrnhaZRIHLF'#7#2'F'#4'A'#1':'#3 + +#19#2#18#0#6#2#17#31'2-A'#0#0#1#132#2'd'#0#12'fwrnhb]TNLLF'#2'F'#4'A'#1#10#3 + +#19#2#18#0#5#2'(22VF'#0#0#1#137#3'd'#0#9'zwrnhb]QL'#0#2'L'#3'F'#2'A'#1';'#2 + +#10#3#19#2#18#1'0'#2'2'#1''#0#0#0#17#140#248'ddq}wrnhb\PMLLFm'#2'F'#0#3'<*' + ,#10'L'#2#10#3#19#1#31#2'6'#1'2'#1#137#0#0#0#23#140#132'kde}}wrnhb]TKC>81,!' + +#21#10'A'#2#10#2#19#1'3'#2'6'#1'j'#1#140#0#0#2#140#0#22'okdp~}wrnhb]TD??91,!' + +#21#10#2#10#0#6'):66'#135#140#0#0#2#140#1#134#2'k'#0#22'dv~}wrnhb]TD??91,!' + +#21#10' :'#2':'#1'o'#2#140#0#0#3#140#1#129#2'k'#0#26'dv~}wrnhb]TD??91,!+;A:U' + +#137#140#140#0#0#4#140#1'y'#2'k'#0#18'dp}}wrnhb]TD??917A'#2'A'#0#3'F'#135#140 + +#22#2#140#0#0#4#140#0#25#139'|kkdeqzwrnhb]TD?=GFFAF'#133#140#6#3#140#0#0#6 + +#140#1#129#2'k'#3'd'#0#16'flmg__YPMLLFFd'#138#140#4#140#0#0#7#140#0#4#134'ok' + +'d'#3'd'#3'^'#3'V'#3'L'#0#3'V'#128#140'v'#6#140#0#0#9#140#0#3#132#248'd?'#3 + +'d'#3'^'#3'V'#0#4'^|'#138#140#7#140#0#0#11#140#0#11#137#132#130'uuts|'#130 + +#134#140']'#10#140#0#1 +]); diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc new file mode 100644 index 0000000..d480282 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.rc @@ -0,0 +1 @@ +DALOGO BITMAP DISCARDABLE "dalogo.bmp" diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res new file mode 100644 index 0000000..6735fcb Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_AdditionalResources.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj new file mode 100644 index 0000000..67fa8e2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + DataAbstract_IDE_D10.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + False + False + False + False + False + False + False + False + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + RemObjects Data Abstract - IDE Package + False + + + + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\..\Dcu\D10 + ..\;..\..\Dcu\D10 + + + + False + + + + + + False + + + + + + False + + True + False + + + True + False + 3 + 0 + 1 + 361 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.1.361 + + + + + RemObjects SDK + 1.0.0.0 + + + + $00000000 + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg new file mode 100644 index 0000000..f6e54d1 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.cfg @@ -0,0 +1,52 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N0"..\..\Dcu\D10" +-LE"..\..\Dcu\D10" +-LN"..\..\Dcu\D10" +-U"..\;..\..\Dcu\D10" +-O"..\;..\..\Dcu\D10" +-I"..\;..\..\Dcu\D10" +-R"..\;..\..\Dcu\D10" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-SYMBOL_EXPERIMENTAL +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNIT_EXPERIMENTAL +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk new file mode 100644 index 0000000..fdc6b17 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D10; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D10, + RemObjects_IDE_D10, + RemObjects_Everwood_D10, + DataAbstract_Core_D10; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res new file mode 100644 index 0000000..669dbd3 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D10.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk new file mode 100644 index 0000000..906a394 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dpk @@ -0,0 +1,52 @@ +package DataAbstract_IDE_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D11, + RemObjects_IDE_D11, + RemObjects_Everwood_D11, + DataAbstract_Core_D11; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj new file mode 100644 index 0000000..b270446 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.dproj @@ -0,0 +1,580 @@ + + + {83d4313b-eff3-4ea0-9289-ba6e608e821e} + DataAbstract_IDE_D11.dpk + Release + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IDE_D11.bpl + + + 7.0 + False + False + True + 0 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + RELEASE + False + False + False + False + False + False + False + False + + + 7.0 + True + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + ..\;..\..\Dcu\D11 + False + False + False + False + False + False + False + False + + + Delphi.Personality + Package + +FalseTrueFalseRemObjects Data Abstract - IDE PackageFalseFalseFalseTrueFalse6043801FalseFalseFalseFalseFalse10331252RemObjects Software6.0.43.801RemObjects SDK1.0.0.0DataAbstract_IDE_D11.dpk + + + + + MainSource + + + + + + + + + + + + +
DADataTableMasterLinkWizard
+
+ + + +
DAGuideWizardForm
+
+ +
DAIdeData
+ TDataModule +
+ + + + +
DASelectDataTablesForm
+
+
+
+ + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res new file mode 100644 index 0000000..aef77e0 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D11.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dpk new file mode 100644 index 0000000..5ffd96f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D12; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D12, + RemObjects_IDE_D12, + RemObjects_Everwood_D12, + DataAbstract_Core_D12; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj new file mode 100644 index 0000000..5269ffc --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.dproj @@ -0,0 +1,119 @@ + + + {83d4313b-eff3-4ea0-9289-ba6e608e821e} + DataAbstract_IDE_D12.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IDE_D11.bpl + 11.1 + Base + + + true + + + true + 1 + error + error + error + ..;..\..\Dcu\D12;..\..\..\RemObjects SDK for Delphi\Dcu\D12;$(DCC_UnitSearchPath) + error + error + ..\..\Dcu\D12\ + error + error + ..\..\Dcu\D12\ + error + ..\..\Dcu\D12\ + true + true + true + true + false + 00400000 + ..\..\Dcu\D12\DataAbstract_IDE_D12.bpl + RemObjects Data Abstract - IDE Package + + + + MainSource + + + + + + + + + + + + + + + +
DAIdeData
+ TDataModule +
+ + +
DASelectDataTablesForm
+
+ +
DADataTableMasterLinkWizard
+
+ +
DAGuideWizardForm
+
+ + + Base + +
+ + + Delphi.Personality.12 + Package + + + + False + True + False + + + True + False + 3 + 0 + 6 + 442 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.6.442 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_IDE_D12.dpk + + + + 12 + +
diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D12.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dpk new file mode 100644 index 0000000..2cfbc2f --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D14; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D14, + RemObjects_IDE_D14, + RemObjects_Everwood_D14, + DataAbstract_Core_D14; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dproj b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dproj new file mode 100644 index 0000000..3880565 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.dproj @@ -0,0 +1,121 @@ + + + {83d4313b-eff3-4ea0-9289-ba6e608e821e} + DataAbstract_IDE_D14.dpk + Debug + AnyCPU + DCC32 + ..\..\Dcu\D11\DataAbstract_IDE_D11.bpl + 11.1 + Base + + + true + + + true + 1 + error + error + error + ..;..\..\Dcu\D14;..\..\..\RemObjects SDK for Delphi\Dcu\D14;$(DCC_UnitSearchPath) + error + error + ..\..\Dcu\D14\ + error + error + ..\..\Dcu\D14\ + error + ..\..\Dcu\D14\ + true + true + true + true + false + 00400000 + ..\..\Dcu\D14\DataAbstract_IDE_D14.bpl + RemObjects Data Abstract - IDE Package + + + + MainSource + + + + + + + + + + + + + + + +
DAIdeData
+ TDataModule +
+ + +
DASelectDataTablesForm
+
+ +
DADataTableMasterLinkWizard
+
+ +
DAGuideWizardForm
+
+ + + Base + +
+ + + Delphi.Personality.12 + Package + + + + False + True + False + -pDelphi + C:\Program Files\CodeGear\RAD Studio\6.0\bin\bds.exe + + + True + False + 3 + 0 + 6 + 442 + False + False + False + False + False + 1033 + 1252 + + + RemObjects Software + + 3.0.6.442 + + + + + RemObjects SDK + 1.0.0.0 + + + DataAbstract_IDE_D14.dpk + + + + 12 + +
diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.res new file mode 100644 index 0000000..0593ed9 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D14.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg new file mode 100644 index 0000000..19431c3 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D6" +-LE"..\..\Dcu\D6" +-LN"..\..\Dcu\D6" +-U"..\..\Dcu\D6" +-O"..\..\Dcu\D6" +-I"..\..\Dcu\D6" +-R"..\..\Dcu\D6" +-Z diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof new file mode 100644 index 0000000..552aad2 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Data Abstract - IDE Package + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D6 +PackageDLLOutputDir=..\..\Dcu\D6 +PackageDCPOutputDir=..\..\Dcu\D6 +SearchPath=..\..\Dcu\D6 +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=2.0.0.138 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk new file mode 100644 index 0000000..c2b6298 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D6; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D6, + RemObjects_IDE_D6, + RemObjects_Everwood_D6, + DataAbstract_Core_D6; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res new file mode 100644 index 0000000..2d6c311 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D6.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg new file mode 100644 index 0000000..5645689 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.cfg @@ -0,0 +1,50 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N"..\..\Dcu\D7" +-LE"..\..\Dcu\D7" +-LN"..\..\Dcu\D7" +-U"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-O"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-I"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-R"..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7" +-Z +-w-SYMBOL_DEPRECATED +-w-SYMBOL_LIBRARY +-w-SYMBOL_PLATFORM +-w-UNIT_LIBRARY +-w-UNIT_PLATFORM +-w-UNIT_DEPRECATED +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof new file mode 100644 index 0000000..2b8a3a6 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dof @@ -0,0 +1,116 @@ +[FileVersion] +Version=7.0 + +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=0 +SymbolLibrary=0 +SymbolPlatform=0 +UnitLibrary=0 +UnitPlatform=0 +UnitDeprecated=0 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 + +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=RemObjects Data Abstract - IDE Package + +[Directories] +OutputDir= +UnitOutputDir=..\..\Dcu\D7 +PackageDLLOutputDir=..\..\Dcu\D7 +PackageDCPOutputDir=..\..\Dcu\D7 +SearchPath=..\..\Dcu\D7;..\..\Dcu\DevEx;..\..\..\RemObjects SDK\Dcu\D7 +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;RemObjects_DataSnap_D7;PurposesoftD7;addict3_d6;tb2kComplete_70;CDKDesignTimeSupport;CDKSmp;CDK;ES_CodeSite20;ESDelphiCommandCompiler;ESFileSearch;ESVisualCompositeExpert;EaglWk;ESGraphUtils;ESBase;ESVsCp;ESSampleComposites70;ESSampleCompositeEditors7;Rz252N70;SynEdit_D7;dxsbD7;dxComnD7;dxDockingD7;dxEdtrD7;dxELibD7;dxExELD7;EQGridD7;dxExRwD7;dxDBEdD7;dxInsD7;dxGrEdD7;ECQDBCD7;EQTLD7;EQDBTLD7;dxLayoutControlD7;dxMasterViewD7;dxmdsd7;dxNavBarD7;dxObjInsD7;dxPageControlD7;dxPSCoreD7;Rz252D70;cxPageControlVCLD7;cxEditorsVCLD7;dxThemeD7;cxLibraryVCLD7;cxDataD7;cxGridUtilsVCLD7;cxGridVCLD7;RemObjects_BPDX_D7 +Conditionals= +DebugSourceDirs= +UsePackages=0 + +[Version Info Keys] +CompanyName=RemObjects Software +FileDescription= +FileVersion=3.0.0.280 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=RemObjects SDK +ProductVersion=1.0.0.0 + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk new file mode 100644 index 0000000..377b366 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.dpk @@ -0,0 +1,51 @@ +package DataAbstract_IDE_D7; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'RemObjects Data Abstract - IDE Package'} +{$IMPLICITBUILD OFF} + +requires + rtl, + DesignIDE, + vcldb, + dbrtl, + RemObjects_Core_D7, + RemObjects_IDE_D7, + RemObjects_Everwood_D7, + DataAbstract_Core_D7; + +contains + DataAbstract_IDE_Reg in 'DataAbstract_IDE_Reg.pas', + uDADataAbstractEditors in 'uDADataAbstractEditors.pas', + uDADBSessionManagerEditor in 'uDADBSessionManagerEditor.pas', + uDASchemaUnitsGenerator in 'uDASchemaUnitsGenerator.pas', + uDAIDEMenu in 'uDAIDEMenu.pas', + uDAIDEData in 'uDAIDEData.pas' {DAIdeData: TDataModule}, + uDAIDERes in 'uDAIDERes.pas', + uDASelectDataTablesForm in 'uDASelectDataTablesForm.pas' {DASelectDataTablesForm}, + uDADataTableMasterLinkWizardForm in 'uDADataTableMasterLinkWizardForm.pas' {DADataTableMasterLinkWizard}, + uDAGuideWizardForm in 'uDAGuideWizardForm.pas' {DAGuideWizardForm}, + uDADataTableWizards in 'uDADataTableWizards.pas'; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res new file mode 100644 index 0000000..8acd804 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_D7.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk new file mode 100644 index 0000000..ed53532 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Mac.lpk @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk new file mode 100644 index 0000000..9ee52af --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Unix.lpk @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk new file mode 100644 index 0000000..7cfde89 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Lazarus_Windows.lpk @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas new file mode 100644 index 0000000..b37c6ac --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/DataAbstract_IDE_Reg.pas @@ -0,0 +1,190 @@ +unit DataAbstract_IDE_Reg; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +{$WARN SYMBOL_DEPRECATED OFF} +{$WARN UNIT_DEPRECATED OFF} + +interface + +procedure Register; + +implementation + +uses + SysUtils, DB, Classes, + uRODLGenTools, + {$IFDEF FPC} + ComponentEditors,PropEdits,FormEditingIntf, + {$ELSE} + ColnEdit,uROProductVersionInfo, + {$IFDEF DELPHI5} + DsgnIntf, DMDesigner, + {$ELSE} + DesignIntf, DesignEditors, + {$ENDIF} + {$ENDIF} + uDAClasses, uDADataTable, uDARemoteDataAdapter, uDARemoteDataAdapterRequests, + uDADataAbstractEditors, uDADriverManager, uDAInterfaces, uDABusinessProcessor, + uDADBSessionManagerEditor, uDADBSessionManager, + DARemoteService_Impl, DALoginService_Impl, + DataAbstractService_Impl, BaseLoginService_Impl, MultiDbLoginService_Impl,MultiDbLoginServiceV5_Impl, + SimpleLoginService_Impl, uDAClientDataModule, uDADesigntimeCall, uDADataTableReferenceCollection, + fROAbout, uDADataAdapter, uDALocalDataAdapter, uDALocalCommand; + + +procedure Register; +begin + RegisterComponentEditor(TDADriverManager, TDADriverManagerEditor); + RegisterComponentEditor(TDASchema, TDASchemaEditor); + RegisterComponentEditor(TDAConnectionManager, TDAConnectionManagerEditor); + RegisterComponentEditor(TDADataDictionary, TDADataDictionaryEditor); + RegisterComponentEditor(TDADataTable, TDADataTableEditor); + RegisterComponentEditor(TDABaseDataAdapter, TDABaseDataAdapterEditor); + RegisterComponentEditor(TDARemoteDataAdapter, TDARemoteDataAdapterEditor); + RegisterComponentEditor(TDADesigntimeCall, TDADesigntimeCallEditor); + + {$IFDEF MSWINDOWS} + //RegisterComponentEditor(TDAClientDataModule, TDAClientDataModuleEditor); + {$ENDIF MSWINDOWS} + + RegisterPropertyEditor(TypeInfo(string), TDARemoteRequest, 'MethodName', TDADataRequestCallMethodNameEditor); + + {$IFDEF MSWINDOWS} + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'MasterFields', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'DetailFields', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(TStrings), TDADataTable, 'MasterRequestMappings', TDADataTableMasterDetailProps); + RegisterPropertyEditor(TypeInfo(TStrings), TDADataTable, 'MasterParamsMappings', TDADataTableMasterDetailProps); + {$ENDIF MSWINDOWS} + + RegisterPropertyEditor(TypeInfo(string), TDADriverManager, 'DriverDirectory', TDADriverManagerDirectory); + RegisterPropertyEditor(TypeInfo(TComponent), TDADataTableReference, 'DataTable', TDADataTableReferenceDataTable); + + RegisterPropertyEditor(TypeInfo(TDataset), TDADataSource, 'Dataset', NIL); + + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'LogicalName', TDADataTableLogicalNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADataTable, 'LocalConnection', TDADataTableLocalConnection); + + RegisterPropertyEditor(TypeInfo(string), TDAUpdateRule, 'DatasetName', TDACollectionItemDatasetNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADatasetRelationship, 'DetailDatasetName', TDACollectionItemDatasetNameEditor); + RegisterPropertyEditor(TypeInfo(string), TDADatasetRelationship, 'MasterDatasetName', TDACollectionItemDatasetNameEditor); + + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'InsertCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'DeleteCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'UpdateCommandName', TDABusinessProcessorCommandProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'ReferencedDataset', TDABusinessProcessorRefDatasetProperty); + RegisterPropertyEditor(TypeInfo(string), TDABusinessProcessor, 'RefreshDatasetName', TDABusinessProcessorRefDatasetProperty); + + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'InsertSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'UpdateSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'DeleteSessionCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'ClearSessionsCommand', TDASchemaCommandListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetSessionCountDataSet', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetAllSessionIDsDataset', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'GetSessionDataSet', TDASchemaDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDADBSessionManager, 'Connection', TDASchemaConnectionsListEditor); + + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Fields', TCollectionProperty); + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Params', TCollectionProperty); + RegisterPropertyEditor(TypeInfo(TCollection), TDADataset, 'Statements', TCollectionProperty); + + RegisterPropertyEditor(TypeInfo(string), TDALoginService, 'LoginDataset', TDARemoteServiceDataSetListEditor); + RegisterPropertyEditor(TypeInfo(string), TDALoginService, 'LogoutCommand', TDARemoteServiceCommandListEditor); + + RegisterPropertyEditor(TypeInfo(string), TDAField, 'KeyFields', TDALookupSourceProperty); + RegisterPropertyEditor(TypeInfo(string), TDAField, 'LookupKeyFields', TDALookupDestProperty); + RegisterPropertyEditor(TypeInfo(string), TDAField, 'LookupResultField', TDALookupResultFieldProperty); + + RegisterPropertyEditor(TypeInfo(string), TDALocalDataAdapter, 'ServiceName', TDALocalDataAdapterServiceEditor); + RegisterPropertyEditor(TypeInfo(string), TDALocalCommand, 'ServiceName', TDALocalDataAdapterServiceEditor); + + {$IFDEF FPC} + FormEditingHook.RegisterDesignerBaseClass(TDARemoteService); + FormEditingHook.RegisterDesignerBaseClass(TDALoginService); + FormEditingHook.RegisterDesignerBaseClass(TDataAbstractService); + FormEditingHook.RegisterDesignerBaseClass(TBaseLoginService); + FormEditingHook.RegisterDesignerBaseClass(TSimpleLoginService); + FormEditingHook.RegisterDesignerBaseClass(TMultiDbLoginService); + FormEditingHook.RegisterDesignerBaseClass(TMultiDbLoginServiceV5); + FormEditingHook.RegisterDesignerBaseClass(TDAClientDataModule); + {$ELSE} + {$IFDEF VER140UP} + RegisterCustomModule(TDARemoteService, TCustomModule); + RegisterCustomModule(TDALoginService, TCustomModule); + RegisterCustomModule(TDataAbstractService, TCustomModule); + RegisterCustomModule(TBaseLoginService, TCustomModule); + RegisterCustomModule(TSimpleLoginService, TCustomModule); + RegisterCustomModule(TMultiDbLoginService, TCustomModule); + RegisterCustomModule(TMultiDbLoginServiceV5, TCustomModule); + {$ELSE} + RegisterCustomModule(TDARemoteService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TDALoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TDataAbstractService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TBaseLoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TSimpleLoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TMultiDbLoginService, TDataModuleDesignerCustomModule); + RegisterCustomModule(TMultiDbLoginServiceV5, TDataModuleDesignerCustomModule); + {$ENDIF} + RegisterCustomModule(TDAClientDataModule,TCustomModule); + { TDARemoteDataAdapter } + RegisterPropertiesInCategory('Dynamic Method Binding', TDARemoteDataAdapter, ['GetSchemaCall', 'GetDataCall', 'GetScriptsCall', 'UpdateDataCall']); + + RegisterPropertiesInCategory('Legacy', TDAGetDataRequest, ['OutgoingParamsParameter', 'OutgoingIncludeSchemaParameter', 'OutgoingMaxRecordsParameter']); + + { TDADataTable } + //RegisterPropertiesInCategory('Legacy v3.0', TDADataTable, ['DataRequestCall', 'DataUpdateCall', 'SchemaCall', 'ScriptCall', 'Adapter']); + RegisterPropertiesInCategory('Master/Detail', TDADataTable, ['MasterFields', 'MasterMappingMode', 'MasterOptions', 'MasterParamsMappings', 'MasterRequestMappings', 'MasterSource', 'DetailFields', 'DetailOptions']); + RegisterPropertiesInCategory('Database', TDADataTable, ['Fields', 'Params', 'LogicalName', 'IndexDefs', 'IndexName', 'Active', 'StoreActive', 'LogChanges', 'MaxRecords']); + RegisterPropertiesInCategory('Business Rules', TDADataTable, ['BusinessRulesID', 'ScriptCode']); + RegisterPropertiesInCategory('Local Data', TDADataTable, ['LocalConnection', 'LocalSchema', 'LocalDataStreamer']); + + { DA Service } + + { Login Services } + RegisterPropertiesInCategory('Login', TBaseLoginService, ['OnLogout']); + RegisterPropertiesInCategory('Login', TSimpleLoginService, ['OnLogin']); + RegisterPropertiesInCategory('Login', TMultiDbLoginService, ['OnLogin']); + {$ENDIF} + + RegisterRODataModuleClass(TDataAbstractService, + '&Data Abstract 4.0 Service', + 'Data Abstract datamodule. '+ + 'This is the preferred server type when creating a Data Abstract version 4.0 or above server.', + 'uRORemoteDataModule, uDAInterfaces, DataAbstractService_Impl, DataAbstract4_Intf' + ); + + RegisterRODataModuleClass(TDARemoteService, + 'Data Abstract &3.0 Remote Service', + 'Data Abstract datamodule. This is the preferred server type when creating backward-compatible version 3.0 Data Abstract server.', + 'uRORemoteDataModule, uDAInterfaces, DARemoteService_Impl, DataAbstract3_Intf' + ); + + + +end; + +{$IFNDEF FPC} +{$IFDEF MSWINDOWS} +initialization + RegisterProduct('{261E7EA5-C380-42A4-90AC-1FA10ADB39D8}',VersionBuildNo(hInstance)); +finalization + UnregisterProduct('{261E7EA5-C380-42A4-90AC-1FA10ADB39D8}'); +{$ENDIF MSWINDOWS} +{$ENDIF} +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES new file mode 100644 index 0000000..d8238b6 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/Resources.BDS.RES differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm new file mode 100644 index 0000000..1b2f269 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.dfm @@ -0,0 +1,176 @@ +object DAClientDataModuleDataTableWizardForm: TDAClientDataModuleDataTableWizardForm + Left = 417 + Top = 173 + BorderStyle = bsDialog + BorderWidth = 5 + Caption = '%s - DataTable Wizard' + ClientHeight = 412 + ClientWidth = 339 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + DesignSize = ( + 339 + 412) + PixelsPerInch = 96 + TextHeight = 13 + object lbl_ServerUrl1: TLabel + Left = 0 + Top = 0 + Width = 90 + Height = 13 + Caption = 'Select DataSets' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lbl_ServerUrl2: TLabel + Left = 16 + Top = 16 + Width = 248 + Height = 26 + Caption = + 'Select the Datasets for that you want to generate TDADataTable ' + + 'components.' + WordWrap = True + end + object BitBtn2: TBitBtn + Left = 264 + Top = 387 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 0 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object BitBtn1: TBitBtn + Left = 184 + Top = 387 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Finish' + Default = True + ModalResult = 1 + TabOrder = 1 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000220B0000220B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00FF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF787878787878FF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 811E00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF787878787878787878FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878898989787878FF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF811E00A7632F811E00811E00FF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF7878789F9F9F78787878 + 7878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878B8B8B8C6 + C6C6787878787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00D8B69CE6D1BFE7D3C4811E00FF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878D1 + D1D1E0E0E0E2E2E2787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878EBEBEBF5F5F5F1F1F1787878787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00D8AF96F4E2CFF0D7BDD8A784811E + 00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D0D0D0E9E9E9E3E3E3CACACA787878787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878E7 + E7E7E1E1E1DBDBDBC9C9C9787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00E7BB92E3B081E0A672D5925A811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D3D3D3CDCDCDC6C6C6BCBCBC787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FF787878BFBFBFB8B8B8B2B2B2ACACAC787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00811E + 00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF787878787878787878787878787878787878FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object lb_DataSets: TCheckListBox + Left = 16 + Top = 48 + Width = 323 + Height = 329 + Anchors = [akLeft, akTop, akRight, akBottom] + ItemHeight = 13 + TabOrder = 2 + end +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas new file mode 100644 index 0000000..e48152d --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleDataTableWizardForm.pas @@ -0,0 +1,114 @@ +unit uDAClientDataModuleDataTableWizardForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, CheckLst, Buttons, uDAClientDataModule, DesignIntf; + +type + TDAClientDataModuleDataTableWizardForm = class(TForm) + BitBtn2: TBitBtn; + BitBtn1: TBitBtn; + lbl_ServerUrl1: TLabel; + lbl_ServerUrl2: TLabel; + lb_DataSets: TCheckListBox; + private + fModule:TDAClientDataModule; + procedure FillDataSets; + public + class function Execute(aOwner: TComponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean; + end; + +var + DAClientDataModuleDataTableWizardForm: TDAClientDataModuleDataTableWizardForm; + +implementation + +uses + uROClasses, uDAIDERes, uRODL, uRORemoteService, + uDADataAbstractEditors, uDAMemDataTable, uDAClasses, uDAPleaseWaitForm; + +{$R *.dfm} + +{ TDAClientDataModuleDataTableWizardForm } + +class function TDAClientDataModuleDataTableWizardForm.Execute(aOwner: TComponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean; +var + i:integer; +begin + if not Assigned(aModule.RemoteService) then RaiseError(err_AssignRemoteService); + if not Assigned(aModule.RemoteService.Channel) then RaiseError(err_AssignRemoteServiceChannel); + if not Assigned(aModule.RemoteService.Message) then RaiseError(err_AssignRemoteServiceMessage); + + with self.Create(aOwner) do try + + fModule := aModule; + Caption := Format(Caption,[fModule.Name]); + FillDataSets(); + + result := ShowModal() = idOk; + if result then begin + + for i := 0 to lb_DataSets.Items.Count-1 do begin + if lb_DataSets.Checked[i] then begin + CreateDataTable(aDesigner, aModule, TDAMemDataTable, lb_DataSets.Items[i], false); + end; + end; + + end; + + finally + Free(); + end; +end; + +procedure TDAClientDataModuleDataTableWizardForm.FillDataSets; +var + i: integer; + lSchema: TDASchema; + lDataSets: TStringList; +begin + + lDataSets := TStringList.Create(); + try + lDataSets.Duplicates := dupIgnore; + lDataSets.Sorted := true; + + + lSchema := nil; + with CreatePleaseWaitForm(self,'Retrieving Schema...') do begin + fModule.GetSchema(lSchema,true); + Hide; + end; + try + for i := 0 to lSchema.Datasets.Count-1 do begin + lDataSets.Add(lSchema.Datasets[i].Name); + end; { for } + finally + lSchema.Free(); + end; + + lb_DataSets.Items.Assign(lDataSets); + for i := 0 to lb_Datasets.Items.Count-1 do begin + lb_DataSets.Checked[i] := true; + end; { for } + + finally + FreeAndNil(lDataSets); + end; + {lLibrary := fModule.RemoteService.GetRODLLibrary(); + if not Assigned (lLibrary) then RaiseError('Library could not retrieved from server'); + try + lDataSets := fModule.RemoteService.GetServiceMethods(); + for i := 0 to lDataSets.Count-1 do begin + p := Pos('_',lDataSets[i]); + if p > 0 then + lb_DataSets.Checked[lb_DataSets.Items.Add(Copy(lDataSets[i],p+1,Length(lDataSets[i])-p))] := true; + end; + finally + lLibrary.Free(); + end; } +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm new file mode 100644 index 0000000..3b17c9c --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.dfm @@ -0,0 +1,280 @@ +object DAClientDataModuleEditorForm: TDAClientDataModuleEditorForm + Left = 381 + Top = 253 + BorderStyle = bsDialog + BorderWidth = 5 + Caption = '%s - ClientDataModule Editor' + ClientHeight = 183 + ClientWidth = 322 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + DesignSize = ( + 322 + 183) + PixelsPerInch = 96 + TextHeight = 13 + object lbl_ServerUrl1: TLabel + Left = 0 + Top = 0 + Width = 66 + Height = 13 + Caption = 'Server URL:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object lbl_ServerUrl2: TLabel + Left = 16 + Top = 16 + Width = 211 + Height = 13 + Caption = 'Select the URL of yout development server.' + end + object lbl_ServerUrl3: TLabel + Left = 16 + Top = 32 + Width = 308 + Height = 26 + Caption = + 'If you have kept the defaults when writing the server and are ru' + + 'nning the server on this machine, the default value will be ok:' + WordWrap = True + end + object Label4: TLabel + Left = 0 + Top = 96 + Width = 77 + Height = 13 + Caption = 'Service Name' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label5: TLabel + Left = 16 + Top = 112 + Width = 228 + Height = 13 + Caption = 'Select the Service that you want to connect to:' + end + object btn_CreateTables: TBitBtn + Left = 62 + Top = 158 + Width = 126 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Create DataTables' + ModalResult = 1 + TabOrder = 0 + OnClick = btn_CreateTablesClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000130B0000130B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF08750D08750D08750D0875 + 0DFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF8C8C8C8C8C8C8C8C8C8C8C8CFF00FFFF00FFFF00FFFF00FFFF00FF + 0E80AA0E80AA0E80AA0E80AA0E80AA0E80AAFF00FF08750D13AA2210A61D0875 + 0DFF00FFFF00FFFF00FFFF00FFFF00FF83838383838383838383838383838383 + 8383FF00FF8C8C8CA3A3A3A1A1A18C8C8CFF00FFFF00FFFF00FFFF00FF078DBB + 49D5EE23D7FE36D9FE6FE6FF8DE7FA44BADD0E80AA08750D1AB12D16AD260875 + 0DFF00FFFF00FFFF00FFFF00FF878787AFAFAFA8A8A8AFAFAFC3C3C3CCCCCCA8 + A8A88383838C8C8CA8A8A8A5A5A58C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D8FD6CE0F808750D08750D08750D08750D22B93B1DB5320875 + 0D08750D08750D08750D878787CDCDCDBBBBBBA8A8A8AEAEAEC0C0C08C8C8C8C + 8C8C8C8C8C8C8C8CADADADAAAAAA8C8C8C8C8C8C8C8C8C8C8C8C078DBB8CFBFE + 59EAFE23D7FE36D8FD6CE0F808750D3CD46236CF5A30C9522CC34926BE4121B8 + 381CB43117AF2A08750D878787CDCDCDBBBBBBA8A8A8AEAEAEC0C0C08C8C8CC0 + C0C0BCBCBCB8B8B8B4B4B4B1B1B1ACACACAAAAAAA6A6A68C8C8C078DBB8CFBFE + 59EAFE23D7FE36D9FE6CE1F908750D44DD703FD8683AD26035CD582FC74F2AC1 + 4725BD3E20B83608750D878787CDCDCDBBBBBBA8A8A8AFAFAFC0C0C08C8C8CC6 + C6C6C2C2C2BFBFBFBBBBBBB7B7B7B3B3B3B0B0B0ACACAC8C8C8C078DBBB3FCFE + B6F6FFC6F5FFE3FAFFE9F9FD08750D08750D08750D08750D3ED76638D15E0875 + 0D08750D08750D08750D878787DADADADCDCDCE1E1E1ECECECEDEDED8C8C8C8C + 8C8C8C8C8C8C8C8CC2C2C2BDBDBD8C8C8C8C8C8C8C8C8C8C8C8C078DBBBAEEF6 + 30BCDD11A7D2129FCB20A1CA35A7CD2692BF92CEE408750D46DE7341DA6D0875 + 0DFF00FFFF00FFFF00FF878787DADADAA1A1A19292929090909595959D9D9D93 + 9393C6C6C68C8C8CC7C7C7C4C4C48C8C8CFF00FFFF00FFFF00FF078DBB4AC5DD + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E30682B608750D4DE67F49E2790875 + 0DFF00FFFF00FFFF00FF878787AAAAAABBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8585858C8C8CCCCCCCC9C9C98C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089DCF08750D08750D08750D0875 + 0DFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E8C8C8C8C8C8C8C8C8C8C8C8CFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089CCE0E7FA9FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBB8CFBFE + 59EAFE23D7FE36D9FE6FE6FF8DE7FA49C1E3089DCF0E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CDCDCDBBBBBBA8A8A8AFAFAFC3C3C3CCCCCCAC + ACAC8E8E8E838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBB91FCFE + 82F8FF6FF8FF7AFEFF97FEFFA0FCFE63DAF50DA2D40E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787CECECEC9C9C9C3C3C3C7C7C7D1D1D1D4D4D4BB + BBBB919191838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF078DBBFCFFFF + F4FFFFD3FFFFB4FFFFADFFFFADFFFFA9FFFF72F9FE0E80AAFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF878787F4F4F4F1F1F1E6E6E6DBDBDBD9D9D9D9D9D9D7 + D7D7C4C4C4838383FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0C92C0 + F1FBFDE4FFFFC7FFFFAEFFFFA8FFFF9BFBFC1385AFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF8A8A8AF0F0F0ECECECE2E2E2D9D9D9D7D7D7D1 + D1D1878787FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 078DBB078DBB078DBB078DBB078DBB078DBBFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF87878787878787878787878787878787 + 8787FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object BitBtn2: TBitBtn + Left = 259 + Top = 158 + Width = 63 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 1 + OnClick = BitBtn2Click + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object ed_ServerUrl: TEdit + Left = 16 + Top = 64 + Width = 306 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 2 + OnChange = ed_ServerUrlChange + end + object cb_Services: TComboBox + Left = 16 + Top = 128 + Width = 306 + Height = 21 + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 3 + OnChange = cb_ServicesChange + OnCloseUp = cb_ServicesChange + OnEnter = cb_ServicesEnter + OnExit = cb_ServicesChange + end + object BitBtn1: TBitBtn + Left = 193 + Top = 158 + Width = 61 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Finish' + Default = True + ModalResult = 1 + TabOrder = 4 + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000220B0000220B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00FF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FF787878787878FF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + 811E00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF787878787878787878FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878898989787878FF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF811E00A7632F811E00811E00FF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF7878789F9F9F78787878 + 7878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878B8B8B8C6 + C6C6787878787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00D8B69CE6D1BFE7D3C4811E00FF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878D1 + D1D1E0E0E0E2E2E2787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878EBEBEBF5F5F5F1F1F1787878787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00D8AF96F4E2CFF0D7BDD8A784811E + 00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D0D0D0E9E9E9E3E3E3CACACA787878787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF787878E7 + E7E7E1E1E1DBDBDBC9C9C9787878FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00E7BB92E3B081E0A672D5925A811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF78 + 7878D3D3D3CDCDCDC6C6C6BCBCBC787878FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FF787878BFBFBFB8B8B8B2B2B2ACACAC787878FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00811E + 00811E00811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF787878787878787878787878787878787878FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end +end diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas new file mode 100644 index 0000000..c5a26ff --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleEditorForm.pas @@ -0,0 +1,148 @@ +unit uDAClientDataModuleEditorForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDAClientDataModule, StdCtrls, Buttons, DesignIntf; + +type + TDAClientDataModuleEditorForm = class(TForm) + btn_CreateTables: TBitBtn; + BitBtn2: TBitBtn; + lbl_ServerUrl1: TLabel; + ed_ServerUrl: TEdit; + lbl_ServerUrl2: TLabel; + lbl_ServerUrl3: TLabel; + Label4: TLabel; + Label5: TLabel; + cb_Services: TComboBox; + BitBtn1: TBitBtn; + procedure ed_ServerUrlChange(Sender: TObject); + procedure cb_ServicesEnter(Sender: TObject); + procedure BitBtn2Click(Sender: TObject); + procedure btn_CreateTablesClick(Sender: TObject); + procedure cb_ServicesChange(Sender: TObject); + private + fServerUrlChanged: boolean; + fRestoreServerUrl: string; + fModule:TDAClientDataModule; + fCreateDataTables: boolean; + procedure FillServiceCombo; + + public + class function Execute(aOwner: TCOmponent; aModule:TDAClientDataModule; aDesigner:IDesigner):boolean; + end; + +var + DAClientDataModuleEditorForm: TDAClientDataModuleEditorForm; + +implementation + +uses + uROClasses, TypInfo, uDAIDERes, uDAPleaseWaitForm, + uDAClientDataModuleDataTableWizardForm; + +{$R *.dfm} + +{ TDAClientDataModuleEditorForm } + +class function TDAClientDataModuleEditorForm.Execute(aOwner: TCOmponent; aModule: TDAClientDataModule; aDesigner:IDesigner): boolean; +begin + if not Assigned(aModule.RemoteService) then RaiseError(err_AssignRemoteService); + if not Assigned(aModule.RemoteService.Channel) then RaiseError(err_AssignRemoteServiceChannel); + if not Assigned(aModule.RemoteService.Message) then RaiseError(err_AssignRemoteServiceMessage); + + with self.Create(aOwner) do try + + fModule := aModule; + Caption := Format(Caption,[fModule.Name]); + + + try + fRestoreServerUrl := GetStrProp(fModule.RemoteService.Channel,'TargetURL'); + ed_ServerUrl.Text := fRestoreServerUrl; + fServerUrlChanged := false; + except + ed_ServerUrl.Enabled := false; + lbl_ServerUrl1.Enabled := false; + lbl_ServerUrl2.Enabled := false; + lbl_ServerUrl3.Enabled := false; + end; + + FillServiceCombo(); + cb_Services.ItemIndex := cb_Services.Items.IndexOf(fModule.RemoteService.ServiceName); + cb_ServicesChange(nil); + + result := ShowModal() = idOk; + if result then begin + if ed_ServerUrl.Enabled then SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text); + fModule.RemoteService.ServiceName := cb_Services.Text; + + if fCreateDataTables then begin + TDAClientDataModuleDataTableWizardForm.Execute(aOwner, fModule, aDesigner); + end; + + end; + + finally + Free(); + end; +end; + +procedure TDAClientDataModuleEditorForm.ed_ServerUrlChange( + Sender: TObject); +begin + fServerUrlChanged := true; +end; + +procedure TDAClientDataModuleEditorForm.FillServiceCombo; +var + lServiceNames: IROStrings; + i:integer; +begin + Screen.Cursor := crHourGlass; + try + cb_Services.Items.Clear(); + lServiceNames := fModule.RemoteService.GetServiceNames(); + if Assigned(lServiceNames) then begin + for i := 0 to (lServiceNames.Count-1) do + cb_Services.Items.Add(lServiceNames[i]); + end + else begin + cb_Services.Text := ''; + end; + cb_ServicesChange(nil); + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TDAClientDataModuleEditorForm.cb_ServicesEnter(Sender: TObject); +begin + if fServerUrlChanged then begin + if ed_ServerUrl.Enabled then begin + SetStrProp(fModule.RemoteService.Channel,'TargetURL',ed_ServerUrl.Text); + FillServiceCombo(); + end; + fServerUrlChanged := true; + end +end; + +procedure TDAClientDataModuleEditorForm.BitBtn2Click(Sender: TObject); +begin + if ed_ServerUrl.Enabled then + SetStrProp(fModule.RemoteService.Channel,'TargetURL',fRestoreServerUrl); +end; + +procedure TDAClientDataModuleEditorForm.btn_CreateTablesClick(Sender: TObject); +begin + fCreateDataTables := true; +end; + +procedure TDAClientDataModuleEditorForm.cb_ServicesChange(Sender: TObject); +begin + btn_CreateTables.Enabled := cb_Services.Text <> ''; +end; + +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas new file mode 100644 index 0000000..8ced8e8 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientDataModuleWizard.pas @@ -0,0 +1,394 @@ +unit uDAClientDataModuleWizard; + +{$I DataAbstract.inc} + +interface + +uses DesignEditors, ToolsAPI, Windows, ActnList, Menus, Classes; + +const CRLF = #13#10; // Carriage-return line-feed. + +resourcestring + sBasicDfmSource = + 'object %0:s: T%0:s' + crlf + + ' Left = 200' + crlf + + ' Top = 200' + crlf + + ' Height = 300' + crlf + + ' Width = 300' + crlf + + ' RemoteService = RORemoteService' + crlf + + ' Adapter = DABinAdapter' + crlf + + ' SchemaCall.MethodName = ''GetSchemaAsXML''' + crlf + + ' SchemaCall.Params = <' + crlf + + ' item' + crlf + + ' Name = ''Result''' + crlf + + ' ParamType = fResult' + crlf + + ' DataType = rtString' + crlf + + ' end>' + crlf + + ' object ROChannel: TROWinInetHTTPChannel' + crlf + + ' UserAgent = ''RemObjects SDK''' + crlf + + ' TargetURL = ''http://localhost:8099/bin''' + crlf + + ' Left = 40' + crlf + + ' Top = 8' + crlf + + ' end' + crlf + + ' object ROMessage: TROBinMessage' + crlf + + ' Left = 40' + crlf + + ' Top = 52' + crlf + + ' end' + crlf + + ' object RORemoteService: TRORemoteService' + crlf + + ' Message = ROMessage' + crlf + + ' Channel = ROChannel' + crlf + + ' Left = 40' + crlf + + ' Top = 96' + crlf + + ' end' + crlf + + ' object DABinAdapter: TDABINAdapter' + crlf + + ' Left = 40' + crlf + + ' Top = 144' + crlf + + ' end' + crlf + + 'end'; + + sBasicFormSource = + 'unit %0:s;' + crlf + + crlf + + 'interface' + crlf + + crlf + + 'uses {vcl:} SysUtils, Classes, DB, DBClient, ' + crlf + + ' {RemObjects:} %3:s;' + crlf + + crlf + + 'type' + crlf + + ' T%1:s = class(%2:s)' + crlf + + ' ROChannel: TROWinInetHTTPChannel;' + crlf + + ' ROMessage: TROBinMessage;' + crlf + + ' RORemoteService: TRORemoteService;' + crlf + + ' DABinAdapter: TDABINAdapter;' + crlf + + ' private' + crlf + + ' { Private declarations }' + crlf + + ' public' + crlf + + ' { Public declarations }' + crlf + + ' end;' + crlf + + crlf + + 'var' + crlf + + ' %1:s: T%1:s;' + crlf + + crlf + + 'implementation' + crlf + + crlf + + '{$R *.DFM}' + crlf + + crlf + + 'initialization' + crlf + + 'end.' ; + +type TSourceFile = class(TInterfacedObject, IOTAFile) + private + fAge: TDateTime; + fSource:string; + public + function GetSource: string; + function GetAge: TDateTime; + constructor Create(const iSource:string); + end; + + TBaseFormCreator = class(TInterfacedObject, IOTAModuleCreator) + public + function GetCreatorType: string; + function GetExisting: Boolean; + function GetFileSystem: string; + function GetOwner: IOTAModule; + function GetUnnamed: Boolean; + + function GetAncestorName: string; + function GetImplFileName: string; + function GetIntfFileName: string; + function GetFormName: string; + function GetMainForm: Boolean; + function GetShowForm: Boolean; + function GetShowSource: Boolean; + function NewFormFile(const FormIdent, AncestorIdent: string): IOTAFile; + function NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; + function NewIntfSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile; + + procedure FormCreated(const FormEditor: IOTAFormEditor); + end; { TBaseFormCreator } + + TNewModuleExpert = class(TInterfacedObject, + IOTAWizard, + IOTARepositoryWizard, + IOTAFormWizard, + {$IFDEF BDS} + IOTARepositoryWizard80, + {$ENDIF} + IOTARepositoryWizard60) + public + + constructor Create(); + destructor Destroy(); override; + + procedure AfterSave; + procedure BeforeSave; + procedure Destroyed; + procedure Modified; + + procedure Execute; + function GetAuthor: String; + function GetComment: String; + function GetGlyph: Cardinal; + function GetIDString: String; + function GetName: String; + function GetPage: String; + function GetState: TWizardState; + function GetDesigner: String; + + {$IFDEF BDS} + function GetGalleryCategory: IOTAGalleryCategory; + function GetPersonality: string; + {$ENDIF} + + end; + +procedure Register; + +implementation + +uses SysUtils, Graphics, + uRORes, uDADataAbstractEditors, Dialogs, uDAClientDataModuleEditorForm, Forms, + uDAClientDataModule; + +{ TBaseFormCreator } + +procedure TBaseFormCreator.FormCreated(const FormEditor: IOTAFormEditor); +begin + +end; + +function TBaseFormCreator.GetAncestorName: string; +begin + result := 'TDAClientDataModule'; +end; + +function TBaseFormCreator.GetCreatorType: string; +begin + result := sForm; +end; + +function TBaseFormCreator.GetExisting: Boolean; +begin + result := false; +end; + +function TBaseFormCreator.GetFileSystem: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetFormName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetImplFileName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetIntfFileName: string; +begin + result := ''; +end; + +function TBaseFormCreator.GetMainForm: Boolean; +begin + result := false; +end; + +function TBaseFormCreator.GetOwner: IOTAModule; +var + ModuleServices: IOTAModuleServices; + Module: IOTAModule; + NewModule: IOTAModule; +begin + Result := nil; + if BorlandIDEServices.QueryInterface(IOTAModuleServices, ModuleServices) = +S_OK then + begin + Module := ModuleServices.CurrentModule; + if Module <> nil then + if Module.GetOwnerCount > 0 then + begin + NewModule := Module.GetOwner(0); + if NewModule <> nil then + if NewModule.QueryInterface(IOTAProject, Result) <> S_OK then + Result := nil; + end; + end; +end; + +function TBaseFormCreator.GetShowForm: Boolean; +begin + result := true; +end; + +function TBaseFormCreator.GetShowSource: Boolean; +begin + result := true; +end; + +function TBaseFormCreator.GetUnnamed: Boolean; +begin + result := true; +end; + +function RemoveInitialT(const iString:string):string; +begin + result := iString; + if (result <> '') and (result[1] = 'T') then Delete(result,1,1); + //ShowMessage(iString+' '+result); +end; + +function TBaseFormCreator.NewFormFile(const FormIdent, + AncestorIdent: string): IOTAFile; +begin + result := TSourceFile.Create(Format(sBasicDfmSource,[RemoveInitialT(FormIdent)])); +end; + +function TBaseFormCreator.NewImplSource(const ModuleIdent, FormIdent, + AncestorIdent: string): IOTAFile; +begin + result := TSourceFile.Create(Format(sBasicFormSource,[ModuleIdent,RemoveInitialT(FormIdent),AncestorIdent,'uDAClientDataModule'])); +end; + +function TBaseFormCreator.NewIntfSource(const ModuleIdent, FormIdent, + AncestorIdent: string): IOTAFile; +begin + +end; + +{ TSourceFile } + +constructor TSourceFile.Create(const iSource: string); +begin + inherited Create(); + fSource := iSource; + fAge := Now; +end; + +function TSourceFile.GetAge: TDateTime; +begin + result := fAge; +end; + +function TSourceFile.GetSource: string; +begin + result := fSource; +end; + +{ TNewModuleExpert } + +constructor TNewModuleExpert.Create; +begin + inherited; +end; + +destructor TNewModuleExpert.Destroy; +begin + inherited; +end; + +procedure TNewModuleExpert.Execute; +var + lModuleServices: IOTAModuleServices; + lModuleCreator: IOTAModuleCreator; + lModule: IOTAModule; +begin + if BorlandIDEServices.QueryInterface(IOTAModuleServices, lModuleServices) = S_OK then + begin + lModuleCreator := TBaseFormCreator.Create(); + lModule := lModuleServices.CreateModule(lModuleCreator); + TDAClientDataModuleEditorForm.Execute(Application, + (lModule.GetCurrentEditor as INTAFormEditor).FormDesigner.Root as TDAClientDataModule, + (lModule.GetCurrentEditor as INTAFormEditor).FormDesigner); + end; +end; + +function TNewModuleExpert.GetAuthor: String; +begin + result := 'RemObjects Software'; +end; + +function TNewModuleExpert.GetComment: String; +begin + result := 'Data Abstract ClientDataModule'; +end; + +function TNewModuleExpert.GetGlyph: Cardinal; +begin + result := LoadIcon(hInstance,'DAClientDataModule'); +end; + +function TNewModuleExpert.GetIDString: String; +begin + result := 'RemObjectsDAClientDataModule'; +end; + +function TNewModuleExpert.GetName: String; +begin + result := 'Data Abstract ClientDataModule'; +end; + +function TNewModuleExpert.GetPage: String; +begin + result := 'RemObjects Data Abstract'; +end; + +{$IFDEF BDS} +function TNewModuleExpert.GetGalleryCategory: IOTAGalleryCategory; +var + lGalleryManager: IOTAGalleryCategoryManager; +begin + lGalleryManager := BorlandIDEServices as IOTAGalleryCategoryManager; + result := lGalleryManager.FindCategory('RemObjectsDataAbstractDelphi'); +end; + +function TNewModuleExpert.GetPersonality: string; +begin + result := sDelphiPersonality; +end; +{$ENDIF} + +function TNewModuleExpert.GetState: TWizardState; +begin + result := [wsEnabled]; +end; + +procedure TNewModuleExpert.AfterSave; +begin + +end; + +procedure TNewModuleExpert.BeforeSave; +begin + +end; + +procedure TNewModuleExpert.Destroyed; +begin + +end; + +procedure TNewModuleExpert.Modified; +begin + +end; + +procedure Register; +begin + //RegisterPackageWizard(TNewModuleExpert.Create as IOTAFormWizard); +end; + +{$R 'uDAClientModuleWizard.res' 'uDAClientModuleWizard.rc'} + +function TNewModuleExpert.GetDesigner: String; +begin + Result := dAny; +end; + +initialization +finalization +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res new file mode 100644 index 0000000..dd81d99 Binary files /dev/null and b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDAClientModuleWizard.res differ diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas new file mode 100644 index 0000000..9fce3f7 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADBSessionManagerEditor.pas @@ -0,0 +1,174 @@ +unit uDADBSessionManagerEditor; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +interface + +uses + Classes, + {$IFDEF FPC} + PropEdits, + {$ELSE} + DesignIntf, DesignEditors, + {$ENDIF} + uDAClasses; + +type + TDASchemaItemListEditor = class(TStringProperty) + protected + function GetSchema: TDASchema; virtual; + + public + function GetAttributes: TPropertyAttributes; override; + procedure SetValue(const Value: string); override; + property Schema: TDASchema read GetSchema; + end; + + TDASchemaCommandListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDASchemaDataSetListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDARemoteServiceDataSetListEditor = class(TDASchemaDataSetListEditor) + protected + function GetSchema: TDASchema; override; + + end; + + TDARemoteServiceCommandListEditor = class(TDASchemaCommandListEditor) + protected + function GetSchema: TDASchema; override; + + end; + + TDASchemaCommandAndDataSetListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + TDASchemaConnectionsListEditor = class(TDASchemaItemListEditor) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + +implementation + +uses + uDADBSessionManager, Dialogs, + {$WARN UNIT_DEPRECATED OFF} + DARemoteService_Impl + {$WARN UNIT_DEPRECATED ON} + ; + +{ TDASchemaItemListEditor } + +function TDASchemaItemListEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +function TDASchemaItemListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDADBSessionManager).Schema; +end; + +procedure TDASchemaItemListEditor.SetValue(const Value: string); +begin + inherited; + +end; + +{ TDASchemaCommandListEditor } + +procedure TDASchemaCommandListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Commands.Count - 1 do begin + Proc(Schema.Commands[i].Name); + end; + end; +end; + +{ TDASchemaDataSetListEditor } + +procedure TDASchemaDataSetListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Datasets.Count - 1 do begin + Proc(Schema.Datasets[i].Name); + end; + end; +end; + +{ TDASchemaCommandAndDataSetListEditor } + +procedure TDASchemaCommandAndDataSetListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) then begin + for i := 0 to Schema.Datasets.Count - 1 do begin + Proc(Schema.Datasets[i].Name); + end; + if (Schema.Datasets.Count > 0) and (Schema.Commands.Count > 0) then + Proc('---'); + + for i := 0 to Schema.Commands.Count - 1 do begin + Proc(Schema.Commands[i].Name); + end; + end; +end; + +{ TDASchemaConnectionsListEditor } + +procedure TDASchemaConnectionsListEditor.GetValues(Proc: TGetStrProc); +var + i: integer; +begin + if Assigned(Schema) and Assigned(Schema.ConnectionManager) then begin + for i := 0 to Schema.ConnectionManager.Connections.Count - 1 do begin + Proc(Schema.ConnectionManager.Connections[i].Name); + end; + end; +end; + +{ TDARemoteServiceDataSetListEditor } +{$WARN SYMBOL_DEPRECATED OFF} +function TDARemoteServiceDataSetListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDARemoteService).ServiceSchema; +end; + +{ TDARemoteServiceCommandListEditor } + +function TDARemoteServiceCommandListEditor.GetSchema: TDASchema; +begin + result := (GetComponent(0) as TDARemoteService).ServiceSchema; +end; +{$WARN SYMBOL_DEPRECATED ON} +end. diff --git a/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas new file mode 100644 index 0000000..0c79fb0 --- /dev/null +++ b/internal/6.0.43.801/1/Data Abstract for Delphi/Source/IDE/uDADataAbstractEditors.pas @@ -0,0 +1,1638 @@ +unit uDADataAbstractEditors; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - IDE Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$IFDEF MSWINDOWS} +{$I ..\DataAbstract.inc} +{$ELSE} +{$I ../DataAbstract.inc} +{$ENDIF} + +interface + +uses + {$IFDEF MSWINDOWS}Windows,{$ENDIF} + {$IFDEF FPC}ComponentEditors, PropEdits, {$ELSE}DesignIntf, DesignEditors, ColnEdit,{$ENDIF} + SysUtils, Classes, + uROClient, uRODL,uRORemoteService, + uDAClasses, uDARes, uDADataTable, uDARemoteDataAdapter, uDADataAdapter, uDALocalHelpers; + +type { TDADriverManagerEditor } + TDADriverManagerEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDAConnectionManagerEditor } + TDAConnectionManagerEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataDictionaryEditor } + TDADataDictionaryEditor = class(TComponentEditor) + private + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDASchemaEditor } + TDASchemaEditor = class(TComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADesigntimeCallEditor } + TDADesigntimeCallEditor = class(TComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataRequestCallMethodNameEditor } + TDADataRequestCallMethodNameEditor = class(TStringProperty) + private + function RetrieveLibrary: TRODLLibrary; + + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + end; + + { TDALoginAwareComponentEditor } + TDALoginAwareComponentEditor = class(TComponentEditor) + protected + fRemoteService: TRORemoteService; + function GetAdapterSchema(aAdapter: TDABaseDataAdapter): TDASchema; + procedure OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean); + end; + + { TDADataTableEditor } + TDADataTableEditor = class(TDALoginAwareComponentEditor) + protected + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDABaseDataAdapterEditor } + TDABaseDataAdapterEditor = class(TDALoginAwareComponentEditor) + protected + fDataTables: TStringList; + function HookUpDataTables: boolean; + procedure GetDataTables(const aName: string); + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDARemoteDataAdapterEditor } + TDARemoteDataAdapterEditor = class(TDABaseDataAdapterEditor ) + public + procedure ExecuteVerb(Index: Integer); override; + function GetVerb(Index: Integer): string; override; + function GetVerbCount: Integer; override; + end; + + { TDADataTableMasterDetailProps } + TDADataTableMasterDetailProps = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure Edit; override; + end; + + { TDABusinessProcessorCommandProperty } + TDABusinessProcessorCommandProperty = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDABusinessProcessorRefDatasetProperty } + TDABusinessProcessorRefDatasetProperty = class(TStringProperty) + protected + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + {$IFDEF FPC} + TCollectionProperty = TCollectionPropertyEditor; + {$ENDIF FPC} + { TDACollectionProperty } + TDACollectionProperty = class(TCollectionProperty) + private + protected + public + procedure Edit; override; + function GetAttributes: TPropertyAttributes; override; + end; + + + { TDADataTableLogicalNameEditor } + TDADataTableLogicalNameEditor = class(TStringProperty) + private + function GetSchema: TDASchema; + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDACollectionItemDatasetNameEditor } + TDACollectionItemDatasetNameEditor = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDADataTableLocalConnection } + TDADataTableLocalConnection = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDADriverManagerDirectory } + TDADriverManagerDirectory = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + end; + + { TDADataTableReferenceDataTable } + TDADataTableReferenceDataTable = class(TComponentProperty) + public + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupSourceProperty } + TDALookupSourceProperty = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupDestProperty } + TDALookupDestProperty = class(TStringProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + { TDALookupResultFieldProperty } + TDALookupResultFieldProperty = class(TDALookupDestProperty) + private + public + function GetAttributes: TPropertyAttributes; override; + procedure SetValue(const Value: string); override; + end; + + { TDALocalDataAdapterServiceEditor } + TDALocalDataAdapterServiceEditor = class(TStringProperty) + private + function GetRODL: TRODLLibrary; + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + + function GetServiceInstance(aServiceName: string): IDataAbstractLocalServiceAccess; + procedure SetDefaultConnection(aServiceName: string); + +implementation + +uses + + {$IFDEF FPC} + uDADataTableMasterLinkWizardForm_laz, uROIDETools_laz,uDAIDEMenu_laz, + uEWOTAHelpers_laz,ProjectIntf,LazIDEIntf, + {$ELSE} + uROIDETools, uROIDEMenu, uROPleaseWaitForm, + uDAIDEMenu, uDAPleaseWaitForm, + ToolsAPI,uEWOTAHelpers, + uDADataTableMasterLinkWizardForm,ShellAPI, + {$ENDIF} + uDAIDEData,uDASchemaUnitsGenerator, + uROLoginNeededForm, + Dialogs, Graphics, Controls, + {$WARN UNIT_PLATFORM OFF} + FileCtrl, + {$WARN UNIT_PLATFORM ON} + TypInfo, Forms, ClipBrd, DB, + uROTypes, + uDAUtils, uDADriverManager, uDADriverInfo, uDASupportClasses, + uROClasses, + uRODLToXML, uDAInterfaces, uDABusinessProcessor, uDAIDERes, + IniFiles, Registry, uDADesigntimeCall, uDASelectDataTablesForm, + uRODynamicRequest, {$IFDEF USE_LOCALDATAADAPTER}uDALocalDataAdapter,{$ENDIF} uDADataTableWizards, + DataAbstractService_Impl; + +{$IFNDEF FPC} +function FindProjectByActiveModule: IOTAProject; +var + services: IOTAModuleServices; + lProject: IOTAProject; + lcurModule: IOTAModule; + i,j: Integer; +begin + Result:= CurrentProject; + services := ModuleServices; + if (services = nil) then Exit; + lcurModule := services.CurrentModule; + for I := 0 to (services.ModuleCount - 1) do begin + if Services.Modules[i].QueryInterface(IOTAProject, lProject) = S_OK then begin + for j := 0 to lProject.GetModuleCount-1 do begin + if SameText(lProject.GetModule(j).FileName,lcurModule.FileName) then begin + result := lProject; + exit; + end; + end; + end; + end; +end; +{$ENDIF} +{ TDASchemaEditor } + +const + COMMAND_INDEX_EDIT = 0; + COMMAND_INDEX_PUBLISH = 1; + COMMAND_INDEX_SEPARATOR_1 = 2; + COMMAND_INDEX_SAVE = 3; + COMMAND_INDEX_LOAD = 4; + COMMAND_INDEX_SEPARATOR_2 = 5; + COMMAND_INDEX_GENCODE = 6; + COMMAND_INDEX_GENCONSTS = 7; + +procedure TDASchemaEditor.ExecuteVerb(Index: Integer); +var + schema :TDASchema; + connmgr : TDAConnectionManager; + {$IFDEF DELPHI2009UP} + lSchemaAge, lAge: TDateTime; + {$ELSE} + lSchemaAge: integer; + {$ENDIF} + sfname, + cmfname, dadname,diagramname :string; + i, x : integer; + s : string; + lDesigner:IDesignerNotify; + params: TStringList; + {$IFNDEF FPC} + loldCurrentProject, lproject: IOTAProject; + {$ENDIF} +begin + schema := GetComponent as TDASchema; + connmgr := schema.ConnectionManager; + + if (Index=COMMAND_INDEX_GENCONSTS) then begin + params := TStringList.Create; + with schema do try + params.Sorted := TRUE; + + s := ''; + if Datasets.Count>0 then begin + s := Format(' { Dataset names contained in schema "%s" }',[schema.Name])+#13#10; + for i := 0 to (Datasets.Count-1) do begin + s := s+Format(' ds_%s = ''%s'';', [MakeValidIdentifier(Datasets[i].Name), Datasets[i].Name])+#13#10; + end; + end; + + if Commands.Count>0 then begin + s := s+#13#10+Format(' { Command names contained in schema "%s"}',[schema.Name])+#13#10; + for i := 0 to (Commands.Count-1) do begin + s := s+Format(' cmd_%s = ''%s'';', [MakeValidIdentifier(Commands[i].Name), Commands[i].Name])+#13#10; + end; + end; + + s := s+' { Dataset and command parameters }'+#13#10; + for i := 0 to (Datasets.Count-1) do begin + for x := 0 to (Datasets[i].Params.Count-1) do begin + // Checks for duplicates + if params.IndexOf(UpperCase(Datasets[i].Params[x].Name))<0 + then params.Add(UpperCase(Datasets[i].Params[x].Name)) + else Continue; + + s := s+Format(' par_%s = ''%s'';', [Datasets[i].Params[x].Name, Datasets[i].Params[x].Name])+#13#10; + end; + end; + + for i := 0 to (Commands.Count-1) do begin + for x := 0 to (Commands[i].Params.Count-1) do begin + // Checks for duplicates + if params.IndexOf(UpperCase(Commands[i].Params[x].Name))<0 + then params.Add(UpperCase(Commands[i].Params[x].Name)) + else Continue; + + s := s+Format(' par_%s = ''%s'';', [Commands[i].Params[x].Name, Commands[i].Params[x].Name])+#13#10; + end; + end; + finally + params.Free; + end; + + Clipboard.AsText := s; + Exit; + end + else if Index = COMMAND_INDEX_SAVE then begin + sfname := schema.Name; + if not PromptForFileName(sfname, 'Data Abstract Schema (*'+daFileExtSchemaFile+')|*'+daFileExtSchemaFile+'|All Files (*.*)|*.*', daFileExtSchemaFile, 'Save Schema '+schema.Name, '', TRUE) then Exit; + + schema.SaveToFile(sfname, pfXML); + // in COMMAND_INDEX_LOAD we load only schema so we will save also schema only + { + if Assigned(schema.ConnectionManager) then + schema.ConnectionManager.SaveToFile(ChangeFileExt(sfname, daFileExtConnectionMgrFile), pfXML); + + if Assigned(schema.DataDictionary) then + schema.DataDictionary.SaveToFile(ChangeFileExt(sfname, daFileExtDataDictionaryFile), pfXML); + + if Assigned(schema.Diagrams) then + schema.Diagrams.SaveToFile(ChangeFileExt(sfname, DAFileExtDiagramsFile)); + } + end + else if (Index<>COMMAND_INDEX_LOAD) and (Index<>COMMAND_INDEX_GENCODE) then begin + Check(connmgr=NIL, 'The schema doesn''t have a connection manager associated. Cannot launch Schema Modeler'); + + if (Index=COMMAND_INDEX_SAVE) then begin + sfname := schema.Name; + if not PromptForFileName(sfname, 'Data Abstract Schema (*'+daFileExtSchemaFile+')|*'+daFileExtSchemaFile+'|All Files (*.*)|*.*', daFileExtSchemaFile, 'Save Schema '+schema.Name, '', TRUE) + then Exit; + end + else begin + sfname := GetTempFileName(daFileExtSchemaFile); + end; + + schema.SaveToFile(sfname, pfXML); + {$IFDEF DELPHI2009UP} + FileAge(sfname, lSchemaAge); + {$ELSE} + lSchemaAge := FileAge(sfname); + {$ENDIF} + + cmfname := ChangeFileExt(sfname, daFileExtConnectionMgrFile); + connmgr.SaveToFile(cmfname, pfXML); + + dadname := ''; + if Assigned(schema.DataDictionary) then begin + dadname := ChangeFileExt(sfname, daFileExtDataDictionaryFile); + schema.DataDictionary.SaveToFile(dadname, pfXML); + end; + + diagramname := ''; + if Assigned(schema.Diagrams) then begin + diagramname := ChangeFileExt(sfname, DAFileExtDiagramsFile); + schema.Diagrams.SaveToFile(diagramname); + end; + + if (Index=COMMAND_INDEX_LOAD) then Exit; // Only wants to save! + + case Index of + COMMAND_INDEX_EDIT: begin + {$IFDEF FPC} + ShowMessage('Not implemented'); + {$ELSE} + try + with CreatePleaseWaitForm('Running the Schema Modeler...') do try + Show(); + ExecuteAndWait(GetSchemaModelerPath, '/ns /platform:Delphi /projectname:"'+GetComponent().Name+'" /autosave /schemafile:"'+sfname+'"'); + Hide(); + finally + Free(); + end; + + {$IFDEF DELPHI2009UP} + FileAge(sfname, lAge); + if lSchemaAge < lAge then begin + {$ELSE} + if lSchemaAge < FileAge(sfname) then begin + {$ENDIF} + schema.LoadFromFile(sfname, pfXML); + Designer.Modified(); + + connmgr.LoadFromFile(cmfname, pfXML); + lDesigner := FindRootDesigner(connmgr); + if Assigned(lDesigner) then lDesigner.Modified(); + + if dadname <> '' then begin + schema.DataDictionary.LoadFromFile(dadname, pfXML); + lDesigner := FindRootDesigner(schema.DataDictionary); + if Assigned(lDesigner) then lDesigner.Modified(); + end; + + if diagramname <> '' then begin + schema.Diagrams.LoadFromFile(diagramname); + lDesigner := FindRootDesigner(schema.DataDictionary); + if Assigned(lDesigner) then lDesigner.Modified(); + end; + + end; + + finally + DeleteFile(sfname); + DeleteFile(cmfname); + if dadname <> '' then DeleteFile(dadname); + end; + {$ENDIF} + end; + COMMAND_INDEX_PUBLISH: begin + {$IFDEF FPC} + ShowMessage('Don''t implemented'); + {$ELSE} + // search project for current unit + loldCurrentProject := CurrentProject; + // lproject + lproject := FindProjectByActiveModule; + SetActiveProject(lproject); + try + with CreatePleaseWaitForm('Running the Service Builder...') do try + Show(); + {$IFDEF SB2} + LaunchServiceBuilderForCurrentProject('/dataabstract-import-schema /schemafile:"'+sfname+'" /schemacomponentname:"'+schema.Name+'" /ServiceName:"'+schema.Owner.Name+'"',true,true); + {$ELSE} + LaunchServiceBuilderForCurrentProject('/execute:"DataAbstract.PublishSchemaWizard" /execute-options:"Schema='+sfname+';ServiceName='+schema.Owner.Name+';SchemaComponentName='+schema.Name+'"',true,true); + {$ENDIF} + Hide(); + finally + Free(); + end; + finally + DeleteFile(sfname); + DeleteFile(cmfname); + if dadname <> '' then DeleteFile(dadname); + if diagramname <> '' then DeleteFile(diagramname); + if loldCurrentProject <> CurrentProject then SetActiveProject(loldCurrentProject); + end; + {$ENDIF} + end; + COMMAND_INDEX_SAVE: exit; + end; + end + else if (Index=COMMAND_INDEX_GENCODE) then begin + GenerateSchemaUnits(schema); + end + else begin + if PromptForFileName(sfname, 'Data Abstract Schema (*'+daFileExtSchemaFile+')|*'+daFileExtSchemaFile+'|All Files (*.*)|*.*', daFileExtSchemaFile, 'Load Schema') then begin + schema.LoadFromFile(sfname, pfXML); + Designer.Modified; + end; + end; +end; + +function TDASchemaEditor.GetVerb(Index: Integer): string; +begin + case Index of + COMMAND_INDEX_SEPARATOR_1, + COMMAND_INDEX_SEPARATOR_2 : result := '-'; + COMMAND_INDEX_EDIT : result := 'Edit '+GetComponent.Name; + COMMAND_INDEX_PUBLISH : result := 'Publish '+GetComponent.Name+'...'; + COMMAND_INDEX_SAVE : result := 'Save '+GetComponent.Name+' to Disk...'; + COMMAND_INDEX_LOAD : result := 'Load '+GetComponent.Name+' from Disk...'; + COMMAND_INDEX_GENCODE : result := 'Generate '+GetComponent.Name+' strongly-typed access units...'; + COMMAND_INDEX_GENCONSTS : result := 'Copy Dataset and Command Names to Clipboard'; + end; +end; + +function TDASchemaEditor.GetVerbCount: Integer; +begin + result := 8; +end; + +{ TDADriverManagerEditor } + +procedure TDADriverManagerEditor.ExecuteVerb(Index: Integer); +var + s : string; + i: Integer; + sl : IROStrings; + dm : TDADriverManager; +begin + dm := TDADriverManager(GetComponent); + s := ''; + + case Index of + 0 : ShowDriverInfo(dm); + + 1: begin + if (dm.DriverCount=0) then begin + MessageDlg('No drivers to unload.', mtWarning, [mbOK], 0); + end + else begin + dm.UnloadAllDrivers; + MessageDlg('Drivers unloaded.', mtInformation, [mbOK], 0); + end; + end; + + 2 : begin + if (dm.DriverDirectory='') then begin + MessageDlg('DriverDirectory is empty. Cannot load drivers.', mtWarning, [mbOK], 0); + end + else begin + dm.ListDrivers(dm.DriverDirectory, sl); + if (sl.Count=0) then begin + MessageDlg('No drivers were found', mtInformation, [mbOK], 0); + end + else begin + {$IFNDEF FPC} + with CreatePleaseWaitForm('Loading Drivers...') do try + {$ENDIF} + for i := 0 to sl.Count-1 do try + {$IFNDEF FPC} + Show(Format('Loading %s...',[ExtractFileName(sl[i])])); + {$ENDIF} + dm.LoadDriver(sl[i]); + except + on E:EDADriverAlreadyLoaded do; + on E:EDASchemaModelerOnly do; + on E:Exception do begin + {$IFNDEF FPC} + Hide(); + {$ENDIF} + ShowMessageFmt('There was an error loading the %s driver:'#13#13'%s: %s',[ExtractFileName(sl[i]),E.ClassName,E.Message]); + end; + end; { for } + {$IFNDEF FPC} + finally + free; + end; + {$ENDIF} + MessageDlg(IntToStr(dm.DriverCount)+' Drivers loaded.', mtInformation, [mbOK], 0); + end; + end; + end; + end; +end; + +function TDADriverManagerEditor.GetVerb(Index: Integer): string; +var dir : string; +begin + case Index of + 0 : result := 'Display Driver Information...'; + 1 : result := 'Unload All Drivers'; + 2 : begin + dir := TranslateFileName(TDADriverManager(GetComponent).DriverDirectory); + if (dir='') + then dir := ''; + result := 'Load Drivers in '+dir; + end; + end; +end; + +function TDADriverManagerEditor.GetVerbCount: Integer; +begin + result := 3; +end; + +{ TDAConnectionManagerEditor } + +procedure TDAConnectionManagerEditor.ExecuteVerb(Index: Integer); +var connmgr : TDAConnectionManager; + sfname : string; +begin + connmgr := GetComponent as TDAConnectionManager; + sfname := connmgr.Name+daFileExtConnectionMgrFile; + + case Index of + 0:begin + {$IFDEF FPC} + EditCollection(connmgr, connmgr.Connections, 'Connections'); + {$ELSE} + ShowCollectionEditor(Designer, connmgr, connmgr.Connections, 'Connections'); + {$ENDIF} + end; + + 1 : {separator}; + + 2 : begin + if not PromptForFileName(sfname, 'Data Abstract Connections (*'+daFileExtConnectionMgrFile+')|*'+daFileExtConnectionMgrFile+'|All Files (*.*)|*.*', daFileExtConnectionMgrFile, 'Save Connections '+connmgr.Name, '', TRUE) + then Exit; + + connmgr.SaveToFile(sfname, pfXML); + end; + + 3: begin + if not PromptForFileName(sfname, 'Data Abstract Connections (*'+daFileExtConnectionMgrFile+')|*'+daFileExtConnectionMgrFile+'|All Files (*.*)|*.*', DAFileExtConnectionMgrFile, 'Load Connections '+connmgr.Name, '') + then Exit; + + connmgr.LoadFromFile(sfname, pfXML); + Designer.Modified; + end; + end; +end; + +function TDAConnectionManagerEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := 'Connection List Editor'; + 1 : result := '-'; + 2 : result := 'Save '+GetComponent.Name+' To Disk...'; + 3 : result := 'Load '+GetComponent.Name+' From Disk...'; + end; +end; + +function TDAConnectionManagerEditor.GetVerbCount: Integer; +begin + result := 4; +end; + +{ TDADataRequestAccessParamEditor } + +procedure CheckCondition(InvalidSituation : boolean; const anErrorMessage : string); +begin + if InvalidSituation then begin + MessageDlg(anErrorMessage, mtError, [mbOK], 0); + Abort; + end; +end; + + +{ TDADataRequestCallMethodNameEditor } + +function TDADataRequestCallMethodNameEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList] +end; + +function TDADataRequestCallMethodNameEditor.RetrieveLibrary : TRODLLibrary; +var datamethod : TDARemoteRequest; + //datatable : TDADataTable; + //adapter : TDADataAdapter; + rs : TRORemoteService; + svcname : string; +begin + //result := NIL; + + // Sets the variable we need + datamethod := GetComponent(0) as TDARemoteRequest; + rs := datamethod.RemoteService; + + CheckCondition(rs=NIL, 'RemoteService must be assigned.'); + + svcname := Trim(rs.ServiceName); + CheckCondition(svcname='', rs.Name+'.ServiceName must be assigned.'); + + {adapter := datamethod.Owner.Adapter; + CheckCondition(adapter=NIL, 'The Adpater property is not set');} + + result := rs.GetRODLLibrary; +end; + +procedure TDADataRequestCallMethodNameEditor.GetValues(Proc: TGetStrProc); +var lib : TRODLLibrary; + i,j : integer; + svc : TRODLService; + svcintf : TRODLServiceInterface; + svcname : string; + sl : IROStrings; + anchestors : TList; + method: TDARemoteRequest; +begin + lib := RetrieveLibrary; + if not assigned(lib) then + raise Exception.Create('RODL library could npt be retrieved from server.'); + + anchestors := TList.Create; + try + + method := GetComponent(0) as TDARemoteRequest; + svcname := method.RemoteService.ServiceName; + + svc := lib.FindService(svcname); + if not assigned(svc) then raise Exception.Create('Service "'+svcname+'" could not be found in RODL.'); + + repeat + anchestors.Add(svc.Default); + if (Trim(svc.Ancestor)<>'') then begin + svc := lib.FindService(svc.Ancestor); + if not assigned(svc) then break; + end + else break; + until false; + + // Methods + sl := NewROStrings; + sl.Sorted := TRUE; + + for i := 0 to anchestors.Count-1 do begin + svcintf := TRODLServiceInterface(anchestors[i]); + + for j := 0 to (svcintf.Count-1) do begin + {if (svcintf.Items[i].Result=NIL) or + not (StrToDataType(svcintf.Items[i].Result.DataType)=method.Owner.Adapter.TargetDataType) + then Continue;} + + sl.Add(svcintf.Items[j].Name); + end; + end; + + for i := 0 to (sl.Count-1) + do Proc(sl[i]); + + finally + anchestors.Free; + end; +end; + +procedure TDADataRequestCallMethodNameEditor.SetValue(const Value: string); +var + lRemoteRequest: TDARemoteRequest; + lOldMethodName: String; +begin + lRemoteRequest := TDARemoteRequest(GetComponent(0)); + lOldMethodName := lRemoteRequest.MethodName; + lRemoteRequest.MethodName := Value; + if (Trim(lOldMethodName) <> Trim(Value)) then begin + {$IFNDEF FPC} + Designer.Modified(); + {$ELSE} + PropertyHook.Modified(lRemoteRequest); + {$ENDIF} + end; + + if (Trim(Value)='') then Exit; + + if MessageDlg('Do you want to retrieve the parameters of the method '+Value+'?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin + {$IFNDEF FPC} + with CreatePleaseWaitForm('Retrieving Parameters...') do begin + {$ENDIF} + lRemoteRequest.RefreshParams(true); + {$IFNDEF FPC} + Hide(); + {$ENDIF} + {$IFNDEF FPC} + Designer.Modified(); + {$ELSE} + PropertyHook.Modified(lRemoteRequest); + {$ENDIF FPC} + {$IFNDEF FPC} + end; + {$ENDIF} + end; +end; + +{ TDALoginAwareComponentEditor } + +procedure TDALoginAwareComponentEditor.OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean); +begin + aRetry := TROLoginNeededForm.Execute(fRemoteService); +end; + +function TDALoginAwareComponentEditor.GetAdapterSchema(aAdapter: TDABaseDataAdapter): TDASchema; +var + lSaved: TROExceptionEvent; +begin + if (aAdapter is TDARemoteDataAdapter) then begin + if TDARemoteDataAdapter(aAdapter).RemoteService.Channel = nil then + raise EROException.Create('Channel not assigned'); + lSaved := TDARemoteDataAdapter(aAdapter).RemoteService.Channel.OnLoginNeeded; + TDARemoteDataAdapter(aAdapter).RemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + try + fRemoteService := TDARemoteDataAdapter(aAdapter).RemoteService; + result := aAdapter.ReadSchema(True); + finally + TDARemoteDataAdapter(aAdapter).RemoteService.Channel.OnLoginNeeded := lSaved; + end; + end + else begin + result := aAdapter.ReadSchema(True); + end; +end; + +{ TDARemoteDataAdapterEditor } + +procedure TDARemoteDataAdapterEditor.ExecuteVerb(Index: Integer); +var + lAdapter: TDARemoteDataAdapter; +begin + lAdapter := TDARemoteDataAdapter(GetComponent); + case Index of + 0: lAdapter.SetupDefaultRequest(); + 1: lAdapter.SetupDefaultRequestV3(); + 2: exit{ Separator }; + 3: if not HookUpDataTables() then exit; + 4: if not TDataTableWizards.CreateDataTables(Designer, lAdapter, GetAdapterSchema(lAdapter), Point(0,0)) then exit; + end; + Designer.Modified(); +end; + +function TDARemoteDataAdapterEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := '&Reset Calls to Default'; + 1 : result := 'Reset Calls to Default (Legacy v&3.0)'; + 2 : result := '-'; + 3 : result := '&Hook up Data Tables...'; + 4 : result := '&Create Data Tables...'; + end; +end; + +function TDARemoteDataAdapterEditor.GetVerbCount: Integer; +begin + result := 5; +end; + +{ TDADataTableEditor } + +procedure TDADataTableEditor.ExecuteVerb(Index: Integer); +var + dt: TDADataTable; + lTempSchema: TDASchema; + lTempSchemaDataSet: TDADataset; + s: string; + lSaved: TROExceptionEvent; + lDA: TDALocalDataAdapter; +begin + dt := TDADataTable(GetComponent); + + case Index of + 0:begin + {$IFDEF FPC} + EditCollection(dt, dt.Fields, 'Fields'); + {$ELSE} + ShowCollectionEditor(Designer, dt, dt.Fields, 'Fields'); + {$ENDIF} + end; + 1:{ Seperator }; + 2:begin + if not (MessageDlg('Do you want to retrieve the schema of '+dt.Name+'?'#13+ + 'This will overwrite the current field and parameter settings.', + mtWarning, [mbYes, mbNo], 0)=mrYes) then Exit; + + if dt.LogicalName = '' then + raise Exception.Create('LogicalName must be set.'); + + if dt.RemoteFetchEnabled then begin + if assigned(dt.RemoteDataAdapter) then begin + (dt.RemoteDataAdapter as TDABaseDataAdapter).CheckProperties(); + if dt.RemoteDataAdapter is TDARemoteDataAdapter then begin + fRemoteService := (dt.RemoteDataAdapter as TDARemoteDataAdapter).RemoteService; + lSaved := fRemoteService.Channel.OnLoginNeeded; + fRemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + (dt.RemoteDataAdapter as TDARemoteDataAdapter).FlushSchema; + try + dt.LoadSchema(true, true); + finally + fRemoteService.Channel.OnLoginNeeded := lSaved; + end; + end + else if dt.RemoteDataAdapter is TDALocalDataAdapter then begin + lDA := TDALocalDataAdapter(dt.RemoteDataAdapter); + lDA.ServiceInstance := GetServiceInstance(lDA.ServiceName); + try + dt.LoadSchema(true, true); + finally + lDA.ServiceInstance := nil; + end; + end; + end + else begin + MessageDlg('RemoteDataAdapter must be assigned.', mtError, [mbOK], 0); + Exit; + end; + end + else begin + if assigned(dt.LocalSchema) and assigned(dt.LocalDataStreamer) then begin + dt.loadschema(True, True); + //ds := dt.LocalSchema.Datasets.DatasetByName(dt.LogicalName); + //dt.Fields.AssignFieldCollection(ds.Fields); + //dt.Params.AssignParamCollection(ds.Params); + end + else begin + MessageDlg('LocalSchema/LocalDataStreamer must be assigned.', mtError, [mbOK], 0); + Exit; + end; + end; + + s := 'Schema loaded successfully. '+IntToStr(dt.Fields.Count)+' fields'; + if (dt.Params.Count>0) then s := s+' and '+IntToStr(dt.Params.Count)+' params'; + s := s+' have been created. Original lookup- and client calculated fields have been preserved.'; + + MessageDlg(s, mtInformation, [mbOK], 0); + + Designer.Modified; + end; + + 3: if TDADataTableMasterLinkWizard.ExecuteWizard(dt,{$IFDEF FPC}Designer.PropertyEditorHook{$ELSE} Designer {$ENDIF}) then + Designer.Modified(); + 4:{ Seperator }; + 5:begin + lTempSchema := TDASchema.Create(NIL); + try + lTempSchema.Name := MakeValidIdentifier(dt.LogicalName); + if lTempSchema.Name = '' then lTempSchema.Name := dt.Name; + + lTempSchemaDataSet := lTempSchema.Datasets.Add(); + lTempSchemaDataSet.Name := lTempSchema.Name; + lTempSchemaDataSet.Fields.AssignFieldCollection(dt.Fields); + GenerateSchemaUnits(lTempSchema); + finally + lTempSchema.Free; + end; + end; + 6:{ Seperator }; + 7:begin + with TDAIdeData.Create(nil) do try + if dlg_OpenBriefcase.Execute then begin + dt.LoadFromFile(dlg_OpenBriefcase.Filename); + Designer.Modified(); + end; + finally + Free(); + end; + end; + 8:begin + if not dt.Active then + raise Exception.Create('DataTable is not active.'); + + with TDAIdeData.Create(nil) do try + if dlg_SaveBriefcase.Execute then begin + dt.SaveToFile(dlg_SaveBriefcase.Filename); + end; + finally + Free(); + end; + end; + 10:begin + if dt.LogicalName = '' then + raise Exception.Create('LogicalName must be set.'); + + if dt.RemoteFetchEnabled then + if assigned(dt.RemoteDataAdapter) then begin + (dt.RemoteDataAdapter as TDABaseDataAdapter).CheckProperties(); + if dt.RemoteDataAdapter is TDARemoteDataAdapter then begin + fRemoteService := (dt.RemoteDataAdapter as TDARemoteDataAdapter).RemoteService; + lSaved := fRemoteService.Channel.OnLoginNeeded; + fRemoteService.Channel.OnLoginNeeded := OnLoginNeeded; + try + dt.Open(); + finally + fRemoteService.Channel.OnLoginNeeded := lSaved; + end; + end + else if dt.RemoteDataAdapter is TDALocalDataAdapter then begin + lDA := TDALocalDataAdapter(dt.RemoteDataAdapter); + SetDefaultConnection(lDA.ServiceName); + lDA.ServiceInstance := GetServiceInstance(lDA.ServiceName); + try + dt.Open(); + finally + lDA.ServiceInstance := nil; + end; + end; + end + else if assigned(dt.LocalSchema) and assigned(dt.LocalDataStreamer) then begin + dt.Open(); + end; + Designer.Modified; + end; + + end; { case } +end; + +function TDADataTableEditor.GetVerb(Index: Integer): string; +begin + case Index of + 0 : result := 'Field Collection Editor'; + 1 : result := '-'; + //2 : result := 'Dynamic Method Binding Setup Wizard (Legacy v3.0)'; + //3 : result := '-'; + 2 : result := 'Retrieve DataTable Schema'; + 3 : result := 'Master/Detail Wizard'; + 4 : result := '-'; + 5 : result := 'Generate Business Class...'; + 6 : result := '-'; + 7 : result := 'Load Data from briefcase file...'; + 8 : result := 'Save Data to briefcase file...'; + 9 : result := '-'; + 10 : result := 'Get Design-Time Data'; + end; +end; + +function TDADataTableEditor.GetVerbCount: Integer; +begin + result := 9; + if not TDADataTable(GetComponent).Active and (assigned(TDADataTable(GetComponent).RemoteDataAdapter)) then inc(result,2); +end; + +{ TDABusinessProcessorCommandProperty } + +function TDABusinessProcessorCommandProperty.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +procedure TDABusinessProcessorCommandProperty.GetValues(Proc: TGetStrProc); +var biz : TDABusinessProcessor; + i : integer; + list : IROStrings; +begin + biz := GetComponent(0) as TDABusinessProcessor; + if (biz.Schema=NIL) then Exit; + + list := NewROStrings; + for i := 0 to (biz.Schema.Commands.Count-1) do + list.Add(biz.Schema.Commands[i].Name); + + list.Sorted := TRUE; + + for i := 0 to (list.Count-1) do + Proc(list[i]); +end; + +type + TPersistentCracker = class(TPersistent); +{ TDACollectionProperty } + +procedure TDACollectionProperty.Edit; +var coll : TCollection; +begin + coll := GetObjectProp(GetComponent(0), GetName) as TCollection; + + if (coll=NIL) then ShowMessage('no way!') + else showmessage(GetName+' has #'+INtToSTr(coll.count)+' '+TComponent(integer(coll.Owner)).ClassName); + {$IFDEF FPC} + EditCollection(TComponent(GetComponent(0)),coll, GetName); + {$ELSE} + ShowCollectionEditor(Designer, TComponent(GetComponent(0)), coll, GetName); + {$ENDIF} +end; + +function TDACollectionProperty.GetAttributes: TPropertyAttributes; +begin + result := [paDialog, paReadOnly]; +end; +{ TDABusinessProcessorRefDatasetProperty } + +function TDABusinessProcessorRefDatasetProperty.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +procedure TDABusinessProcessorRefDatasetProperty.GetValues( Proc: TGetStrProc); +var biz : TDABusinessProcessor; + i : integer; + list : IROStrings; +begin + biz := GetComponent(0) as TDABusinessProcessor; + if (biz.Schema=NIL) then Exit; + + list := NewROStrings; + for i := 0 to (biz.Schema.Datasets.Count-1) do + list.Add(biz.Schema.Datasets[i].Name); + + list.Sorted := TRUE; + + for i := 0 to (list.Count-1) do + Proc(list[i]); +end; + +{ TDADataTableLogicalNameEditor } + +function TDADataTableLogicalNameEditor.GetAttributes: TPropertyAttributes; +begin + result := [paValueList, paSortList] +end; + +function TDADataTableLogicalNameEditor.GetSchema: TDASchema; +var + lda: TDALocalDataAdapter; +begin + Result:=nil; + try + with TDADataTable(GetComponent(0)) do + if not RemoteFetchEnabled then + Result := LocalSchema + else if (RemoteDataAdapter <> nil) then begin + if (RemoteDataAdapter is TDARemoteDataAdapter) then + Result:= (RemoteDataAdapter as TDARemoteDataAdapter).Schema + else if (RemoteDataAdapter is TDALocalDataAdapter) then begin + lda := (RemoteDataAdapter as TDALocalDataAdapter); + lda.ServiceInstance := GetServiceInstance(lda.ServiceName); + try + Result:= (RemoteDataAdapter as TDALocalDataAdapter).Schema; + finally + lda.ServiceInstance := nil; + end; + end; + end; + except + // hide exception, when RDA can't receive SCHEMA + end; +end; + +procedure TDADataTableLogicalNameEditor.GetValues(Proc: TGetStrProc); +var i : integer; + _Schema: TDASchema; +begin + _Schema:= GetSchema; + if _Schema <> nil then begin + for i := 0 to (_Schema.Datasets.Count-1) do + if _Schema.Datasets[i].IsPublic then Proc(_Schema.Datasets[i].Name); + for i := 0 to (_Schema.UnionDataTables.Count-1) do + if _Schema.UnionDataTables[i].IsPublic then Proc(_Schema.UnionDataTables[i].Name); + for i := 0 to (_Schema.JoinDataTables.Count-1) do + if _Schema.JoinDataTables[i].IsPublic then Proc(_Schema.JoinDataTables[i].Name); + end; +end; + +{ TDADataTableLocalConnection } + +function TDADataTableLocalConnection.GetAttributes: TPropertyAttributes; +begin + if (TDADataTable(GetComponent(0)).LocalSchema<>NIL) and (TDADataTable(GetComponent(0)).LocalSchema.ConnectionManager<>NIL) + then result := [paValueList] + else result := [] +end; + +procedure TDADataTableLocalConnection.GetValues(Proc: TGetStrProc); +var i : integer; +begin + with TDADataTable(GetComponent(0)) do begin + if (LocalSchema=NIL) or (LocalSchema.ConnectionManager=NIL) then Exit; + + for i := 0 to (LocalSchema.ConnectionManager.Connections.Count-1) do + Proc(LocalSchema.ConnectionManager.Connections[i].Name); + end; +end; + +{ TDADriverManagerDirectory } + +function TDADriverManagerDirectory.GetAttributes: TPropertyAttributes; +begin + result := [paValueList] +end; + +const SelectDirOption = ' + Value B:
+ + + + + + + + + + + + + + + + + + +

GetServerTime Method

+ + + + + + + + + + + + + + + + +

EchoPerson Method

+ + + + + First Name:
+ Last Name:
+ + + + Age:
+ Sex:
+ + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/MegaDemoLibrary_intf.js b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/MegaDemoLibrary_intf.js new file mode 100644 index 0000000..034dfd4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/MegaDemoLibrary_intf.js @@ -0,0 +1,464 @@ +// Javascript JSON-RPC Code Generated for the MegaDemoLibrary library. + +/* This codegen depends on the Yahoo YUI (http://developer.yahoo.com/yui/) toolkit and requires the + following libraries. Note that it's recommended to download yui and place a local copy next to + your html. + + + + +*/ + +// Service: MegaDemoService +function MegaDemoService(url){ + this.url = url; +} + +MegaDemoService.prototype.Sum = function(A, B, __callback) { + var __message = { + "method" : "MegaDemoService.Sum", + "params" : { + "A": A, + "B": B + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.GetServerTime = function(__callback) { + var __message = { + "method" : "MegaDemoService.GetServerTime", + "params" : { + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.EchoPerson = function(aPerson, __callback) { + var __message = { + "method" : "MegaDemoService.EchoPerson", + "params" : { + "aPerson": aPerson + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.TestIntegerArray = function(anArray, __callback) { + var __message = { + "method" : "MegaDemoService.TestIntegerArray", + "params" : { + "anArray": anArray + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.TestStringArray = function(anArray, __callback) { + var __message = { + "method" : "MegaDemoService.TestStringArray", + "params" : { + "anArray": anArray + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.TestPersonArray = function(anArray, __callback) { + var __message = { + "method" : "MegaDemoService.TestPersonArray", + "params" : { + "anArray": anArray + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.EchoBinary = function(BinIN, __callback) { + var __message = { + "method" : "MegaDemoService.EchoBinary", + "params" : { + "BinIN": BinIN + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +// SomeTypes not support as it has multiple out/result parameters +// SomeTypes not support as it has multiple out/result parameters +// SomeTypes not support as it has multiple out/result parameters +// SomeTypes not support as it has multiple out/result parameters +MegaDemoService.prototype.SomeTypes = function(aString, aWidestring, anInteger, aCurrency, aDatetime, __callback) { + var __message = { + "method" : "MegaDemoService.SomeTypes", + "params" : { + "aString": aString, + "aWidestring": aWidestring, + "anInteger": anInteger, + "aCurrency": aCurrency, + "aDatetime": aDatetime + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.CustomObjectAsString = function(__callback) { + var __message = { + "method" : "MegaDemoService.CustomObjectAsString", + "params" : { + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.CustomObjectAsStream = function(__callback) { + var __message = { + "method" : "MegaDemoService.CustomObjectAsStream", + "params" : { + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.RaiseError = function(__callback) { + var __message = { + "method" : "MegaDemoService.RaiseError", + "params" : { + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.EchoVariant = function(inVariant, outVariant, __callback) { + var __message = { + "method" : "MegaDemoService.EchoVariant", + "params" : { + "inVariant": inVariant, + "outVariant": outVariant + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +MegaDemoService.prototype.RaiseTestException = function(__callback) { + var __message = { + "method" : "MegaDemoService.RaiseTestException", + "params" : { + } + } + var __callbacks = null; + if (__callback) { + __callbacks = { + callback : __callback, + success : function (o) { + var __result = YAHOO.lang.JSON.parse(o.responseText); + if (__result.error) + { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(__result.error); + } else { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.success(__result.result); + else + this.callback(__result.result); + } + }, + failure : function (o) { + if ((typeof this.callback == "object") && this.callback.failure) + this.callback.failure(o); + }, + timeout : 30000 + } + } + YAHOO.util.Connect.asyncRequest("POST", this.url, __callbacks, YAHOO.util.Lang.JSON.stringify(__message)); +} + +// End of service: MegaDemoService \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/app.ico b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/app.ico new file mode 100644 index 0000000..b4d0413 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/app.ico differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/ro.png b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/ro.png new file mode 100644 index 0000000..9bc5c42 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/images/ro.png differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/ro.css b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/ro.css new file mode 100644 index 0000000..1579137 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/ro.css @@ -0,0 +1,6 @@ +BODY { + font-family: Tahoma,Verdana,Arial,sans-serif; + font-size: 11px; + color: #3D5066; + background: #A1ACB9; +} diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/script.js b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/script.js new file mode 100644 index 0000000..9bfefc2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/script.js @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////////// +function BeginSumMethod() +{ + //ClearLog(); + AddLineToLog('----------------------'); + AddLineToLog('Calling Sum method.'); + AddToLog('Creating MegaDemoService ...'); + var service = new MegaDemoService('http://localhost:8099/json') + AddLineToLog(' ok.'); + + var A = editA.value; + var B = editB.value; + + AddLineToLog('Method: Sum; Params: A=' + A + '; B=' + B + ';'); + AddToLog('Sending request...'); + service.Sum(A, B, EndSumMethod); + AddLineToLog(' ok.'); + + AddToLog('Waiting for response... '); +} + +function EndSumMethod(result) +{ + AddLineToLog(' ok.'); + AddLineToLog('Result is ' + result); + AddLineToLog('Done.'); + alert('Result is ' + result); +} +/////////////////////////////////////////////////////////////////// +function BeginGetServerTimeMethod() +{ + //ClearLog(); + AddLineToLog('----------------------'); + AddLineToLog('Calling Sum method.'); + AddToLog('Creating MegaDemoService ...'); + var service = new MegaDemoService('http://localhost:8099/json') + AddLineToLog(' ok.'); + + AddLineToLog('Method: GetServerTime;'); + AddToLog('Sending request...'); + service.GetServerTime(EndGetServerTimeMethod); + AddToLog('Waiting for response... '); +} + +function EndGetServerTimeMethod(result) +{ + AddLineToLog(' ok.'); + AddLineToLog('Result is ' + result); + AddLineToLog('Done.'); + alert('Result is ' + result); +} +/////////////////////////////////////////////////////////////////// +function BeginEchoPersonMethod() +{ + //ClearLog(); + AddLineToLog('----------------------'); + AddLineToLog('Calling EchoPerson method.'); + AddToLog('Creating MegaDemoService ...'); + var service = new MegaDemoService('http://localhost:8099/json') + AddLineToLog(' ok.'); + + var myPerson = + { + FirstName: editFN.value, + LastName: editLN.value, + Age: editAg.value, + Sex: editSx.value + }; + + + AddLineToLog("Method: EchoPerson; Params: Person " + myPerson.FirstName + " " + myPerson.LastName + " " + myPerson.Age + " years old;"); + AddToLog('Sending request...'); + service.EchoPerson(myPerson, EndEchoPersonMethod); + AddLineToLog(' ok.'); + + AddToLog('Waiting for response... '); +} + +function EndEchoPersonMethod(result) +{ + AddLineToLog(' ok.'); + AddLineToLog("Result is: " + result.FirstName + " " + result.LastName + " " + result.Age + " years old."); + AddLineToLog('Done.'); + alert("Result is: " + result.FirstName + " " + result.LastName + " " + result.Age + " years old."); +} + +/////////////////////////////////////////////////////////////////// +function BeginTestPersonArrayMethod() +{ + //ClearLog(); + AddLineToLog('----------------------'); + AddLineToLog('Calling EchoPerson method.'); + AddToLog('Creating MegaDemoService ...'); + var service = new MegaDemoService('http://localhost:8099/json') + AddLineToLog(' ok.'); + + var myPersons = + [ + { FirstName: "John", LastName: "Doe", Age: 33, Sex: "sxMale" }, + { FirstName: "Will", LastName: "Smith", Age: 35, Sex: "sxMale" }, + { FirstName: "Samanta", LastName: "Carter", Age: 28, Sex: "sxFemale" } + ]; + + var myPersonAsString = YAHOO.lang.JSON.stringify(myPersons, ["FirstName", "LastName"]); + AddLineToLog('Method: EchoPerson; Params: Person ' + myPersonAsString + ';'); + AddToLog('Sending request...'); + service.TestPersonArray(myPersons, EndTestPersonArrayMethod); + AddLineToLog(' ok.'); + + AddToLog('Waiting for response... '); +} + +function EndTestPersonArrayMethod(result) +{ + AddLineToLog(' ok.'); + AddLineToLog('Result is ' + result); + AddLineToLog('Done.'); + alert('Result is ' + result); +} +/////////////////////////////////////////////////////////////////// + +function AddToLog(message) +{ + log.value += message; +} + +function AddLineToLog(message) +{ + AddToLog(message); + log.value += "\n"; +} + + +function ClearLog() +{ + log.value = ""; +} \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/connection/connection.js b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/connection/connection.js new file mode 100644 index 0000000..700a5d1 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/connection/connection.js @@ -0,0 +1,1379 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +/** + * The Connection Manager provides a simplified interface to the XMLHttpRequest + * object. It handles cross-browser instantiantion of XMLHttpRequest, negotiates the + * interactive states and server response, returning the results to a pre-defined + * callback you create. + * + * @namespace YAHOO.util + * @module connection + * @requires yahoo + * @requires event + */ + +/** + * The Connection Manager singleton provides methods for creating and managing + * asynchronous transactions. + * + * @class Connect + */ + +YAHOO.util.Connect = +{ + /** + * @description Array of MSFT ActiveX ids for XMLHttpRequest. + * @property _msxml_progid + * @private + * @static + * @type array + */ + _msxml_progid:[ + 'Microsoft.XMLHTTP', + 'MSXML2.XMLHTTP.3.0', + 'MSXML2.XMLHTTP' + ], + + /** + * @description Object literal of HTTP header(s) + * @property _http_header + * @private + * @static + * @type object + */ + _http_headers:{}, + + /** + * @description Determines if HTTP headers are set. + * @property _has_http_headers + * @private + * @static + * @type boolean + */ + _has_http_headers:false, + + /** + * @description Determines if a default header of + * Content-Type of 'application/x-www-form-urlencoded' + * will be added to any client HTTP headers sent for POST + * transactions. + * @property _use_default_post_header + * @private + * @static + * @type boolean + */ + _use_default_post_header:true, + + /** + * @description The default header used for POST transactions. + * @property _default_post_header + * @private + * @static + * @type boolean + */ + _default_post_header:'application/x-www-form-urlencoded; charset=UTF-8', + + /** + * @description The default header used for transactions involving the + * use of HTML forms. + * @property _default_form_header + * @private + * @static + * @type boolean + */ + _default_form_header:'application/x-www-form-urlencoded', + + /** + * @description Determines if a default header of + * 'X-Requested-With: XMLHttpRequest' + * will be added to each transaction. + * @property _use_default_xhr_header + * @private + * @static + * @type boolean + */ + _use_default_xhr_header:true, + + /** + * @description The default header value for the label + * "X-Requested-With". This is sent with each + * transaction, by default, to identify the + * request as being made by YUI Connection Manager. + * @property _default_xhr_header + * @private + * @static + * @type boolean + */ + _default_xhr_header:'XMLHttpRequest', + + /** + * @description Determines if custom, default headers + * are set for each transaction. + * @property _has_default_header + * @private + * @static + * @type boolean + */ + _has_default_headers:true, + + /** + * @description Determines if custom, default headers + * are set for each transaction. + * @property _has_default_header + * @private + * @static + * @type boolean + */ + _default_headers:{}, + + /** + * @description Property modified by setForm() to determine if the data + * should be submitted as an HTML form. + * @property _isFormSubmit + * @private + * @static + * @type boolean + */ + _isFormSubmit:false, + + /** + * @description Property modified by setForm() to determine if a file(s) + * upload is expected. + * @property _isFileUpload + * @private + * @static + * @type boolean + */ + _isFileUpload:false, + + /** + * @description Property modified by setForm() to set a reference to the HTML + * form node if the desired action is file upload. + * @property _formNode + * @private + * @static + * @type object + */ + _formNode:null, + + /** + * @description Property modified by setForm() to set the HTML form data + * for each transaction. + * @property _sFormData + * @private + * @static + * @type string + */ + _sFormData:null, + + /** + * @description Collection of polling references to the polling mechanism in handleReadyState. + * @property _poll + * @private + * @static + * @type object + */ + _poll:{}, + + /** + * @description Queue of timeout values for each transaction callback with a defined timeout value. + * @property _timeOut + * @private + * @static + * @type object + */ + _timeOut:{}, + + /** + * @description The polling frequency, in milliseconds, for HandleReadyState. + * when attempting to determine a transaction's XHR readyState. + * The default is 50 milliseconds. + * @property _polling_interval + * @private + * @static + * @type int + */ + _polling_interval:50, + + /** + * @description A transaction counter that increments the transaction id for each transaction. + * @property _transaction_id + * @private + * @static + * @type int + */ + _transaction_id:0, + + /** + * @description Tracks the name-value pair of the "clicked" submit button if multiple submit + * buttons are present in an HTML form; and, if YAHOO.util.Event is available. + * @property _submitElementValue + * @private + * @static + * @type string + */ + _submitElementValue:null, + + /** + * @description Determines whether YAHOO.util.Event is available and returns true or false. + * If true, an event listener is bound at the document level to trap click events that + * resolve to a target type of "Submit". This listener will enable setForm() to determine + * the clicked "Submit" value in a multi-Submit button, HTML form. + * @property _hasSubmitListener + * @private + * @static + */ + _hasSubmitListener:(function() + { + if(YAHOO.util.Event){ + YAHOO.util.Event.addListener( + document, + 'click', + function(e){ + var obj = YAHOO.util.Event.getTarget(e); + if(obj.nodeName.toLowerCase() == 'input' && (obj.type && obj.type.toLowerCase() == 'submit')){ + YAHOO.util.Connect._submitElementValue = encodeURIComponent(obj.name) + "=" + encodeURIComponent(obj.value); + } + }); + return true; + } + return false; + })(), + + /** + * @description Custom event that fires at the start of a transaction + * @property startEvent + * @private + * @static + * @type CustomEvent + */ + startEvent: new YAHOO.util.CustomEvent('start'), + + /** + * @description Custom event that fires when a transaction response has completed. + * @property completeEvent + * @private + * @static + * @type CustomEvent + */ + completeEvent: new YAHOO.util.CustomEvent('complete'), + + /** + * @description Custom event that fires when handleTransactionResponse() determines a + * response in the HTTP 2xx range. + * @property successEvent + * @private + * @static + * @type CustomEvent + */ + successEvent: new YAHOO.util.CustomEvent('success'), + + /** + * @description Custom event that fires when handleTransactionResponse() determines a + * response in the HTTP 4xx/5xx range. + * @property failureEvent + * @private + * @static + * @type CustomEvent + */ + failureEvent: new YAHOO.util.CustomEvent('failure'), + + /** + * @description Custom event that fires when handleTransactionResponse() determines a + * response in the HTTP 4xx/5xx range. + * @property failureEvent + * @private + * @static + * @type CustomEvent + */ + uploadEvent: new YAHOO.util.CustomEvent('upload'), + + /** + * @description Custom event that fires when a transaction is successfully aborted. + * @property abortEvent + * @private + * @static + * @type CustomEvent + */ + abortEvent: new YAHOO.util.CustomEvent('abort'), + + /** + * @description A reference table that maps callback custom events members to its specific + * event name. + * @property _customEvents + * @private + * @static + * @type object + */ + _customEvents: + { + onStart:['startEvent', 'start'], + onComplete:['completeEvent', 'complete'], + onSuccess:['successEvent', 'success'], + onFailure:['failureEvent', 'failure'], + onUpload:['uploadEvent', 'upload'], + onAbort:['abortEvent', 'abort'] + }, + + /** + * @description Member to add an ActiveX id to the existing xml_progid array. + * In the event(unlikely) a new ActiveX id is introduced, it can be added + * without internal code modifications. + * @method setProgId + * @public + * @static + * @param {string} id The ActiveX id to be added to initialize the XHR object. + * @return void + */ + setProgId:function(id) + { + this._msxml_progid.unshift(id); + }, + + /** + * @description Member to override the default POST header. + * @method setDefaultPostHeader + * @public + * @static + * @param {boolean} b Set and use default header - true or false . + * @return void + */ + setDefaultPostHeader:function(b) + { + if(typeof b == 'string'){ + this._default_post_header = b; + } + else if(typeof b == 'boolean'){ + this._use_default_post_header = b; + } + }, + + /** + * @description Member to override the default transaction header.. + * @method setDefaultXhrHeader + * @public + * @static + * @param {boolean} b Set and use default header - true or false . + * @return void + */ + setDefaultXhrHeader:function(b) + { + if(typeof b == 'string'){ + this._default_xhr_header = b; + } + else{ + this._use_default_xhr_header = b; + } + }, + + /** + * @description Member to modify the default polling interval. + * @method setPollingInterval + * @public + * @static + * @param {int} i The polling interval in milliseconds. + * @return void + */ + setPollingInterval:function(i) + { + if(typeof i == 'number' && isFinite(i)){ + this._polling_interval = i; + } + }, + + /** + * @description Instantiates a XMLHttpRequest object and returns an object with two properties: + * the XMLHttpRequest instance and the transaction id. + * @method createXhrObject + * @private + * @static + * @param {int} transactionId Property containing the transaction id for this transaction. + * @return object + */ + createXhrObject:function(transactionId) + { + var obj,http; + try + { + // Instantiates XMLHttpRequest in non-IE browsers and assigns to http. + http = new XMLHttpRequest(); + // Object literal with http and tId properties + obj = { conn:http, tId:transactionId }; + } + catch(e) + { + for(var i=0; i= 200 && httpStatus < 300 || httpStatus === 1223){ + responseObject = this.createResponseObject(o, args); + if(callback && callback.success){ + if(!callback.scope){ + callback.success(responseObject); + } + else{ + // If a scope property is defined, the callback will be fired from + // the context of the object. + callback.success.apply(callback.scope, [responseObject]); + } + } + + // Fire global custom event -- successEvent + this.successEvent.fire(responseObject); + + if(o.successEvent){ + // Fire transaction custom event -- successEvent + o.successEvent.fire(responseObject); + } + } + else{ + switch(httpStatus){ + // The following cases are wininet.dll error codes that may be encountered. + case 12002: // Server timeout + case 12029: // 12029 to 12031 correspond to dropped connections. + case 12030: + case 12031: + case 12152: // Connection closed by server. + case 13030: // See above comments for variable status. + responseObject = this.createExceptionObject(o.tId, args, (isAbort?isAbort:false)); + if(callback && callback.failure){ + if(!callback.scope){ + callback.failure(responseObject); + } + else{ + callback.failure.apply(callback.scope, [responseObject]); + } + } + + break; + default: + responseObject = this.createResponseObject(o, args); + if(callback && callback.failure){ + if(!callback.scope){ + callback.failure(responseObject); + } + else{ + callback.failure.apply(callback.scope, [responseObject]); + } + } + } + + // Fire global custom event -- failureEvent + this.failureEvent.fire(responseObject); + + if(o.failureEvent){ + // Fire transaction custom event -- failureEvent + o.failureEvent.fire(responseObject); + } + + } + + this.releaseObject(o); + responseObject = null; + }, + + /** + * @description This method evaluates the server response, creates and returns the results via + * its properties. Success and failure cases will differ in the response + * object's property values. + * @method createResponseObject + * @private + * @static + * @param {object} o The connection object + * @param {callbackArg} callbackArg The user-defined argument or arguments to be passed to the callback + * @return {object} + */ + createResponseObject:function(o, callbackArg) + { + var obj = {}; + var headerObj = {}; + + try + { + var headerStr = o.conn.getAllResponseHeaders(); + var header = headerStr.split('\n'); + for(var i=0; i -1) { + opt = oElement.options[oElement.selectedIndex]; + data[item++] = oName + encodeURIComponent( + (opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text); + } + break; + case 'select-multiple': + if (oElement.selectedIndex > -1) { + for(j=oElement.selectedIndex, jlen=oElement.options.length; j'); + + // IE will throw a security exception in an SSL environment if the + // iframe source is undefined. + if(typeof secureUri == 'boolean'){ + io.src = 'javascript:false'; + } + } + else{ + io = document.createElement('iframe'); + io.id = frameId; + io.name = frameId; + } + + io.style.position = 'absolute'; + io.style.top = '-1000px'; + io.style.left = '-1000px'; + + document.body.appendChild(io); + }, + + /** + * @description Parses the POST data and creates hidden form elements + * for each key-value, and appends them to the HTML form object. + * @method appendPostData + * @private + * @static + * @param {string} postData The HTTP POST data + * @return {array} formElements Collection of hidden fields. + */ + appendPostData:function(postData) + { + var formElements = [], + postMessage = postData.split('&'), + i, delimitPos; + for(i=0; i < postMessage.length; i++){ + delimitPos = postMessage[i].indexOf('='); + if(delimitPos != -1){ + formElements[i] = document.createElement('input'); + formElements[i].type = 'hidden'; + formElements[i].name = decodeURIComponent(postMessage[i].substring(0,delimitPos)); + formElements[i].value = decodeURIComponent(postMessage[i].substring(delimitPos+1)); + this._formNode.appendChild(formElements[i]); + } + } + + return formElements; + }, + + /** + * @description Uploads HTML form, inclusive of files/attachments, using the + * iframe created in createFrame to facilitate the transaction. + * @method uploadFile + * @private + * @static + * @param {int} id The transaction id. + * @param {object} callback User-defined callback object. + * @param {string} uri Fully qualified path of resource. + * @param {string} postData POST data to be submitted in addition to HTML form. + * @return {void} + */ + uploadFile:function(o, callback, uri, postData){ + + // Each iframe has an id prefix of "yuiIO" followed + // by the unique transaction id. + var frameId = 'yuiIO' + o.tId, + uploadEncoding = 'multipart/form-data', + io = document.getElementById(frameId), + oConn = this, + args = (callback && callback.argument)?callback.argument:null, + oElements,i,prop,obj; + + // Track original HTML form attribute values. + var rawFormAttributes = + { + action:this._formNode.getAttribute('action'), + method:this._formNode.getAttribute('method'), + target:this._formNode.getAttribute('target') + }; + + // Initialize the HTML form properties in case they are + // not defined in the HTML form. + this._formNode.setAttribute('action', uri); + this._formNode.setAttribute('method', 'POST'); + this._formNode.setAttribute('target', frameId); + + if(YAHOO.env.ua.ie){ + // IE does not respect property enctype for HTML forms. + // Instead it uses the property - "encoding". + this._formNode.setAttribute('encoding', uploadEncoding); + } + else{ + this._formNode.setAttribute('enctype', uploadEncoding); + } + + if(postData){ + oElements = this.appendPostData(postData); + } + + // Start file upload. + this._formNode.submit(); + + // Fire global custom event -- startEvent + this.startEvent.fire(o, args); + + if(o.startEvent){ + // Fire transaction custom event -- startEvent + o.startEvent.fire(o, args); + } + + // Start polling if a callback is present and the timeout + // property has been defined. + if(callback && callback.timeout){ + this._timeOut[o.tId] = window.setTimeout(function(){ oConn.abort(o, callback, true); }, callback.timeout); + } + + // Remove HTML elements created by appendPostData + if(oElements && oElements.length > 0){ + for(i=0; i < oElements.length; i++){ + this._formNode.removeChild(oElements[i]); + } + } + + // Restore HTML form attributes to their original + // values prior to file upload. + for(prop in rawFormAttributes){ + if(YAHOO.lang.hasOwnProperty(rawFormAttributes, prop)){ + if(rawFormAttributes[prop]){ + this._formNode.setAttribute(prop, rawFormAttributes[prop]); + } + else{ + this._formNode.removeAttribute(prop); + } + } + } + + // Reset HTML form state properties. + this.resetFormState(); + + // Create the upload callback handler that fires when the iframe + // receives the load event. Subsequently, the event handler is detached + // and the iframe removed from the document. + var uploadCallback = function() + { + if(callback && callback.timeout){ + window.clearTimeout(oConn._timeOut[o.tId]); + delete oConn._timeOut[o.tId]; + } + + // Fire global custom event -- completeEvent + oConn.completeEvent.fire(o, args); + + if(o.completeEvent){ + // Fire transaction custom event -- completeEvent + o.completeEvent.fire(o, args); + } + + obj = { + tId : o.tId, + argument : callback.argument + }; + + try + { + // responseText and responseXML will be populated with the same data from the iframe. + // Since the HTTP headers cannot be read from the iframe + obj.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:io.contentWindow.document.documentElement.textContent; + obj.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document; + } + catch(e){} + + if(callback && callback.upload){ + if(!callback.scope){ + callback.upload(obj); + } + else{ + callback.upload.apply(callback.scope, [obj]); + } + } + + // Fire global custom event -- uploadEvent + oConn.uploadEvent.fire(obj); + + if(o.uploadEvent){ + // Fire transaction custom event -- uploadEvent + o.uploadEvent.fire(obj); + } + + YAHOO.util.Event.removeListener(io, "load", uploadCallback); + + setTimeout( + function(){ + document.body.removeChild(io); + oConn.releaseObject(o); + }, 100); + }; + + // Bind the onload handler to the iframe to detect the file upload response. + YAHOO.util.Event.addListener(io, "load", uploadCallback); + }, + + /** + * @description Method to terminate a transaction, if it has not reached readyState 4. + * @method abort + * @public + * @static + * @param {object} o The connection object returned by asyncRequest. + * @param {object} callback User-defined callback object. + * @param {string} isTimeout boolean to indicate if abort resulted from a callback timeout. + * @return {boolean} + */ + abort:function(o, callback, isTimeout) + { + var abortStatus; + var args = (callback && callback.argument)?callback.argument:null; + + + if(o && o.conn){ + if(this.isCallInProgress(o)){ + // Issue abort request + o.conn.abort(); + + window.clearInterval(this._poll[o.tId]); + delete this._poll[o.tId]; + + if(isTimeout){ + window.clearTimeout(this._timeOut[o.tId]); + delete this._timeOut[o.tId]; + } + + abortStatus = true; + } + } + else if(o && o.isUpload === true){ + var frameId = 'yuiIO' + o.tId; + var io = document.getElementById(frameId); + + if(io){ + // Remove all listeners on the iframe prior to + // its destruction. + YAHOO.util.Event.removeListener(io, "load"); + // Destroy the iframe facilitating the transaction. + document.body.removeChild(io); + + if(isTimeout){ + window.clearTimeout(this._timeOut[o.tId]); + delete this._timeOut[o.tId]; + } + + abortStatus = true; + } + } + else{ + abortStatus = false; + } + + if(abortStatus === true){ + // Fire global custom event -- abortEvent + this.abortEvent.fire(o, args); + + if(o.abortEvent){ + // Fire transaction custom event -- abortEvent + o.abortEvent.fire(o, args); + } + + this.handleTransactionResponse(o, callback, true); + } + + return abortStatus; + }, + + /** + * @description Determines if the transaction is still being processed. + * @method isCallInProgress + * @public + * @static + * @param {object} o The connection object returned by asyncRequest + * @return {boolean} + */ + isCallInProgress:function(o) + { + // if the XHR object assigned to the transaction has not been dereferenced, + // then check its readyState status. Otherwise, return false. + if(o && o.conn){ + return o.conn.readyState !== 4 && o.conn.readyState !== 0; + } + else if(o && o.isUpload === true){ + var frameId = 'yuiIO' + o.tId; + return document.getElementById(frameId)?true:false; + } + else{ + return false; + } + }, + + /** + * @description Dereference the XHR instance and the connection object after the transaction is completed. + * @method releaseObject + * @private + * @static + * @param {object} o The connection object + * @return {void} + */ + releaseObject:function(o) + { + if(o && o.conn){ + //dereference the XHR instance. + o.conn = null; + + + //dereference the connection object. + o = null; + } + } +}; +YAHOO.register("connection", YAHOO.util.Connect, {version: "2.6.0", build: "1321"}); diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/event/event.js b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/event/event.js new file mode 100644 index 0000000..17eb097 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/event/event.js @@ -0,0 +1,2562 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ + +/** + * The CustomEvent class lets you define events for your application + * that can be subscribed to by one or more independent component. + * + * @param {String} type The type of event, which is passed to the callback + * when the event fires + * @param {Object} oScope The context the event will fire from. "this" will + * refer to this object in the callback. Default value: + * the window object. The listener can override this. + * @param {boolean} silent pass true to prevent the event from writing to + * the debugsystem + * @param {int} signature the signature that the custom event subscriber + * will receive. YAHOO.util.CustomEvent.LIST or + * YAHOO.util.CustomEvent.FLAT. The default is + * YAHOO.util.CustomEvent.LIST. + * @namespace YAHOO.util + * @class CustomEvent + * @constructor + */ +YAHOO.util.CustomEvent = function(type, oScope, silent, signature) { + + /** + * The type of event, returned to subscribers when the event fires + * @property type + * @type string + */ + this.type = type; + + /** + * The scope the the event will fire from by default. Defaults to the window + * obj + * @property scope + * @type object + */ + this.scope = oScope || window; + + /** + * By default all custom events are logged in the debug build, set silent + * to true to disable debug outpu for this event. + * @property silent + * @type boolean + */ + this.silent = silent; + + /** + * Custom events support two styles of arguments provided to the event + * subscribers. + *
    + *
  • YAHOO.util.CustomEvent.LIST: + *
      + *
    • param1: event name
    • + *
    • param2: array of arguments sent to fire
    • + *
    • param3: a custom object supplied by the subscriber
    • + *
    + *
  • + *
  • YAHOO.util.CustomEvent.FLAT + *
      + *
    • param1: the first argument passed to fire. If you need to + * pass multiple parameters, use and array or object literal
    • + *
    • param2: a custom object supplied by the subscriber
    • + *
    + *
  • + *
+ * @property signature + * @type int + */ + this.signature = signature || YAHOO.util.CustomEvent.LIST; + + /** + * The subscribers to this event + * @property subscribers + * @type Subscriber[] + */ + this.subscribers = []; + + if (!this.silent) { + } + + var onsubscribeType = "_YUICEOnSubscribe"; + + // Only add subscribe events for events that are not generated by + // CustomEvent + if (type !== onsubscribeType) { + + /** + * Custom events provide a custom event that fires whenever there is + * a new subscriber to the event. This provides an opportunity to + * handle the case where there is a non-repeating event that has + * already fired has a new subscriber. + * + * @event subscribeEvent + * @type YAHOO.util.CustomEvent + * @param {Function} fn The function to execute + * @param {Object} obj An object to be passed along when the event + * fires + * @param {boolean|Object} override If true, the obj passed in becomes + * the execution scope of the listener. + * if an object, that object becomes the + * the execution scope. + */ + this.subscribeEvent = + new YAHOO.util.CustomEvent(onsubscribeType, this, true); + + } + + + /** + * In order to make it possible to execute the rest of the subscriber + * stack when one thows an exception, the subscribers exceptions are + * caught. The most recent exception is stored in this property + * @property lastError + * @type Error + */ + this.lastError = null; +}; + +/** + * Subscriber listener sigature constant. The LIST type returns three + * parameters: the event type, the array of args passed to fire, and + * the optional custom object + * @property YAHOO.util.CustomEvent.LIST + * @static + * @type int + */ +YAHOO.util.CustomEvent.LIST = 0; + +/** + * Subscriber listener sigature constant. The FLAT type returns two + * parameters: the first argument passed to fire and the optional + * custom object + * @property YAHOO.util.CustomEvent.FLAT + * @static + * @type int + */ +YAHOO.util.CustomEvent.FLAT = 1; + +YAHOO.util.CustomEvent.prototype = { + + /** + * Subscribes the caller to this event + * @method subscribe + * @param {Function} fn The function to execute + * @param {Object} obj An object to be passed along when the event + * fires + * @param {boolean|Object} override If true, the obj passed in becomes + * the execution scope of the listener. + * if an object, that object becomes the + * the execution scope. + */ + subscribe: function(fn, obj, override) { + + if (!fn) { +throw new Error("Invalid callback for subscriber to '" + this.type + "'"); + } + + if (this.subscribeEvent) { + this.subscribeEvent.fire(fn, obj, override); + } + + this.subscribers.push( new YAHOO.util.Subscriber(fn, obj, override) ); + }, + + /** + * Unsubscribes subscribers. + * @method unsubscribe + * @param {Function} fn The subscribed function to remove, if not supplied + * all will be removed + * @param {Object} obj The custom object passed to subscribe. This is + * optional, but if supplied will be used to + * disambiguate multiple listeners that are the same + * (e.g., you subscribe many object using a function + * that lives on the prototype) + * @return {boolean} True if the subscriber was found and detached. + */ + unsubscribe: function(fn, obj) { + + if (!fn) { + return this.unsubscribeAll(); + } + + var found = false; + for (var i=0, len=this.subscribers.length; i + *
  • The type of event
  • + *
  • All of the arguments fire() was executed with as an array
  • + *
  • The custom object (if any) that was passed into the subscribe() + * method
  • + * + * @method fire + * @param {Object*} arguments an arbitrary set of parameters to pass to + * the handler. + * @return {boolean} false if one of the subscribers returned false, + * true otherwise + */ + fire: function() { + + this.lastError = null; + + var errors = [], + len=this.subscribers.length; + + if (!len && this.silent) { + return true; + } + + var args=[].slice.call(arguments, 0), ret=true, i, rebuild=false; + + if (!this.silent) { + } + + // make a copy of the subscribers so that there are + // no index problems if one subscriber removes another. + var subs = this.subscribers.slice(), throwErrors = YAHOO.util.Event.throwErrors; + + for (i=0; i 0) { + param = args[0]; + } + + try { + ret = s.fn.call(scope, param, s.obj); + } catch(e) { + this.lastError = e; + // errors.push(e); + if (throwErrors) { + throw e; + } + } + } else { + try { + ret = s.fn.call(scope, this.type, args, s.obj); + } catch(ex) { + this.lastError = ex; + if (throwErrors) { + throw ex; + } + } + } + + if (false === ret) { + if (!this.silent) { + } + + break; + // return false; + } + } + } + + return (ret !== false); + }, + + /** + * Removes all listeners + * @method unsubscribeAll + * @return {int} The number of listeners unsubscribed + */ + unsubscribeAll: function() { + for (var i=this.subscribers.length-1; i>-1; i--) { + this._delete(i); + } + + this.subscribers=[]; + + return i; + }, + + /** + * @method _delete + * @private + */ + _delete: function(index) { + var s = this.subscribers[index]; + if (s) { + delete s.fn; + delete s.obj; + } + + // this.subscribers[index]=null; + this.subscribers.splice(index, 1); + }, + + /** + * @method toString + */ + toString: function() { + return "CustomEvent: " + "'" + this.type + "', " + + "scope: " + this.scope; + + } +}; + +///////////////////////////////////////////////////////////////////// + +/** + * Stores the subscriber information to be used when the event fires. + * @param {Function} fn The function to execute + * @param {Object} obj An object to be passed along when the event fires + * @param {boolean} override If true, the obj passed in becomes the execution + * scope of the listener + * @class Subscriber + * @constructor + */ +YAHOO.util.Subscriber = function(fn, obj, override) { + + /** + * The callback that will be execute when the event fires + * @property fn + * @type function + */ + this.fn = fn; + + /** + * An optional custom object that will passed to the callback when + * the event fires + * @property obj + * @type object + */ + this.obj = YAHOO.lang.isUndefined(obj) ? null : obj; + + /** + * The default execution scope for the event listener is defined when the + * event is created (usually the object which contains the event). + * By setting override to true, the execution scope becomes the custom + * object passed in by the subscriber. If override is an object, that + * object becomes the scope. + * @property override + * @type boolean|object + */ + this.override = override; + +}; + +/** + * Returns the execution scope for this listener. If override was set to true + * the custom obj will be the scope. If override is an object, that is the + * scope, otherwise the default scope will be used. + * @method getScope + * @param {Object} defaultScope the scope to use if this listener does not + * override it. + */ +YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) { + if (this.override) { + if (this.override === true) { + return this.obj; + } else { + return this.override; + } + } + return defaultScope; +}; + +/** + * Returns true if the fn and obj match this objects properties. + * Used by the unsubscribe method to match the right subscriber. + * + * @method contains + * @param {Function} fn the function to execute + * @param {Object} obj an object to be passed along when the event fires + * @return {boolean} true if the supplied arguments match this + * subscriber's signature. + */ +YAHOO.util.Subscriber.prototype.contains = function(fn, obj) { + if (obj) { + return (this.fn == fn && this.obj == obj); + } else { + return (this.fn == fn); + } +}; + +/** + * @method toString + */ +YAHOO.util.Subscriber.prototype.toString = function() { + return "Subscriber { obj: " + this.obj + + ", override: " + (this.override || "no") + " }"; +}; + +/** + * The Event Utility provides utilities for managing DOM Events and tools + * for building event systems + * + * @module event + * @title Event Utility + * @namespace YAHOO.util + * @requires yahoo + */ + +// The first instance of Event will win if it is loaded more than once. +// @TODO this needs to be changed so that only the state data that needs to +// be preserved is kept, while methods are overwritten/added as needed. +// This means that the module pattern can't be used. +if (!YAHOO.util.Event) { + +/** + * The event utility provides functions to add and remove event listeners, + * event cleansing. It also tries to automatically remove listeners it + * registers during the unload event. + * + * @class Event + * @static + */ + YAHOO.util.Event = function() { + + /** + * True after the onload event has fired + * @property loadComplete + * @type boolean + * @static + * @private + */ + var loadComplete = false; + + /** + * Cache of wrapped listeners + * @property listeners + * @type array + * @static + * @private + */ + var listeners = []; + + /** + * User-defined unload function that will be fired before all events + * are detached + * @property unloadListeners + * @type array + * @static + * @private + */ + var unloadListeners = []; + + /** + * Cache of DOM0 event handlers to work around issues with DOM2 events + * in Safari + * @property legacyEvents + * @static + * @private + */ + var legacyEvents = []; + + /** + * Listener stack for DOM0 events + * @property legacyHandlers + * @static + * @private + */ + var legacyHandlers = []; + + /** + * The number of times to poll after window.onload. This number is + * increased if additional late-bound handlers are requested after + * the page load. + * @property retryCount + * @static + * @private + */ + var retryCount = 0; + + /** + * onAvailable listeners + * @property onAvailStack + * @static + * @private + */ + var onAvailStack = []; + + /** + * Lookup table for legacy events + * @property legacyMap + * @static + * @private + */ + var legacyMap = []; + + /** + * Counter for auto id generation + * @property counter + * @static + * @private + */ + var counter = 0; + + /** + * Normalized keycodes for webkit/safari + * @property webkitKeymap + * @type {int: int} + * @private + * @static + * @final + */ + var webkitKeymap = { + 63232: 38, // up + 63233: 40, // down + 63234: 37, // left + 63235: 39, // right + 63276: 33, // page up + 63277: 34, // page down + 25: 9 // SHIFT-TAB (Safari provides a different key code in + // this case, even though the shiftKey modifier is set) + }; + + // String constants used by the addFocusListener and removeFocusListener methods + var _FOCUS = YAHOO.env.ua.ie ? "focusin" : "focus"; + var _BLUR = YAHOO.env.ua.ie ? "focusout" : "blur"; + + return { + + /** + * The number of times we should look for elements that are not + * in the DOM at the time the event is requested after the document + * has been loaded. The default is 2000@amp;20 ms, so it will poll + * for 40 seconds or until all outstanding handlers are bound + * (whichever comes first). + * @property POLL_RETRYS + * @type int + * @static + * @final + */ + POLL_RETRYS: 2000, + + /** + * The poll interval in milliseconds + * @property POLL_INTERVAL + * @type int + * @static + * @final + */ + POLL_INTERVAL: 20, + + /** + * Element to bind, int constant + * @property EL + * @type int + * @static + * @final + */ + EL: 0, + + /** + * Type of event, int constant + * @property TYPE + * @type int + * @static + * @final + */ + TYPE: 1, + + /** + * Function to execute, int constant + * @property FN + * @type int + * @static + * @final + */ + FN: 2, + + /** + * Function wrapped for scope correction and cleanup, int constant + * @property WFN + * @type int + * @static + * @final + */ + WFN: 3, + + /** + * Object passed in by the user that will be returned as a + * parameter to the callback, int constant. Specific to + * unload listeners + * @property OBJ + * @type int + * @static + * @final + */ + UNLOAD_OBJ: 3, + + /** + * Adjusted scope, either the element we are registering the event + * on or the custom object passed in by the listener, int constant + * @property ADJ_SCOPE + * @type int + * @static + * @final + */ + ADJ_SCOPE: 4, + + /** + * The original obj passed into addListener + * @property OBJ + * @type int + * @static + * @final + */ + OBJ: 5, + + /** + * The original scope parameter passed into addListener + * @property OVERRIDE + * @type int + * @static + * @final + */ + OVERRIDE: 6, + + /** + * The original capture parameter passed into _addListener + * @property CAPTURE + * @type int + * @static + * @final + */ + CAPTURE: 7, + + + /** + * addListener/removeListener can throw errors in unexpected scenarios. + * These errors are suppressed, the method returns false, and this property + * is set + * @property lastError + * @static + * @type Error + */ + lastError: null, + + /** + * Safari detection + * @property isSafari + * @private + * @static + * @deprecated use YAHOO.env.ua.webkit + */ + isSafari: YAHOO.env.ua.webkit, + + /** + * webkit version + * @property webkit + * @type string + * @private + * @static + * @deprecated use YAHOO.env.ua.webkit + */ + webkit: YAHOO.env.ua.webkit, + + /** + * IE detection + * @property isIE + * @private + * @static + * @deprecated use YAHOO.env.ua.ie + */ + isIE: YAHOO.env.ua.ie, + + /** + * poll handle + * @property _interval + * @static + * @private + */ + _interval: null, + + /** + * document readystate poll handle + * @property _dri + * @static + * @private + */ + _dri: null, + + /** + * True when the document is initially usable + * @property DOMReady + * @type boolean + * @static + */ + DOMReady: false, + + /** + * Errors thrown by subscribers of custom events are caught + * and the error message is written to the debug console. If + * this property is set to true, it will also re-throw the + * error. + * @property throwErrors + * @type boolean + * @default false + */ + throwErrors: false, + + /** + * @method startInterval + * @static + * @private + */ + startInterval: function() { + if (!this._interval) { + var self = this; + var callback = function() { self._tryPreloadAttach(); }; + this._interval = setInterval(callback, this.POLL_INTERVAL); + } + }, + + /** + * Executes the supplied callback when the item with the supplied + * id is found. This is meant to be used to execute behavior as + * soon as possible as the page loads. If you use this after the + * initial page load it will poll for a fixed time for the element. + * The number of times it will poll and the frequency are + * configurable. By default it will poll for 10 seconds. + * + *

    The callback is executed with a single parameter: + * the custom object parameter, if provided.

    + * + * @method onAvailable + * + * @param {string||string[]} p_id the id of the element, or an array + * of ids to look for. + * @param {function} p_fn what to execute when the element is found. + * @param {object} p_obj an optional object to be passed back as + * a parameter to p_fn. + * @param {boolean|object} p_override If set to true, p_fn will execute + * in the scope of p_obj, if set to an object it + * will execute in the scope of that object + * @param checkContent {boolean} check child node readiness (onContentReady) + * @static + */ + onAvailable: function(p_id, p_fn, p_obj, p_override, checkContent) { + + var a = (YAHOO.lang.isString(p_id)) ? [p_id] : p_id; + + for (var i=0; iThe callback is executed with a single parameter: + * the custom object parameter, if provided.

    + * + * @method onContentReady + * + * @param {string} p_id the id of the element to look for. + * @param {function} p_fn what to execute when the element is ready. + * @param {object} p_obj an optional object to be passed back as + * a parameter to p_fn. + * @param {boolean|object} p_override If set to true, p_fn will execute + * in the scope of p_obj. If an object, p_fn will + * exectute in the scope of that object + * + * @static + */ + onContentReady: function(p_id, p_fn, p_obj, p_override) { + this.onAvailable(p_id, p_fn, p_obj, p_override, true); + }, + + /** + * Executes the supplied callback when the DOM is first usable. This + * will execute immediately if called after the DOMReady event has + * fired. @todo the DOMContentReady event does not fire when the + * script is dynamically injected into the page. This means the + * DOMReady custom event will never fire in FireFox or Opera when the + * library is injected. It _will_ fire in Safari, and the IE + * implementation would allow for us to fire it if the defered script + * is not available. We want this to behave the same in all browsers. + * Is there a way to identify when the script has been injected + * instead of included inline? Is there a way to know whether the + * window onload event has fired without having had a listener attached + * to it when it did so? + * + *

    The callback is a CustomEvent, so the signature is:

    + *

    type <string>, args <array>, customobject <object>

    + *

    For DOMReady events, there are no fire argments, so the + * signature is:

    + *

    "DOMReady", [], obj

    + * + * + * @method onDOMReady + * + * @param {function} p_fn what to execute when the element is found. + * @param {object} p_obj an optional object to be passed back as + * a parameter to p_fn. + * @param {boolean|object} p_scope If set to true, p_fn will execute + * in the scope of p_obj, if set to an object it + * will execute in the scope of that object + * + * @static + */ + onDOMReady: function(p_fn, p_obj, p_override) { + if (this.DOMReady) { + setTimeout(function() { + var s = window; + if (p_override) { + if (p_override === true) { + s = p_obj; + } else { + s = p_override; + } + } + p_fn.call(s, "DOMReady", [], p_obj); + }, 0); + } else { + this.DOMReadyEvent.subscribe(p_fn, p_obj, p_override); + } + }, + + + /** + * Appends an event handler + * + * @method _addListener + * + * @param {String|HTMLElement|Array|NodeList} el An id, an element + * reference, or a collection of ids and/or elements to assign the + * listener to. + * @param {String} sType The type of event to append + * @param {Function} fn The method the event invokes + * @param {Object} obj An arbitrary object that will be + * passed as a parameter to the handler + * @param {Boolean|object} override If true, the obj passed in becomes + * the execution scope of the listener. If an + * object, this object becomes the execution + * scope. + * @param {boolen} capture capture or bubble phase + * @return {Boolean} True if the action was successful or defered, + * false if one or more of the elements + * could not have the listener attached, + * or if the operation throws an exception. + * @private + * @static + */ + _addListener: function(el, sType, fn, obj, override, capture) { + + if (!fn || !fn.call) { + return false; + } + + // The el argument can be an array of elements or element ids. + if ( this._isValidCollection(el)) { + var ok = true; + for (var i=0,len=el.length; i-1; i--) { + ok = ( this._removeListener(el[i], sType, fn, capture) && ok ); + } + return ok; + } + + if (!fn || !fn.call) { + //return false; + return this.purgeElement(el, false, sType); + } + + if ("unload" == sType) { + + for (i=unloadListeners.length-1; i>-1; i--) { + li = unloadListeners[i]; + if (li && + li[0] == el && + li[1] == sType && + li[2] == fn) { + unloadListeners.splice(i, 1); + // unloadListeners[i]=null; + return true; + } + } + + return false; + } + + var cacheItem = null; + + // The index is a hidden parameter; needed to remove it from + // the method signature because it was tempting users to + // try and take advantage of it, which is not possible. + var index = arguments[4]; + + if ("undefined" === typeof index) { + index = this._getCacheIndex(el, sType, fn); + } + + if (index >= 0) { + cacheItem = listeners[index]; + } + + if (!el || !cacheItem) { + return false; + } + + + if (this.useLegacyEvent(el, sType)) { + var legacyIndex = this.getLegacyIndex(el, sType); + var llist = legacyHandlers[legacyIndex]; + if (llist) { + for (i=0, len=llist.length; i 0 && onAvailStack.length > 0); + } + + // onAvailable + var notAvail = []; + + var executeItem = function (el, item) { + var scope = el; + if (item.override) { + if (item.override === true) { + scope = item.obj; + } else { + scope = item.override; + } + } + item.fn.call(scope, item.obj); + }; + + var i, len, item, el, ready=[]; + + // onAvailable onContentReady + for (i=0, len=onAvailStack.length; i-1; i--) { + item = onAvailStack[i]; + if (!item || !item.id) { + onAvailStack.splice(i, 1); + } + } + + this.startInterval(); + } else { + clearInterval(this._interval); + this._interval = null; + } + + this.locked = false; + + }, + + /** + * Removes all listeners attached to the given element via addListener. + * Optionally, the node's children can also be purged. + * Optionally, you can specify a specific type of event to remove. + * @method purgeElement + * @param {HTMLElement} el the element to purge + * @param {boolean} recurse recursively purge this element's children + * as well. Use with caution. + * @param {string} sType optional type of listener to purge. If + * left out, all listeners will be removed + * @static + */ + purgeElement: function(el, recurse, sType) { + var oEl = (YAHOO.lang.isString(el)) ? this.getEl(el) : el; + var elListeners = this.getListeners(oEl, sType), i, len; + if (elListeners) { + for (i=elListeners.length-1; i>-1; i--) { + var l = elListeners[i]; + this._removeListener(oEl, l.type, l.fn, l.capture); + } + } + + if (recurse && oEl && oEl.childNodes) { + for (i=0,len=oEl.childNodes.length; i 0) { + + // 2.5.0 listeners are removed for all browsers again. FireFox preserves + // at least some listeners between page refreshes, potentially causing + // errors during page load (mouseover listeners firing before they + // should if the user moves the mouse at the correct moment). + if (listeners) { + for (j=listeners.length-1; j>-1; j--) { + l = listeners[j]; + if (l) { + EU._removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], l[EU.CAPTURE], j); + } + } + l=null; + } + + legacyEvents = null; + + EU._simpleRemove(window, "unload", EU._unload); + + }, + + /** + * Returns scrollLeft + * @method _getScrollLeft + * @static + * @private + */ + _getScrollLeft: function() { + return this._getScroll()[1]; + }, + + /** + * Returns scrollTop + * @method _getScrollTop + * @static + * @private + */ + _getScrollTop: function() { + return this._getScroll()[0]; + }, + + /** + * Returns the scrollTop and scrollLeft. Used to calculate the + * pageX and pageY in Internet Explorer + * @method _getScroll + * @static + * @private + */ + _getScroll: function() { + var dd = document.documentElement, db = document.body; + if (dd && (dd.scrollTop || dd.scrollLeft)) { + return [dd.scrollTop, dd.scrollLeft]; + } else if (db) { + return [db.scrollTop, db.scrollLeft]; + } else { + return [0, 0]; + } + }, + + /** + * Used by old versions of CustomEvent, restored for backwards + * compatibility + * @method regCE + * @private + * @static + * @deprecated still here for backwards compatibility + */ + regCE: function() { + // does nothing + }, + + /** + * Adds a DOM event directly without the caching, cleanup, scope adj, etc + * + * @method _simpleAdd + * @param {HTMLElement} el the element to bind the handler to + * @param {string} sType the type of event handler + * @param {function} fn the callback to invoke + * @param {boolen} capture capture or bubble phase + * @static + * @private + */ + _simpleAdd: function () { + if (window.addEventListener) { + return function(el, sType, fn, capture) { + el.addEventListener(sType, fn, (capture)); + }; + } else if (window.attachEvent) { + return function(el, sType, fn, capture) { + el.attachEvent("on" + sType, fn); + }; + } else { + return function(){}; + } + }(), + + /** + * Basic remove listener + * + * @method _simpleRemove + * @param {HTMLElement} el the element to bind the handler to + * @param {string} sType the type of event handler + * @param {function} fn the callback to invoke + * @param {boolen} capture capture or bubble phase + * @static + * @private + */ + _simpleRemove: function() { + if (window.removeEventListener) { + return function (el, sType, fn, capture) { + el.removeEventListener(sType, fn, (capture)); + }; + } else if (window.detachEvent) { + return function (el, sType, fn) { + el.detachEvent("on" + sType, fn); + }; + } else { + return function(){}; + } + }() + }; + + }(); + + (function() { + var EU = YAHOO.util.Event; + + /** + * YAHOO.util.Event.on is an alias for addListener + * @method on + * @see addListener + * @static + */ + EU.on = EU.addListener; + + /** + * YAHOO.util.Event.onFocus is an alias for addFocusListener + * @method on + * @see addFocusListener + * @static + */ + EU.onFocus = EU.addFocusListener; + + /** + * YAHOO.util.Event.onBlur is an alias for addBlurListener + * @method onBlur + * @see addBlurListener + * @static + */ + EU.onBlur = EU.addBlurListener; + + +/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */ + + // Internet Explorer: use the readyState of a defered script. + // This isolates what appears to be a safe moment to manipulate + // the DOM prior to when the document's readyState suggests + // it is safe to do so. + if (EU.isIE) { + + // Process onAvailable/onContentReady items when the + // DOM is ready. + YAHOO.util.Event.onDOMReady( + YAHOO.util.Event._tryPreloadAttach, + YAHOO.util.Event, true); + + var n = document.createElement('p'); + + EU._dri = setInterval(function() { + try { + // throws an error if doc is not ready + n.doScroll('left'); + clearInterval(EU._dri); + EU._dri = null; + EU._ready(); + n = null; + } catch (ex) { + } + }, EU.POLL_INTERVAL); + + + // The document's readyState in Safari currently will + // change to loaded/complete before images are loaded. + } else if (EU.webkit && EU.webkit < 525) { + + EU._dri = setInterval(function() { + var rs=document.readyState; + if ("loaded" == rs || "complete" == rs) { + clearInterval(EU._dri); + EU._dri = null; + EU._ready(); + } + }, EU.POLL_INTERVAL); + + // FireFox and Opera: These browsers provide a event for this + // moment. The latest WebKit releases now support this event. + } else { + + EU._simpleAdd(document, "DOMContentLoaded", EU._ready); + + } + ///////////////////////////////////////////////////////////// + + + EU._simpleAdd(window, "load", EU._load); + EU._simpleAdd(window, "unload", EU._unload); + EU._tryPreloadAttach(); + })(); + +} +/** + * EventProvider is designed to be used with YAHOO.augment to wrap + * CustomEvents in an interface that allows events to be subscribed to + * and fired by name. This makes it possible for implementing code to + * subscribe to an event that either has not been created yet, or will + * not be created at all. + * + * @Class EventProvider + */ +YAHOO.util.EventProvider = function() { }; + +YAHOO.util.EventProvider.prototype = { + + /** + * Private storage of custom events + * @property __yui_events + * @type Object[] + * @private + */ + __yui_events: null, + + /** + * Private storage of custom event subscribers + * @property __yui_subscribers + * @type Object[] + * @private + */ + __yui_subscribers: null, + + /** + * Subscribe to a CustomEvent by event type + * + * @method subscribe + * @param p_type {string} the type, or name of the event + * @param p_fn {function} the function to exectute when the event fires + * @param p_obj {Object} An object to be passed along when the event + * fires + * @param p_override {boolean} If true, the obj passed in becomes the + * execution scope of the listener + */ + subscribe: function(p_type, p_fn, p_obj, p_override) { + + this.__yui_events = this.__yui_events || {}; + var ce = this.__yui_events[p_type]; + + if (ce) { + ce.subscribe(p_fn, p_obj, p_override); + } else { + this.__yui_subscribers = this.__yui_subscribers || {}; + var subs = this.__yui_subscribers; + if (!subs[p_type]) { + subs[p_type] = []; + } + subs[p_type].push( + { fn: p_fn, obj: p_obj, override: p_override } ); + } + }, + + /** + * Unsubscribes one or more listeners the from the specified event + * @method unsubscribe + * @param p_type {string} The type, or name of the event. If the type + * is not specified, it will attempt to remove + * the listener from all hosted events. + * @param p_fn {Function} The subscribed function to unsubscribe, if not + * supplied, all subscribers will be removed. + * @param p_obj {Object} The custom object passed to subscribe. This is + * optional, but if supplied will be used to + * disambiguate multiple listeners that are the same + * (e.g., you subscribe many object using a function + * that lives on the prototype) + * @return {boolean} true if the subscriber was found and detached. + */ + unsubscribe: function(p_type, p_fn, p_obj) { + this.__yui_events = this.__yui_events || {}; + var evts = this.__yui_events; + if (p_type) { + var ce = evts[p_type]; + if (ce) { + return ce.unsubscribe(p_fn, p_obj); + } + } else { + var ret = true; + for (var i in evts) { + if (YAHOO.lang.hasOwnProperty(evts, i)) { + ret = ret && evts[i].unsubscribe(p_fn, p_obj); + } + } + return ret; + } + + return false; + }, + + /** + * Removes all listeners from the specified event. If the event type + * is not specified, all listeners from all hosted custom events will + * be removed. + * @method unsubscribeAll + * @param p_type {string} The type, or name of the event + */ + unsubscribeAll: function(p_type) { + return this.unsubscribe(p_type); + }, + + /** + * Creates a new custom event of the specified type. If a custom event + * by that name already exists, it will not be re-created. In either + * case the custom event is returned. + * + * @method createEvent + * + * @param p_type {string} the type, or name of the event + * @param p_config {object} optional config params. Valid properties are: + * + *
      + *
    • + * scope: defines the default execution scope. If not defined + * the default scope will be this instance. + *
    • + *
    • + * silent: if true, the custom event will not generate log messages. + * This is false by default. + *
    • + *
    • + * onSubscribeCallback: specifies a callback to execute when the + * event has a new subscriber. This will fire immediately for + * each queued subscriber if any exist prior to the creation of + * the event. + *
    • + *
    + * + * @return {CustomEvent} the custom event + * + */ + createEvent: function(p_type, p_config) { + + this.__yui_events = this.__yui_events || {}; + var opts = p_config || {}; + var events = this.__yui_events; + + if (events[p_type]) { + } else { + + var scope = opts.scope || this; + var silent = (opts.silent); + + var ce = new YAHOO.util.CustomEvent(p_type, scope, silent, + YAHOO.util.CustomEvent.FLAT); + events[p_type] = ce; + + if (opts.onSubscribeCallback) { + ce.subscribeEvent.subscribe(opts.onSubscribeCallback); + } + + this.__yui_subscribers = this.__yui_subscribers || {}; + var qs = this.__yui_subscribers[p_type]; + + if (qs) { + for (var i=0; i + *
  • The first argument fire() was executed with
  • + *
  • The custom object (if any) that was passed into the subscribe() + * method
  • + * + * @method fireEvent + * @param p_type {string} the type, or name of the event + * @param arguments {Object*} an arbitrary set of parameters to pass to + * the handler. + * @return {boolean} the return value from CustomEvent.fire + * + */ + fireEvent: function(p_type, arg1, arg2, etc) { + + this.__yui_events = this.__yui_events || {}; + var ce = this.__yui_events[p_type]; + + if (!ce) { + return null; + } + + var args = []; + for (var i=1; i= 0; --i) { + if (pstack[i] === o) { + return 'null'; + } + } + + // Add the object to the processing stack + pstack[pstack.length] = o; + + a = []; + isArray = l.isArray(o); + + // Only recurse if we're above depth config + if (d > 0) { + // Array + if (isArray) { + for (i = o.length - 1; i >= 0; --i) { + a[i] = _stringify(o,i,d-1,w,pstack) || 'null'; + } + + // Object + } else { + j = 0; + // Use whitelist keys if provided as an array + if (l.isArray(w)) { + for (i = 0, len = w.length; i < len; ++i) { + k = w[i]; + v = _stringify(o,k,d-1,w,pstack); + if (v) { + a[j++] = _string(k) + ':' + v; + } + } + } else { + for (k in o) { + if (typeof k === 'string' && l.hasOwnProperty(o,k)) { + v = _stringify(o,k,d-1,w,pstack); + if (v) { + a[j++] = _string(k) + ':' + v; + } + } + } + } + + // sort object keys for easier readability + a.sort(); + } + } + + // remove the object from the stack + pstack.pop(); + + return isArray ? '['+a.join(',')+']' : '{'+a.join(',')+'}'; + } + + return undefined; // invalid input +} + +// Return the public API +return { + /** + * Four step determination whether a string is valid JSON. In three steps, + * escape sequences, safe values, and properly placed open square brackets + * are replaced with placeholders or removed. Then in the final step, the + * result of all these replacements is checked for invalid characters. + * @method isValid + * @param str {String} JSON string to be tested + * @return {boolean} is the string safe for eval? + * @static + */ + isValid : function (s) { + return _isValid(_prepare(s)); + }, + + /** + * Parse a JSON string, returning the native JavaScript representation. + * Only minor modifications from http://www.json.org/json2.js. + * @param s {string} JSON string data + * @param reviver {function} (optional) function(k,v) passed each key:value + * pair of object literals, allowing pruning or altering values + * @return {MIXED} the native JavaScript representation of the JSON string + * @throws SyntaxError + * @method parse + * @static + */ + parse : function (s,reviver) { + // sanitize + s = _prepare(s); + + // Ensure valid JSON + if (_isValid(s)) { + // Eval the text into a JavaScript data structure, apply the + // reviver function if provided, and return + return _revive( eval('(' + s + ')'), reviver ); + } + + // The text is not valid JSON + throw new SyntaxError('parseJSON'); + }, + + /** + * Converts an arbitrary value to a JSON string representation. + * Cyclical object or array references are replaced with null. + * If a whitelist is provided, only matching object keys will be included. + * If a depth limit is provided, objects and arrays at that depth will + * be stringified as empty. + * @method stringify + * @param o {MIXED} any arbitrary object to convert to JSON string + * @param w {Array|Function} (optional) whitelist of acceptable object keys to include OR a function(value,key) to alter values before serialization + * @param d {number} (optional) depth limit to recurse objects/arrays (practical minimum 1) + * @return {string} JSON string representation of the input + * @static + */ + stringify : function (o,w,d) { + if (o !== undefined) { + // Ensure whitelist keys are unique (bug 2110391) + if (l.isArray(w)) { + w = (function (a) { + var uniq=[],map={},v,i,j,len; + for (i=0,j=0,len=a.length; i= 0 ? d : 1/0; + + // process the input + return _stringify({'':o},'',d,w,[]); + } + + return undefined; + }, + + /** + * Serializes a Date instance as a UTC date string. Used internally by + * stringify. Override this method if you need Dates serialized in a + * different format. + * @method dateToString + * @param d {Date} The Date to serialize + * @return {String} stringified Date in UTC format YYYY-MM-DDTHH:mm:SSZ + * @static + */ + dateToString : function (d) { + function _zeroPad(v) { + return v < 10 ? '0' + v : v; + } + + return d.getUTCFullYear() + '-' + + _zeroPad(d.getUTCMonth() + 1) + '-' + + _zeroPad(d.getUTCDate()) + 'T' + + _zeroPad(d.getUTCHours()) + ':' + + _zeroPad(d.getUTCMinutes()) + ':' + + _zeroPad(d.getUTCSeconds()) + 'Z'; + }, + + /** + * Reconstitute Date instances from the default JSON UTC serialization. + * Reference this from a reviver function to rebuild Dates during the + * parse operation. + * @method stringToDate + * @param str {String} String serialization of a Date + * @return {Date} + */ + stringToDate : function (str) { + if (/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.test(str)) { + var d = new Date(); + d.setUTCFullYear(RegExp.$1, (RegExp.$2|0)-1, RegExp.$3); + d.setUTCHours(RegExp.$4, RegExp.$5, RegExp.$6); + return d; + } + return str; + } +}; + +})(); +YAHOO.register("json", YAHOO.lang.JSON, {version: "2.6.0", build: "1321"}); diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/yahoo/yahoo.js b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/yahoo/yahoo.js new file mode 100644 index 0000000..92ba865 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaClient JS/yui/build/yahoo/yahoo.js @@ -0,0 +1,986 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +/** + * The YAHOO object is the single global object used by YUI Library. It + * contains utility function for setting up namespaces, inheritance, and + * logging. YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces + * created automatically for and used by the library. + * @module yahoo + * @title YAHOO Global + */ + +/** + * YAHOO_config is not included as part of the library. Instead it is an + * object that can be defined by the implementer immediately before + * including the YUI library. The properties included in this object + * will be used to configure global properties needed as soon as the + * library begins to load. + * @class YAHOO_config + * @static + */ + +/** + * A reference to a function that will be executed every time a YAHOO module + * is loaded. As parameter, this function will receive the version + * information for the module. See + * YAHOO.env.getVersion for the description of the version data structure. + * @property listener + * @type Function + * @static + * @default undefined + */ + +/** + * Set to true if the library will be dynamically loaded after window.onload. + * Defaults to false + * @property injecting + * @type boolean + * @static + * @default undefined + */ + +/** + * Instructs the yuiloader component to dynamically load yui components and + * their dependencies. See the yuiloader documentation for more information + * about dynamic loading + * @property load + * @static + * @default undefined + * @see yuiloader + */ + +/** + * Forces the use of the supplied locale where applicable in the library + * @property locale + * @type string + * @static + * @default undefined + */ + +if (typeof YAHOO == "undefined" || !YAHOO) { + /** + * The YAHOO global namespace object. If YAHOO is already defined, the + * existing YAHOO object will not be overwritten so that defined + * namespaces are preserved. + * @class YAHOO + * @static + */ + var YAHOO = {}; +} + +/** + * Returns the namespace specified and creates it if it doesn't exist + *
    + * YAHOO.namespace("property.package");
    + * YAHOO.namespace("YAHOO.property.package");
    + * 
    + * Either of the above would create YAHOO.property, then + * YAHOO.property.package + * + * Be careful when naming packages. Reserved words may work in some browsers + * and not others. For instance, the following will fail in Safari: + *
    + * YAHOO.namespace("really.long.nested.namespace");
    + * 
    + * This fails because "long" is a future reserved word in ECMAScript + * + * @method namespace + * @static + * @param {String*} arguments 1-n namespaces to create + * @return {Object} A reference to the last namespace object created + */ +YAHOO.namespace = function() { + var a=arguments, o=null, i, j, d; + for (i=0; i + *
    name:
    The name of the module
    + *
    version:
    The version in use
    + *
    build:
    The build number in use
    + *
    versions:
    All versions that were registered
    + *
    builds:
    All builds that were registered.
    + *
    mainClass:
    An object that was was stamped with the + * current version and build. If + * mainClass.VERSION != version or mainClass.BUILD != build, + * multiple versions of pieces of the library have been + * loaded, potentially causing issues.
    + * + * + * @method getVersion + * @static + * @param {String} name the name of the module (event, slider, etc) + * @return {Object} The version info + */ +YAHOO.env.getVersion = function(name) { + return YAHOO.env.modules[name] || null; +}; + +/** + * Do not fork for a browser if it can be avoided. Use feature detection when + * you can. Use the user agent as a last resort. YAHOO.env.ua stores a version + * number for the browser engine, 0 otherwise. This value may or may not map + * to the version number of the browser using the engine. The value is + * presented as a float so that it can easily be used for boolean evaluation + * as well as for looking for a particular range of versions. Because of this, + * some of the granularity of the version info may be lost (e.g., Gecko 1.8.0.9 + * reports 1.8). + * @class YAHOO.env.ua + * @static + */ +YAHOO.env.ua = function() { + var o={ + + /** + * Internet Explorer version number or 0. Example: 6 + * @property ie + * @type float + */ + ie:0, + + /** + * Opera version number or 0. Example: 9.2 + * @property opera + * @type float + */ + opera:0, + + /** + * Gecko engine revision number. Will evaluate to 1 if Gecko + * is detected but the revision could not be found. Other browsers + * will be 0. Example: 1.8 + *
    +         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
    +         * Firefox 1.5.0.9: 1.8.0.9 <-- Reports 1.8
    +         * Firefox 2.0.0.3: 1.8.1.3 <-- Reports 1.8
    +         * Firefox 3 alpha: 1.9a4   <-- Reports 1.9
    +         * 
    + * @property gecko + * @type float + */ + gecko:0, + + /** + * AppleWebKit version. KHTML browsers that are not WebKit browsers + * will evaluate to 1, other browsers 0. Example: 418.9.1 + *
    +         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the 
    +         *                                   latest available for Mac OSX 10.3.
    +         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
    +         * Safari 2.0.4:         418     <-- preventDefault fixed
    +         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
    +         *                                   different versions of webkit
    +         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
    +         *                                   updated, but not updated
    +         *                                   to the latest patch.
    +         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native SVG
    +         *                                   and many major issues fixed).  
    +         * 3.x yahoo.com, flickr:422     <-- Safari 3.x hacks the user agent
    +         *                                   string when hitting yahoo.com and 
    +         *                                   flickr.com.
    +         * Safari 3.0.4 (523.12):523.12  <-- First Tiger release - automatic update
    +         *                                   from 2.x via the 10.4.11 OS patch
    +         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
    +         *                                   yahoo.com user agent hack removed.
    +         *                                   
    +         * 
    + * http://developer.apple.com/internet/safari/uamatrix.html + * @property webkit + * @type float + */ + webkit: 0, + + /** + * The mobile property will be set to a string containing any relevant + * user agent information when a modern mobile browser is detected. + * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series + * devices with the WebKit-based browser, and Opera Mini. + * @property mobile + * @type string + */ + mobile: null, + + /** + * Adobe AIR version number or 0. Only populated if webkit is detected. + * Example: 1.0 + * @property air + * @type float + */ + air: 0 + + }; + + var ua=navigator.userAgent, m; + + // Modern KHTML browsers should qualify as Safari X-Grade + if ((/KHTML/).test(ua)) { + o.webkit=1; + } + // Modern WebKit browsers are at least X-Grade + m=ua.match(/AppleWebKit\/([^\s]*)/); + if (m&&m[1]) { + o.webkit=parseFloat(m[1]); + + // Mobile browser check + if (/ Mobile\//.test(ua)) { + o.mobile = "Apple"; // iPhone or iPod Touch + } else { + m=ua.match(/NokiaN[^\/]*/); + if (m) { + o.mobile = m[0]; // Nokia N-series, ex: NokiaN95 + } + } + + m=ua.match(/AdobeAIR\/([^\s]*)/); + if (m) { + o.air = m[0]; // Adobe AIR 1.0 or better + } + + } + + if (!o.webkit) { // not webkit + // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) + m=ua.match(/Opera[\s\/]([^\s]*)/); + if (m&&m[1]) { + o.opera=parseFloat(m[1]); + m=ua.match(/Opera Mini[^;]*/); + if (m) { + o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316 + } + } else { // not opera or webkit + m=ua.match(/MSIE\s([^;]*)/); + if (m&&m[1]) { + o.ie=parseFloat(m[1]); + } else { // not opera, webkit, or ie + m=ua.match(/Gecko\/([^\s]*)/); + if (m) { + o.gecko=1; // Gecko detected, look for revision + m=ua.match(/rv:([^\s\)]*)/); + if (m&&m[1]) { + o.gecko=parseFloat(m[1]); + } + } + } + } + } + + return o; +}(); + +/* + * Initializes the global by creating the default namespaces and applying + * any new configuration information that is detected. This is the setup + * for env. + * @method init + * @static + * @private + */ +(function() { + YAHOO.namespace("util", "widget", "example"); + if ("undefined" !== typeof YAHOO_config) { + var l=YAHOO_config.listener,ls=YAHOO.env.listeners,unique=true,i; + if (l) { + // if YAHOO is loaded multiple times we need to check to see if + // this is a new config object. If it is, add the new component + // load listener to the stack + for (i=0;i 0) ? L.dump(o[i], d-1) : OBJ); + } else { + s.push(o[i]); + } + s.push(COMMA); + } + if (s.length > 1) { + s.pop(); + } + s.push("]"); + // objects {k1 => v1, k2 => v2} + } else { + s.push("{"); + for (i in o) { + if (L.hasOwnProperty(o, i)) { + s.push(i + ARROW); + if (L.isObject(o[i])) { + s.push((d > 0) ? L.dump(o[i], d-1) : OBJ); + } else { + s.push(o[i]); + } + s.push(COMMA); + } + } + if (s.length > 1) { + s.pop(); + } + s.push("}"); + } + + return s.join(""); + }, + + /** + * Does variable substitution on a string. It scans through the string + * looking for expressions enclosed in { } braces. If an expression + * is found, it is used a key on the object. If there is a space in + * the key, the first word is used for the key and the rest is provided + * to an optional function to be used to programatically determine the + * value (the extra information might be used for this decision). If + * the value for the key in the object, or what is returned from the + * function has a string value, number value, or object value, it is + * substituted for the bracket expression and it repeats. If this + * value is an object, it uses the Object's toString() if this has + * been overridden, otherwise it does a shallow dump of the key/value + * pairs. + * @method substitute + * @since 2.3.0 + * @param s {String} The string that will be modified. + * @param o {Object} An object containing the replacement values + * @param f {Function} An optional function that can be used to + * process each match. It receives the key, + * value, and any extra metadata included with + * the key inside of the braces. + * @return {String} the substituted string + */ + substitute: function (s, o, f) { + var i, j, k, key, v, meta, saved=[], token, + DUMP='dump', SPACE=' ', LBRACE='{', RBRACE='}'; + + + for (;;) { + i = s.lastIndexOf(LBRACE); + if (i < 0) { + break; + } + j = s.indexOf(RBRACE, i); + if (i + 1 >= j) { + break; + } + + //Extract key and meta info + token = s.substring(i + 1, j); + key = token; + meta = null; + k = key.indexOf(SPACE); + if (k > -1) { + meta = key.substring(k + 1); + key = key.substring(0, k); + } + + // lookup the value + v = o[key]; + + // if a substitution function was provided, execute it + if (f) { + v = f(key, v, meta); + } + + if (L.isObject(v)) { + if (L.isArray(v)) { + v = L.dump(v, parseInt(meta, 10)); + } else { + meta = meta || ""; + + // look for the keyword 'dump', if found force obj dump + var dump = meta.indexOf(DUMP); + if (dump > -1) { + meta = meta.substring(4); + } + + // use the toString if it is not the Object toString + // and the 'dump' meta info was not found + if (v.toString===Object.prototype.toString||dump>-1) { + v = L.dump(v, parseInt(meta, 10)); + } else { + v = v.toString(); + } + } + } else if (!L.isString(v) && !L.isNumber(v)) { + // This {block} has no replace string. Save it for later. + v = "~-" + saved.length + "-~"; + saved[saved.length] = token; + + // break; + } + + s = s.substring(0, i) + v + s.substring(j + 1); + + + } + + // restore saved {block}s + for (i=saved.length-1; i>=0; i=i-1) { + s = s.replace(new RegExp("~-" + i + "-~"), "{" + saved[i] + "}", "g"); + } + + return s; + }, + + + /** + * Returns a string without any leading or trailing whitespace. If + * the input is not a string, the input will be returned untouched. + * @method trim + * @since 2.3.0 + * @param s {string} the string to trim + * @return {string} the trimmed string + */ + trim: function(s){ + try { + return s.replace(/^\s+|\s+$/g, ""); + } catch(e) { + return s; + } + }, + + /** + * Returns a new object containing all of the properties of + * all the supplied objects. The properties from later objects + * will overwrite those in earlier objects. + * @method merge + * @since 2.3.0 + * @param arguments {Object*} the objects to merge + * @return the new merged object + */ + merge: function() { + var o={}, a=arguments; + for (var i=0, l=a.length; i + * var A = function() {}; + * A.prototype.foo = 'foo'; + * var a = new A(); + * a.foo = 'foo'; + * alert(a.hasOwnProperty('foo')); // true + * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using fallback + * + * @method hasOwnProperty + * @param {any} o The object being testing + * @param prop {string} the name of the property to test + * @return {boolean} the result + */ +L.hasOwnProperty = (Object.prototype.hasOwnProperty) ? + function(o, prop) { + return o && o.hasOwnProperty(prop); + } : function(o, prop) { + return !L.isUndefined(o[prop]) && + o.constructor.prototype[prop] !== o[prop]; + }; + +// new lang wins +OB.augmentObject(L, OB, true); + +/* + * An alias for YAHOO.lang + * @class YAHOO.util.Lang + */ +YAHOO.util.Lang = L; + +/** + * Same as YAHOO.lang.augmentObject, except it only applies prototype + * properties. This is an alias for augmentProto. + * @see YAHOO.lang.augmentObject + * @method augment + * @static + * @param {Function} r the object to receive the augmentation + * @param {Function} s the object that supplies the properties to augment + * @param {String*|boolean} arguments zero or more properties methods to + * augment the receiver with. If none specified, everything + * in the supplier will be used unless it would + * overwrite an existing property in the receiver. if true + * is specified as the third parameter, all properties will + * be applied and will overwrite an existing property in + * the receiver + */ +L.augment = L.augmentProto; + +/** + * An alias for YAHOO.lang.augment + * @for YAHOO + * @method augment + * @static + * @param {Function} r the object to receive the augmentation + * @param {Function} s the object that supplies the properties to augment + * @param {String*} arguments zero or more properties methods to + * augment the receiver with. If none specified, everything + * in the supplier will be used unless it would + * overwrite an existing property in the receiver + */ +YAHOO.augment = L.augmentProto; + +/** + * An alias for YAHOO.lang.extend + * @method extend + * @static + * @param {Function} subc the object to modify + * @param {Function} superc the object to inherit + * @param {Object} overrides additional properties/methods to add to the + * subclass prototype. These will override the + * matching items obtained from the superclass if present. + */ +YAHOO.extend = L.extend; + +})(); +YAHOO.register("yahoo", YAHOO, {version: "2.6.0", build: "1321"}); diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.Sample.html new file mode 100644 index 0000000..5dd02c7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.Sample.html @@ -0,0 +1,61 @@ + + + + + + + + + +

    + MegaDemo Sample +

    + +

    Purpose

    + +

    This comprehensive example illustrates many of the features of theRemObjects SDK by providing benchmark facilities for the various protocols and channels supported.

    + +

    The following are included: +

      +
    • message types
    • +
        +
      • TROBINMessage
      • +
      • TROSOAPMessage
      • +
      • TROPostMessage
      • +
      • TROServerMultiMessage
      • +
      +
    • transport channels
    • +
        +
      • TROWinMessageChannel
      • +
      • TROWinInetHTTPChannel
      • +
      • TROIndyHTTPChannel
      • +
      • TROIndyTCPChannel
      • +
      +
    • message encrypting and compression
    • +
    +

    +The tests you can perform are very comprehensive. In particular, try the Stress Test which runs all the tests once or many times. +

    . + +

    You can also specify how much information is displayed about the test results by using Write Test Info,Verbose and Enable Log.

    + +

    Examine the Code

    +
      +
    • See how the Twelve methods were defined by editing the service library. + Do this by making the server the selected project and + by using the menu option: RemObjects | Edit Service Library. + Note: if you don't see this menu option but see 'Service Builder' instead, + you still have the client set as the current project. + Examine the methods added to MegaDemoService.
    • +
    • + Check how the server methods were implemented in + MegaDemoService_Impl.pas. +
    • +
    • + Examine the simple code needed to invoke the methods in + MegaDemoClientMain.pas. +
    • +
    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bdsgroup new file mode 100644 index 0000000..6721b5e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bdsgroup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + MegaDemoServer.bdsproj + MegaDemoClient.bdsproj + MegaDemoISAPI.bdsproj + MegaDemoServer.exe MegaDemoClient.exe MegaDemoISAPI.dll + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bpg new file mode 100644 index 0000000..d41db19 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.bpg @@ -0,0 +1,26 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MegaDemoServer.exe MegaDemoClient.exe MegaDemoISAPI.dll +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MegaDemoServer.exe: MegaDemoServer.dpr + $(DCC) + +MegaDemoClient.exe: MegaDemoClient.dpr + $(DCC) + +MegaDemoISAPI.dll: MegaDemoISAPI.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.groupproj new file mode 100644 index 0000000..95c606a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemo.groupproj @@ -0,0 +1,49 @@ + + + {ef074fbb-1501-498f-9a4b-0f5d4c51bf53} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.bdsproj new file mode 100644 index 0000000..fd3dcfd --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MegaDemoClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dpr new file mode 100644 index 0000000..ce9b228 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dpr @@ -0,0 +1,15 @@ +program MegaDemoClient; + +uses + Forms, + MegaDemoClientMain in 'MegaDemoClientMain.pas' {MegaDemoClientMainForm}, + MegaDemoCustomClass in 'MegaDemoCustomClass.pas'; + +{$R *.RES} + +begin + Application.Initialize; + Application.Title := 'RemObjects MegaDemo Client'; + Application.CreateForm(TMegaDemoClientMainForm, MegaDemoClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dproj new file mode 100644 index 0000000..3c78fe4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.dproj @@ -0,0 +1,79 @@ + + + {3492e535-a0ea-4598-93c9-cec490cccd99} + MegaDemoClient.dpr + Debug + AnyCPU + DCC32 + MegaDemoClient.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MegaDemoClient.dpr + + + + + + + MainSource + + +
    MegaDemoClientMainForm
    +
    + +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClient.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.dfm new file mode 100644 index 0000000..d842548 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.dfm @@ -0,0 +1,1092 @@ +object MegaDemoClientMainForm: TMegaDemoClientMainForm + Left = 434 + Top = 193 + Width = 694 + Height = 459 + Caption = 'RemObjects SDK 4.0 for Delphi - Mega Demo Client' + Color = clBtnFace + Constraints.MinHeight = 444 + Constraints.MinWidth = 675 + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + ShowHint = True + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 686 + Height = 432 + Align = alClient + BevelOuter = bvNone + BorderWidth = 5 + TabOrder = 0 + object Panel4: TPanel + Left = 5 + Top = 150 + Width = 676 + Height = 140 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Label15: TLabel + Left = 617 + Top = 61 + Width = 24 + Height = 13 + Caption = 'times' + end + object Label14: TLabel + Left = 619 + Top = 85 + Width = 35 + Height = 13 + Caption = 'threads' + end + object clbTests: TCheckListBox + Left = 0 + Top = 0 + Width = 112 + Height = 108 + Hint = 'Select test' + OnClickCheck = clbTestsClickCheck + Align = alLeft + ItemHeight = 13 + Items.Strings = ( + 'Stress Test' + 'Sum' + 'EchoPerson' + 'TestArrays' + 'EchoBinary' + 'GetServerTime' + 'CustomClass' + 'RaiseError') + TabOrder = 0 + OnClick = clbTestsClick + end + object Panel5: TPanel + Left = 0 + Top = 108 + Width = 676 + Height = 32 + Align = alBottom + BevelOuter = bvNone + TabOrder = 5 + object cbEnableLog: TCheckBox + Left = 183 + Top = 8 + Width = 82 + Height = 17 + Hint = 'Allows to show the report on performance of tests' + Caption = 'Enable Log' + TabOrder = 2 + end + object cbVerbose: TCheckBox + Left = 111 + Top = 8 + Width = 66 + Height = 17 + Hint = + 'Allows to show progress of transfer / reception of data for BIN ' + + 'Message' + Caption = 'Verbose' + TabOrder = 1 + end + object cbWriteTestInfo: TCheckBox + Left = 7 + Top = 8 + Width = 97 + Height = 17 + Hint = 'Shows the information on the test ' + Caption = 'Write Test Info' + TabOrder = 0 + end + object bClearLog: TButton + Left = 592 + Top = 7 + Width = 80 + Height = 25 + Caption = 'Clear Log' + TabOrder = 3 + OnClick = bClearLogClick + end + end + object RunTestOnceButton: TButton + Left = 572 + Top = 1 + Width = 100 + Height = 25 + Caption = 'Run Test Once' + TabOrder = 1 + OnClick = RunTestOnceButtonClick + end + object RunTestButton: TButton + Left = 572 + Top = 28 + Width = 100 + Height = 25 + Caption = 'Run Multiple Tests' + TabOrder = 2 + OnClick = RunTestButtonClick + end + object seRepetitions: TSpinEdit + Left = 575 + Top = 56 + Width = 40 + Height = 22 + Hint = 'Set times for Stress test and multiple tests' + MaxValue = 0 + MinValue = 0 + TabOrder = 3 + Value = 10 + end + object seThreads: TSpinEdit + Left = 575 + Top = 80 + Width = 40 + Height = 22 + Hint = 'Set threads for Stress test and multiple tests' + MaxValue = 0 + MinValue = 0 + TabOrder = 4 + Value = 5 + end + object pPage: TPanel + Left = 112 + Top = 1 + Width = 456 + Height = 108 + Align = alCustom + Anchors = [akLeft, akTop, akBottom] + BevelOuter = bvNone + TabOrder = 6 + object pagecontrol2: TPageControl + Left = 0 + Top = 0 + Width = 456 + Height = 108 + ActivePage = tsStress + Align = alClient + TabOrder = 0 + object tsStress: TTabSheet + Caption = 'Stress' + object pStress: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + DesignSize = ( + 448 + 80) + object Label17: TLabel + Left = 7 + Top = 0 + Width = 434 + Height = 79 + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = + 'This test allows you to run one or more of the individual tests,' + + ' depending on which are checked.'#13#10#13#10'IMPORTANT: before running an' + + 'y test, you must activate the server'#39's transport that matches th' + + 'e channel selected on this client (default is HTTP Channel).' + WordWrap = True + end + end + end + object tsSum: TTabSheet + Caption = 'Sum' + ImageIndex = 1 + object pSum: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label18: TLabel + Left = 7 + Top = 60 + Width = 435 + Height = 19 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = 'This method fulfils the sum of argument A and argument B' + WordWrap = True + end + object Label16: TLabel + Left = 7 + Top = 28 + Width = 58 + Height = 13 + Caption = 'Argument B:' + end + object Label11: TLabel + Left = 7 + Top = 5 + Width = 58 + Height = 13 + Caption = 'Argument A:' + end + object seB: TSpinEdit + Left = 75 + Top = 23 + Width = 81 + Height = 22 + Hint = 'Set argument B for Sum test' + MaxValue = 0 + MinValue = 0 + TabOrder = 1 + Value = 2 + end + object seA: TSpinEdit + Left = 75 + Top = 0 + Width = 81 + Height = 22 + Hint = 'Set argument A for Sum test' + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 1 + end + end + end + object tsEchoPerson: TTabSheet + Caption = 'EchoPerson' + ImageIndex = 2 + object pEchoPerson: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label19: TLabel + Left = 7 + Top = 60 + Width = 433 + Height = 19 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = + 'This method created object TPerson and send it to server and r' + + 'eturns a copy of this object from a server' + WordWrap = True + end + object Label2: TLabel + Left = 7 + Top = 4 + Width = 53 + Height = 13 + Caption = 'First Name:' + end + object Label3: TLabel + Left = 215 + Top = 5 + Width = 54 + Height = 13 + Caption = 'Last Name:' + end + object Label4: TLabel + Left = 38 + Top = 27 + Width = 22 + Height = 13 + Caption = 'Age:' + end + object Label5: TLabel + Left = 120 + Top = 27 + Width = 21 + Height = 13 + Caption = 'Sex:' + end + object eLastName: TEdit + Left = 284 + Top = 1 + Width = 124 + Height = 21 + Hint = 'Set Last Name for EchoPerson test' + TabOrder = 1 + Text = 'Smith' + end + object cbSex: TComboBox + Left = 143 + Top = 23 + Width = 109 + Height = 21 + Hint = 'Set Sex for EchoPerson test' + Style = csDropDownList + ItemHeight = 0 + TabOrder = 3 + end + object eFirstName: TEdit + Left = 75 + Top = 0 + Width = 124 + Height = 21 + Hint = 'Set First Name for EchoPerson test' + TabOrder = 0 + Text = 'John' + end + object seAge: TSpinEdit + Left = 75 + Top = 22 + Width = 42 + Height = 22 + Hint = 'Set Age for EchoPerson test' + MaxValue = 0 + MinValue = 0 + TabOrder = 2 + Value = 33 + end + end + end + object tsTestArrays: TTabSheet + Caption = 'TestArrays' + ImageIndex = 4 + object pTestArrays: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label6: TLabel + Left = 7 + Top = 5 + Width = 31 + Height = 13 + Caption = 'Count:' + end + object Label20: TLabel + Left = 7 + Top = 60 + Width = 437 + Height = 19 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = + 'This method sends the array on a server and returns a copy of th' + + 'is array from a server' + WordWrap = True + end + object rbInteger: TRadioButton + Left = 7 + Top = 22 + Width = 85 + Height = 17 + Hint = 'Use integer array for TestArrays test' + Caption = 'Integer array' + Checked = True + TabOrder = 1 + TabStop = True + end + object seArrayCount: TSpinEdit + Left = 75 + Top = 0 + Width = 81 + Height = 22 + Hint = 'Set array size for TestArrays test' + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 10 + end + object rbTPerson: TRadioButton + Left = 175 + Top = 22 + Width = 89 + Height = 17 + Hint = 'Use TPerson array for TestArrays test' + Caption = 'TPerson array' + TabOrder = 3 + end + object rbString: TRadioButton + Left = 91 + Top = 22 + Width = 77 + Height = 17 + Hint = 'Use string array for TestArrays test' + Caption = 'String array' + TabOrder = 2 + end + end + end + object tsEchoBinary: TTabSheet + Caption = 'EchoBinary' + ImageIndex = 5 + object pEchoBinary: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label7: TLabel + Left = 7 + Top = 5 + Width = 23 + Height = 13 + Caption = 'Size:' + end + object Label21: TLabel + Left = 7 + Top = 60 + Width = 438 + Height = 17 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = + 'This method creates the buffer with the set size and dispatches ' + + 'it on a server. The server returns a copy of this buffer' + WordWrap = True + end + object seBinSize: TSpinEdit + Left = 75 + Top = 0 + Width = 49 + Height = 22 + Hint = 'Set buffer size for EchoBinary test' + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 5000 + end + end + end + object tsGetServerTime: TTabSheet + Caption = 'GetServerTime' + ImageIndex = 6 + object pGetServerTime: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label22: TLabel + Left = 7 + Top = 0 + Width = 437 + Height = 75 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = 'This method returns current time of a server' + WordWrap = True + end + end + end + object tsCustomClass: TTabSheet + Caption = 'CustomClass' + ImageIndex = 7 + object pCustomClass: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label23: TLabel + Left = 7 + Top = 60 + Width = 437 + Height = 17 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = 'This method returns from a server the object as XML or a stream' + WordWrap = True + end + object rbStream: TRadioButton + Left = 7 + Top = 0 + Width = 63 + Height = 17 + Hint = 'To receive TCustomClass as TStreamtomClass' + Caption = 'Stream' + Checked = True + TabOrder = 0 + TabStop = True + end + object rbXML: TRadioButton + Left = 7 + Top = 17 + Width = 63 + Height = 17 + Hint = 'To receive TCustomClass as XML string' + Caption = 'XML' + TabOrder = 1 + end + end + end + object tsRaiseError: TTabSheet + Caption = 'RaiseError' + ImageIndex = 3 + object pRaiseError: TPanel + Left = 0 + Top = 0 + Width = 448 + Height = 80 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Label24: TLabel + Left = 7 + Top = 60 + Width = 440 + Height = 52 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + AutoSize = False + Caption = + 'If you run this test within the IDE, you will want to disable br' + + 'eak on exceptions. '#13#10#13#10'This test is not suitable for the Stress ' + + 'Test.' + WordWrap = True + end + object cbCustomException: TCheckBox + Left = 7 + Top = 0 + Width = 59 + Height = 17 + Hint = 'Set custom error for RaiseError test' + Caption = 'Custom' + Checked = True + State = cbChecked + TabOrder = 0 + end + end + end + end + end + end + object Panel1: TPanel + Left = 5 + Top = 5 + Width = 676 + Height = 145 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 46 + Top = 4 + Width = 212 + Height = 48 + Cursor = crHandPoint + ApplicationType = atClient + end + object GroupBox5: TGroupBox + Left = 0 + Top = 55 + Width = 112 + Height = 86 + Caption = ' Message Type ' + TabOrder = 0 + object rbBinary: TRadioButton + Left = 5 + Top = 15 + Width = 41 + Height = 17 + Hint = 'Use TROBINMessage' + Caption = 'Bin' + Checked = True + TabOrder = 0 + TabStop = True + OnClick = rbBinaryClick + end + object rbSOAP: TRadioButton + Left = 5 + Top = 32 + Width = 49 + Height = 17 + Hint = 'Use TROSOAPMessage' + Caption = 'SOAP' + TabOrder = 1 + OnClick = rbSOAPClick + end + object rbPost: TRadioButton + Left = 5 + Top = 49 + Width = 49 + Height = 17 + Hint = 'Use TROPOSTMessage' + Caption = 'Post' + TabOrder = 2 + OnClick = rbPostClick + end + object rbXmlRpc: TRadioButton + Left = 5 + Top = 66 + Width = 61 + Height = 17 + Caption = 'XmlRpc' + TabOrder = 3 + OnClick = rbXmlRpcClick + end + end + object pgChannels: TPageControl + Left = 315 + Top = 1 + Width = 359 + Height = 145 + ActivePage = tsHttp + MultiLine = True + RaggedRight = True + Style = tsFlatButtons + TabOrder = 5 + OnChange = pgChannelsChange + object tsHttp: TTabSheet + Caption = 'HTTP' + ImageIndex = 1 + object Label1: TLabel + Left = 7 + Top = 11 + Width = 25 + Height = 13 + Caption = 'URL:' + end + object cbHTTPURL: TComboBox + Left = 65 + Top = 7 + Width = 250 + Height = 21 + Hint = 'Set url for http channel' + ItemHeight = 13 + TabOrder = 0 + Text = 'http://127.0.0.1:8099/bin' + OnChange = cbHTTPURLChange + Items.Strings = ( + 'http://localhost:8099/soap' + 'http://localhost:8099/bin' + 'http://localhost/MegaRO/soap' + 'http://localhost/MegaRO/bin') + end + object rbIndyHttp: TRadioButton + Left = 7 + Top = 47 + Width = 80 + Height = 17 + Hint = 'Usage TROIndyHttpChannel' + Caption = 'Indy' + TabOrder = 2 + OnClick = rbIndyHttpClick + end + object rbWinInetHttp: TRadioButton + Left = 7 + Top = 31 + Width = 80 + Height = 17 + Hint = 'Usage TROWininetHttpChannel' + Caption = 'WinInet' + Checked = True + TabOrder = 1 + TabStop = True + OnClick = rbIndyHttpClick + end + object rbSynapseHttp: TRadioButton + Left = 7 + Top = 63 + Width = 80 + Height = 17 + Hint = 'Usage TROSynapseHTTPChannel' + Caption = 'Synapse' + TabOrder = 3 + OnClick = rbIndyHttpClick + end + object cbKeepConnection: TCheckBox + Left = 7 + Top = 80 + Width = 79 + Height = 15 + Hint = 'Enables Keep Connection' + Caption = 'Keep-Alive' + Checked = True + State = cbChecked + TabOrder = 4 + end + end + object tsTCP: TTabSheet + Caption = 'TCP' + ImageIndex = 2 + object Label9: TLabel + Left = 7 + Top = 11 + Width = 41 + Height = 13 + Caption = 'Address:' + end + object Label10: TLabel + Left = 195 + Top = 9 + Width = 22 + Height = 13 + Caption = 'Port:' + end + object cbTCPIP: TComboBox + Left = 65 + Top = 7 + Width = 120 + Height = 21 + Hint = 'Set IP for tcp channel' + ItemHeight = 0 + TabOrder = 0 + Text = '127.0.0.1' + end + object cbTCPPort: TComboBox + Left = 245 + Top = 5 + Width = 60 + Height = 21 + Hint = 'Set port for tcp channel' + ItemHeight = 0 + TabOrder = 1 + Text = '8090' + end + object RbIndyTcp: TRadioButton + Left = 7 + Top = 31 + Width = 88 + Height = 17 + Hint = 'Usage TROIndyTcpChannel' + Caption = 'Indy' + Checked = True + TabOrder = 2 + TabStop = True + end + object cbDisableNagle: TCheckBox + Left = 7 + Top = 80 + Width = 162 + Height = 17 + Hint = 'Disable Nagle' + Caption = 'Disable &Nagle' + TabOrder = 3 + OnClick = cbDisableNagleClick + end + end + object tsSuperHTTP: TTabSheet + Caption = 'SuperHTTP' + ImageIndex = 4 + object Label25: TLabel + Left = 7 + Top = 11 + Width = 25 + Height = 13 + Caption = 'URL:' + end + object cbSuperHTTPURL: TComboBox + Left = 65 + Top = 7 + Width = 250 + Height = 21 + Hint = 'Set url for super http channel' + ItemHeight = 13 + TabOrder = 0 + Text = 'http://127.0.0.1:8099/bin' + OnChange = cbSuperHTTPURLChange + Items.Strings = ( + 'http://localhost:8099/soap' + 'http://localhost:8099/bin' + 'http://localhost/MegaRO/soap' + 'http://localhost/MegaRO/bin') + end + object rbIndySuperHttp: TRadioButton + Left = 7 + Top = 31 + Width = 80 + Height = 17 + Hint = 'Usage TROIndySuperHttpChannel' + Caption = 'Indy' + Checked = True + TabOrder = 1 + TabStop = True + end + object rbSynapseSuperHttp: TRadioButton + Left = 7 + Top = 47 + Width = 80 + Height = 17 + Hint = 'Usage TROSynapseSuperHttpChannel' + Caption = 'Synapse' + TabOrder = 2 + end + end + object tsSuperTCP: TTabSheet + Caption = 'SuperTCP' + ImageIndex = 3 + object Label12: TLabel + Left = 7 + Top = 11 + Width = 41 + Height = 13 + Caption = 'Address:' + end + object Label13: TLabel + Left = 195 + Top = 11 + Width = 22 + Height = 13 + Caption = 'Port:' + end + object cbSuperTCPPort: TComboBox + Left = 245 + Top = 7 + Width = 60 + Height = 21 + Hint = 'Set port for super tcp channel' + ItemHeight = 0 + TabOrder = 0 + Text = '8090' + end + object cbSuperTCPIP: TComboBox + Left = 65 + Top = 7 + Width = 120 + Height = 21 + Hint = 'Set IP for super tcp channel' + ItemHeight = 0 + TabOrder = 1 + Text = '127.0.0.1' + end + object rbIndySuperTCP: TRadioButton + Left = 7 + Top = 31 + Width = 80 + Height = 17 + Hint = 'Usage TROSuperTcpChannel' + Caption = 'Indy' + Checked = True + TabOrder = 2 + TabStop = True + end + object rbSynapseSuperTCP: TRadioButton + Left = 7 + Top = 47 + Width = 80 + Height = 17 + Hint = 'Usage TROSynapseSuperTcpChannel' + Caption = 'Synapse' + TabOrder = 3 + end + end + object tsWindowsMessage: TTabSheet + Caption = 'Windows Message' + ImageIndex = 5 + object Label8: TLabel + Left = 7 + Top = 11 + Width = 48 + Height = 13 + Caption = 'Server ID:' + end + object eServerID: TEdit + Left = 65 + Top = 7 + Width = 240 + Height = 21 + Hint = 'Set Server ID' + TabOrder = 0 + Text = '{E46A5995-2260-44EA-AC60-121ADB4CC2D0}' + end + end + end + object cbUseCompression: TCheckBox + Left = 118 + Top = 60 + Width = 106 + Height = 17 + Hint = 'Allows to use a compression at data transmission' + Caption = 'Use &Compression' + Checked = True + State = cbChecked + TabOrder = 1 + end + object cbEncrypt: TCheckBox + Left = 118 + Top = 77 + Width = 137 + Height = 17 + Hint = 'Allows to cipher data by transfer' + Caption = 'Encrypt Communication' + TabOrder = 2 + OnClick = cbEncryptClick + end + object cbAutoDetect: TCheckBox + Left = 118 + Top = 94 + Width = 198 + Height = 17 + Caption = 'Autodetect messagetype (on server)' + TabOrder = 3 + OnClick = cbAutoDetectClick + end + object cb_UseEnvelopes: TCheckBox + Left = 118 + Top = 111 + Width = 149 + Height = 17 + Caption = 'Use message envelopes' + TabOrder = 4 + OnClick = cb_UseEnvelopesClick + end + end + object PageControl1: TPageControl + Left = 5 + Top = 290 + Width = 676 + Height = 137 + ActivePage = tsLog + Align = alClient + TabOrder = 2 + object tsLog: TTabSheet + Caption = 'Log' + ImageIndex = 1 + object Memo: TMemo + Left = 0 + Top = 0 + Width = 668 + Height = 109 + Align = alClient + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Courier New' + Font.Style = [] + ParentFont = False + ScrollBars = ssVertical + TabOrder = 0 + end + end + object tsSoap: TTabSheet + Caption = 'Output' + object Splitter1: TSplitter + Left = 337 + Top = 0 + Height = 109 + end + object Memo1: TMemo + Left = 0 + Top = 0 + Width = 337 + Height = 109 + Align = alLeft + ScrollBars = ssVertical + TabOrder = 0 + end + object Memo2: TMemo + Left = 340 + Top = 0 + Width = 328 + Height = 109 + Align = alClient + ScrollBars = ssVertical + TabOrder = 1 + end + end + end + end + object BINMessage: TROBinMessage + OnInitializeMessage = BINMessageInitializeMessage + OnFinalizeMessage = BINMessageFinalizeMessage + OnWriteMessageParameter = BINMessageWriteMessageParameter + OnReadMessageParameter = BINMessageReadMessageParameter + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + UseCompression = False + Left = 14 + Top = 5 + end + object SOAPMessage: TROSOAPMessage + OnWriteToStream = SOAPMessageWriteToStream + OnReadFromStream = SOAPMessageReadFromStream + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + ServerTargetNamespace = 'http://tempuri.org/' + SerializationOptions = [xsoWriteMultiRefArray, xsoWriteMultiRefObject] + OnEnvelopeComplete = SOAPMessageEnvelopeComplete + Left = 42 + Top = 5 + end + object WinMessageChannel: TROWinMessageChannel + Encryption.EncryptionSendKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Encryption.EncryptionRecvKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Delay = 150 + DispatchOptions = [] + ServerLocators = <> + Left = 449 + Top = 344 + end + object WininetHttpChannel: TROWinInetHTTPChannel + Encryption.EncryptionSendKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Encryption.EncryptionRecvKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + UserAgent = 'RemObjects SDK' + KeepConnection = True + TrustInvalidCA = False + DispatchOptions = [] + ServerLocators = <> + Left = 380 + Top = 344 + end + object RemoteService: TRORemoteService + ServiceName = 'NewService' + Left = 609 + Top = 339 + end + object PostMessage: TROPostMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 70 + Top = 6 + end + object XmlRpcMessage: TROXmlRpcMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 98 + Top = 6 + end + object ROAESEncryptionEnvelope: TROAESEncryptionEnvelope + EnvelopeMarker = 'AES' + BeforeEnvelopeProcessed = ROAESEncryptionEnvelopeBeforeEnvelopeProcessed + Password = 'All work and no play makes Jack a dull boy.' + Left = 128 + Top = 8 + end + object ROZeroConfBrowser: TROZeroConfBrowser + Active = False + ServiceType = '_megademoservice_rosdk._tcp.' + OnServiceAdded = ROZeroConfBrowserServiceAdded + OnServiceRemoved = ROZeroConfBrowserServiceRemoved + Left = 216 + Top = 344 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.pas new file mode 100644 index 0000000..783caa4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoClientMain.pas @@ -0,0 +1,1848 @@ +unit MegaDemoClientMain; + +{ Activate this define if you are using the demo without having Indy installed. + + Simply click "Ignore" when opening the form to have the Indy components + remove, set the define and rebuild the demo. } + +{.$DEFINE NO_INDY} +{.$DEFINE NO_SYNAPSE} +{$I RemObjects.inc} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, Spin, ExtCtrls, ComCtrls, SyncObjs, uROClientIntf, TypInfo, + +{$IFNDEF NO_INDY} + uROIndyTCPChannel, uROIndyHTTPChannel, uROSuperTCPChannel,uROIndySuperHttpChannel, +{$ENDIF NO_INDY} +{$IFNDEF NO_SYNAPSE} + uROSynapseHttpChannel,uROSynapseSuperTCPChannel, uROSynapseSuperHttpChannel, +{$ENDIF} + uROClient, uROBINMessage, uROWinMessageChannel, uROSOAPMessage, + uROWinInetHttpChannel, uROXMLIntf, MegaDemoLibrary_Intf, uROTypes, + uRORemoteService, uROPoweredByRemObjectsButton, uROXmlRpcMessage, + ImgList, Buttons, uRODynamicRequest, uROPostMessage, CheckLst, + uROEncryptionEnvelope, uROZeroConf; + +const + msgWarningPorts = + 'Issuing many requests in a short period of time can cause the client PC to run out of ip-port combinations.' + sLineBreak + + 'Once an ip-port combination has been used, it takes some time (1 to 4 min on Windows) before that combination can be re-used' + sLineBreak + '' + sLineBreak + + 'Run netstat from command prompt to see how many connections are in TIME_WAIT state.' + sLineBreak + '' + sLineBreak + + 'If you have long loops (i.e 50 cycles or 5 threads running 10) allow your PC to restore some ports by not' + sLineBreak + + 'doing anything for a minute or so once the test has completed.' + sLineBreak + '' + sLineBreak + + 'Do you want to continue?'; + +type + TArrayType = (atInteger, atString, atTPerson); + + TStressMethod = function(aService: IMegaDemoService): integer of object; + + TMegaDemoClientMainForm = class(TForm) + BINMessage: TROBINMessage; + SOAPMessage: TROSOAPMessage; + WinMessageChannel: TROWinMessageChannel; + PageControl1: TPageControl; + tsSoap: TTabSheet; + tsLog: TTabSheet; + Memo: TMemo; + Memo1: TMemo; + Memo2: TMemo; + Splitter1: TSplitter; + WininetHttpChannel: TROWinInetHTTPChannel; + RemoteService: TRORemoteService; + Panel3: TPanel; + PostMessage: TROPostMessage; + Panel4: TPanel; + clbTests: TCheckListBox; + pagecontrol2: TPageControl; + tsStress: TTabSheet; + tsSum: TTabSheet; + tsEchoPerson: TTabSheet; + tsRaiseError: TTabSheet; + seA: TSpinEdit; + seB: TSpinEdit; + Label4: TLabel; + seAge: TSpinEdit; + cbSex: TComboBox; + eLastName: TEdit; + eFirstName: TEdit; + Label3: TLabel; + Label2: TLabel; + cbCustomException: TCheckBox; + Label5: TLabel; + tsTestArrays: TTabSheet; + tsEchoBinary: TTabSheet; + tsGetServerTime: TTabSheet; + tsCustomClass: TTabSheet; + Label6: TLabel; + seArrayCount: TSpinEdit; + rbInteger: TRadioButton; + rbString: TRadioButton; + rbTPerson: TRadioButton; + seBinSize: TSpinEdit; + Label7: TLabel; + rbStream: TRadioButton; + rbXML: TRadioButton; + Panel5: TPanel; + Panel1: TPanel; + GroupBox5: TGroupBox; + rbBinary: TRadioButton; + rbSOAP: TRadioButton; + rbPost: TRadioButton; + RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + cbEnableLog: TCheckBox; + cbVerbose: TCheckBox; + cbWriteTestInfo: TCheckBox; + Label11: TLabel; + Label16: TLabel; + Label17: TLabel; + Label18: TLabel; + Label19: TLabel; + Label20: TLabel; + Label21: TLabel; + Label22: TLabel; + Label23: TLabel; + Label24: TLabel; + RunTestOnceButton: TButton; + RunTestButton: TButton; + seRepetitions: TSpinEdit; + Label15: TLabel; + seThreads: TSpinEdit; + Label14: TLabel; + pStress: TPanel; + pSum: TPanel; + pTestArrays: TPanel; + pEchoBinary: TPanel; + pGetServerTime: TPanel; + pCustomClass: TPanel; + pRaiseError: TPanel; + pPage: TPanel; + pEchoPerson: TPanel; + rbXmlRpc: TRadioButton; + XmlRpcMessage: TROXmlRpcMessage; + pgChannels: TPageControl; + tsWindowsMessage: TTabSheet; + tsHttp: TTabSheet; + tsTCP: TTabSheet; + tsSuperTCP: TTabSheet; + tsSuperHTTP: TTabSheet; + Label8: TLabel; + eServerID: TEdit; + Label1: TLabel; + cbHTTPURL: TComboBox; + cbTCPIP: TComboBox; + Label9: TLabel; + Label10: TLabel; + cbTCPPort: TComboBox; + rbIndyHttp: TRadioButton; + rbWinInetHttp: TRadioButton; + rbSynapseHttp: TRadioButton; + cbKeepConnection: TCheckBox; + RbIndyTcp: TRadioButton; + cbDisableNagle: TCheckBox; + Label12: TLabel; + Label13: TLabel; + cbSuperTCPPort: TComboBox; + cbSuperTCPIP: TComboBox; + Label25: TLabel; + cbSuperHTTPURL: TComboBox; + rbIndySuperTCP: TRadioButton; + rbSynapseSuperTCP: TRadioButton; + rbIndySuperHttp: TRadioButton; + rbSynapseSuperHttp: TRadioButton; + cbUseCompression: TCheckBox; + cbEncrypt: TCheckBox; + cbAutoDetect: TCheckBox; + ROAESEncryptionEnvelope: TROAESEncryptionEnvelope; + cb_UseEnvelopes: TCheckBox; + bClearLog: TButton; + ROZeroConfBrowser: TROZeroConfBrowser; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure bTestEchoBinaryClick(Sender: TObject); + procedure Image1Click(Sender: TObject); + procedure cbEncryptClick(Sender: TObject); + procedure rbBinaryClick(Sender: TObject); + procedure rbSOAPClick(Sender: TObject); + procedure cbDisableNagleClick(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure bbStressCustomClassClick(Sender: TObject); + procedure rbPostClick(Sender: TObject); + procedure cbHTTPURLChange(Sender: TObject); + procedure SOAPMessageWriteToStream(aStream: TStream); + procedure SOAPMessageEnvelopeComplete(Sender: TROSOAPMessage); + procedure SOAPMessageReadFromStream(aStream: TStream); + procedure BINMessageFinalizeMessage(Sender: TROMessage); + procedure BINMessageReadMessageParameter(Sender: TROMessage; + const aName: string; aTypeInfo: PTypeInfo; const DataRef: Pointer; + Attributes: TParamAttributes); + procedure BINMessageWriteMessageParameter(Sender: TROMessage; + const aName: string; aTypeInfo: PTypeInfo; const DataRef: Pointer; + Attributes: TParamAttributes); + procedure BINMessageInitializeMessage(Sender: TROMessage; + const aTransport: IROTransport; const anInterfaceName, + aMessageName: string); + procedure clbTestsClick(Sender: TObject); + procedure RunTestOnceButtonClick(Sender: TObject); + procedure RunTestButtonClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure clbTestsClickCheck(Sender: TObject); + procedure rbIndyHttpClick(Sender: TObject); + procedure rbXmlRpcClick(Sender: TObject); + procedure cbAutoDetectClick(Sender: TObject); + procedure cbSuperHTTPURLChange(Sender: TObject); + procedure pgChannelsChange(Sender: TObject); + procedure cb_UseEnvelopesClick(Sender: TObject); + procedure ROAESEncryptionEnvelopeBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); + procedure bClearLogClick(Sender: TObject); + procedure ROZeroConfBrowserServiceAdded(Sender: TROZeroConfBrowser; + aRecord: TROZeroConfService); + procedure ROZeroConfBrowserServiceRemoved(Sender: TROZeroConfBrowser; + aRecord: TROZeroConfService); + private + {$IFNDEF NO_INDY} + ROIndyHTTPChannel : TROIndyHTTPChannel; + ROIndyTCPChannel : TROIndyTCPChannel; + ROIndySuperHttpChannel : TROIndySuperHttpChannel; + ROIndySuperTCPChannel : TROSuperTcpChannel; + {$ENDIF} + {$IFNDEF NO_SYNAPSE} + ROSynapseHttpchannel: TROSynapseHTTPChannel; + ROSynapseSuperHttpChannel : TROSynapseSuperHttpChannel; + ROSynapseSuperTCPChannel : TROSynapseSuperTcpChannel; + {$ENDIF} + fCritical: TCriticalSection; + fThreads: TList; + fTerminateTest: boolean; + fMessage: TROMessage; + fChannel: TROTransportChannel; + fMegaTestStart: cardinal; + fLogEnabledStatus: boolean; + + function CreateService: IMegaDemoService; + procedure ChangeUrl(iTo: string); + procedure Log(const aMessage: string; Force: boolean = FALSE); + + procedure NotifyThreadTermination(aThread: TThread); + function GetMegaTestRunning: boolean; + + // Methods to invoke the remote service. These are also used by the stress threads later. + // They return the time it took to execute + function InvokeCustomClass(const aService: IMegaDemoService; UseBinaryStream: boolean): integer; + {} function InvokeEchoBinary(const aService: IMegaDemoService; aSize: integer): integer; + {} function InvokeEchoPerson(const aService: IMegaDemoService; const aFirstName, aLastName: string; anAge: integer; aSex: TSex): integer; + {} function InvokeRaiseError(const aService: IMegaDemoService): integer; + {} function InvokeSum(const aService: IMegaDemoService; A, B: integer): integer; + {} function InvokeTestArray(const aService: IMegaDemoService; anArrayType: TArrayType; aCount: integer): integer; + {} function InvokeGetServerTime(const aService: IMegaDemoService): integer; + + // Logs + procedure WriteSequentialStressEnd(TotalTime, Errors: integer); + + procedure WriteSequentialStressStart(TestName: string; const ExtraInfo: string = ''); + + procedure WriteTestInfo(ARunOnce: Boolean); + function GetRequestsPerSecond(TotalTimeMS: integer): double; + procedure Check_ListBoxClick(isAllDemo: Boolean); + + procedure Stress(AMethod: TStressMethod); + function RunSum(aService: IMegaDemoService): integer; + function RunEchoPerson(aService: IMegaDemoService): integer; + function RunRaiseError(aService: IMegaDemoService): integer; + function RunTestArrays(aService: IMegaDemoService): integer; + function int_RunTestArrays(aService: IMegaDemoService; anArrayType: TArrayType): integer; + function RunEchoBinary(aService: IMegaDemoService): integer; + function RunServerTime(aService: IMegaDemoService): integer; + function RunCustomClass(aService: IMegaDemoService): integer; + + procedure RunAllDemo; + procedure StopAllDemo; + + procedure LoadFromIni; + procedure SaveToIni; + + // ZeroConf + function IsServiceHTTP(aService: TROZeroConfService): boolean; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + + property UserChannel: TROTransportChannel read fChannel; + property UserMessage: TROMessage read fMessage; + property MegaTestRunning: boolean read GetMegaTestRunning; + end; + +var + MegaDemoClientMainForm: TMegaDemoClientMainForm; + +implementation + +uses INIFiles, MegaDemoCustomClass, uROXMLSerializer, uROStreamSerializer, + ShellAPI, uROEncryption, ActiveX, StrUtils; + +{$R *.DFM} + +type + { TStressThread } + TStressThread = class(TThread) + private + fMessage: TROMessage; + fChannel: TROTransportChannel; + fErrors, + fSumTime, + fEchoPersonTime, + fRaiseErrorTime, + fArrayTime, + fEchoBinaryTime, + fGetServerTimeTime, + fCustomClassTime, + fTotalTime: integer; + Fidx: integer; + procedure BeforeDestroyThread; + procedure Run; + public + + constructor Create; + destructor Destroy; override; + + procedure Execute; override; + + property Errors: integer read fErrors; + property EchoPersonTime: integer read fEchoPersonTime; + property RaiseErrorTime: integer read fRaiseErrorTime; + property ArrayTime: integer read fArrayTime; + property EchoBinaryTime: integer read fEchoBinaryTime; + property GetServerTimeTime: integer read fGetServerTimeTime; + property CustomClassTime: integer read fCustomClassTime; + property TotalTime: integer read fTotalTime; + property idx: integer read Fidx write Fidx; + end; + +procedure TMegaDemoClientMainForm.FormCreate(Sender: TObject); +var + sx: TSex; +begin + Caption := Application.Title; + +{$IFDEF NO_INDY} + rbIndyHttp.Enabled := false; + rbIndyTcp.Enabled := false; + rbIndySuperTCP.Enabled := false; + rbIndySuperHttp.Enabled := false; +{$ELSE} + ROIndyHTTPChannel := TROIndyHTTPChannel.Create(Self); + ROIndyHTTPChannel.Encryption.Assign(WininetHttpChannel.Encryption); + + ROIndyTCPChannel := TROIndyTCPChannel.Create(Self); + ROIndyTCPChannel.Encryption.Assign(WininetHttpChannel.Encryption); + + ROIndySuperHttpChannel:= TROIndySuperHttpChannel.Create(Self); + ROIndySuperHttpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + + ROIndySuperTCPChannel := TROSuperTcpChannel.Create(Self); + ROIndySuperTCPChannel.Encryption.Assign(WininetHttpChannel.Encryption); +{$ENDIF NO_INDY} + +{$IFDEF NO_SYNAPSE} + rbSynapseHttp.Enabled := false; + rbSynapseSuperTCP.Enabled := false; + rbSynapseSuperHttp.Enabled := false; +{$ELSE} + ROSynapseHttpchannel := TROSynapseHTTPChannel.Create(self); + ROSynapseHttpchannel.Encryption.Assign(WininetHttpChannel.Encryption); + + ROSynapseSuperHttpChannel := TROSynapseSuperHttpChannel.Create(self); + ROSynapseSuperHttpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + + ROSynapseSuperTCPChannel := TROSynapseSuperTcpChannel.Create(self); + ROSynapseSuperTCPChannel.Encryption.Assign(WininetHttpChannel.Encryption); +{$ENDIF} + LoadFromIni; + + for sx := Low(TSex) to High(TSex) do + cbSex.Items.Add(GetEnumName(TypeInfo(TSex), Ord(sx))); + cbSex.ItemIndex := 0; +end; + +procedure TMegaDemoClientMainForm.FormDestroy(Sender: TObject); +begin + SaveToIni; +end; + +function TMegaDemoClientMainForm.CreateService: IMegaDemoService; +begin + // Adds the entry if new + with cbTCPIP do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + with cbHTTPURL do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + with cbTCPPort do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + with cbSuperHTTPURL do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + with cbSuperTCPIP do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + with cbSuperTCPPort do + if (Items.IndexOf(Text) < 0) and (Text <> '') then + Items.Add(Text); + + + { Set up BIN message } + BINMessage.UseCompression := cbUseCompression.Checked; + + { Set up Http Channels } +{$IFNDEF NO_INDY} + ROIndyHTTPChannel.TargetURL := cbHTTPURL.Text; + ROIndyHTTPChannel.KeepAlive := cbKeepConnection.Checked; + ROIndySuperHttpChannel.TargetURL := cbSuperHTTPURL.Text; + + ROIndyTCPChannel.Host := cbTCPIP.Text; + ROIndyTCPChannel.Port := StrToInt(cbTCPPort.Text); + + ROIndySuperTCPChannel.Port:= StrToInt(cbSuperTCPPort.Text); + ROIndySuperTCPChannel.Host:= cbSuperTCPIP.Text; +{$ENDIF NO_INDY} + +{$IFNDEF NO_SYNAPSE} + ROSynapseHttpchannel.TargetURL := cbHTTPURL.Text; + ROSynapseHttpchannel.KeepAlive := cbKeepConnection.Checked; + + ROSynapseSuperHttpChannel.TargetURL := cbSuperHTTPURL.Text; + ROSynapseSuperTCPChannel.Port:= StrToInt(cbSuperTCPPort.Text); + ROSynapseSuperTCPChannel.Host:= cbSuperTCPIP.Text; +{$ENDIF NO_SYNAPSE} + + WininetHttpChannel.TargetURL := cbHTTPURL.Text; + WininetHttpChannel.KeepConnection := cbKeepConnection.Checked; + + { Set up WM Channel } + WinMessageChannel.ServerID := LibraryUID; + + { Select message class based on radio button selection } + if rbBinary.Checked then + fMessage := BINMessage + else if rbPost.Checked then + fMessage := PostMessage + else if rbXMLRpc.Checked then + fMessage := XmlRpcMessage + else + fMessage := SOAPMessage; + fChannel := nil; + if pgChannels.ActivePage = tsHttp then begin + {$IFNDEF NO_INDY} + if rbIndyHttp.Checked then + fChannel := ROIndyHttpChannel + else + {$ENDIF NO_INDY} + {$IFNDEF NO_SYNAPSE} + if rbSynapseHttp.Checked then + fChannel := ROSynapseHttpchannel + else + {$ENDIF NO_INDY} + fChannel := WininetHttpChannel; + end + else if pgChannels.ActivePage = tsTCP then begin + {$IFNDEF NO_INDY} + fChannel := ROIndyTCPChannel; + {$ENDIF NO_INDY} + end + else if pgChannels.ActivePage = tsSuperHTTP then begin + {$IFDEF NO_SYNAPSE} + rbIndySuperHttp.Checked:= True; + {$ENDIF} + {$IFNDEF NO_INDY} + if rbIndySuperHttp.Checked then fChannel := ROIndySuperHttpChannel ; + {$ELSE} + rbSynapseSuperHttp.Checked := True; + {$ENDIF NO_INDY} + {$IFNDEF NO_SYNAPSE} + if rbSynapseSuperHttp.Checked then fChannel := ROSynapseSuperHttpChannel + {$ENDIF NO_INDY} + end + else if pgChannels.ActivePage = tsSuperTCP then begin + {$IFDEF NO_SYNAPSE} + rbIndySuperTcp.Checked:= True; + {$ENDIF} + {$IFNDEF NO_INDY} + if rbIndySuperTCP.Checked then fChannel := ROIndySuperTCPChannel; + {$ELSE} + rbSynapseSuperTCP.Checked := True; + {$ENDIF NO_INDY} + {$IFNDEF NO_SYNAPSE} + if rbSynapseSuperTCP.Checked then fChannel := ROSynapseSuperTCPChannel; + {$ENDIF NO_INDY} + end + else if pgChannels.ActivePage = tsWindowsMessage then begin + fChannel := WinMessageChannel; + end; + + // Sets up the main components + RemoteService.Channel := fChannel; + RemoteService.Message := fMessage; + + result := RemoteService as IMegaDemoService; +end; + +function TMegaDemoClientMainForm.InvokeSum(const aService: IMegaDemoService; A, B: integer): + integer; +var + res: integer; + start: cardinal; +begin + start := GetTickCount; + res := aService.Sum(seA.Value, seB.Value); + result := GetTickCount - start; + Log('Sum'); + Log('---'); + Log(Format('outgoing:'#9'A=%d B=%d', [seA.Value, seB.Value])); + Log(Format('incoming:'#9'Result=%d', [res])); + Log(''); +end; + +function TMegaDemoClientMainForm.InvokeEchoPerson(const aService: IMegaDemoService; + const aFirstName, aLastName: string; anAge: integer; aSex: TSex): integer; +var + outgoing, incoming: TPerson; + start: cardinal; +begin + outgoing := TPerson.Create; + outgoing.FirstName := AnsiString(eFirstName.Text); + outgoing.LastName := AnsiString(eLastName.Text); + outgoing.Age := seAge.Value; + outgoing.Sex := TSex(cbSex.ItemIndex); + + try + start := GetTickCount; + aService.EchoPerson(outgoing, incoming); + result := GetTickCount - start; + + Log('EchoPerson'); + Log('----------'); + with outgoing do + Log(Format('%s:'#9'%s, %s, %s, %s', ['outgoing', FirstName, LastName, IntToStr(Age), GetEnumName(TypeInfo(TSex), Ord(Sex))])); + with incoming do + Log(Format('%s:'#9'%s, %s, %s, %s', ['incoming', FirstName, LastName, IntToStr(Age), GetEnumName(TypeInfo(TSex), Ord(Sex))])); + + Log(''); + + finally + incoming.Free; + outgoing.Free; + end; +end; + +function TMegaDemoClientMainForm.InvokeRaiseError(const aService: IMegaDemoService): integer; +var + start: cardinal; +begin + Result := 0; + start := GetTickCount; + Log('RaiseError'); + Log('----------'); + try + try + if not cbCustomException.Checked then + aService.RaiseError() + else + aService.RaiseTestException; + finally + result := GetTickCount - start; + end; + except + on E: ETestException do + if rbXmlRpc.Checked then + Log(Format( + 'ETestException' + sLineBreak + + 'Message:'#9'%s', + [E.Message]), true) + else + Log(Format( + 'ETestException' + sLineBreak + + 'Message:'#9'%s' + sLineBreak + + 'ErrorCode:'#9'%d' + sLineBreak + + 'AdditionalInfo:'#9'%s', + [E.Message, E.ErrorCode, E.AdditionalInfo]), true); + on E: Exception do + Log( + 'Generic exception:'#9 + E.ClassName + sLineBreak + + 'Message:'#9#9 + E.Message, true); + end; + Log(''); +end; + +function TMegaDemoClientMainForm.InvokeTestArray(const aService: IMegaDemoService; + anArrayType: TArrayType; aCount: integer): integer; +var + i: integer; + iarr, iarr2: TIntegerArray; + sarr, sarr2: TStringArray; + parr, parr2: TPersonArray; + s, s1: string; + err: boolean; + start: cardinal; +begin + Result := 0; + s := ''; + err := FALSE; + + iarr := nil; + iarr2 := nil; + sarr := nil; + sarr2 := nil; + parr := nil; + parr2 := nil; + + try + case anArrayType of + atInteger: try + s1 := rbInteger.Caption; + Randomize; + iarr := TIntegerArray.Create; + iarr.Resize(seArrayCount.Value); + for i := 0 to (seArrayCount.Value - 1) do + iarr[i] := Random(100); + + start := GetTickCount; + iarr2 := aService.TestIntegerArray(iarr); + result := GetTickCount - start; + + for i := 0 to (seArrayCount.Value - 1) do begin + s := s + Format('%d:'#9'%d - %d', [i, iarr[i], iarr2[i]]) + sLineBreak; + if (iarr2[i] <> iarr[i]) then begin + err := TRUE; + Exit; + end; + end; + finally + iarr.Free; + iarr2.Free; + end; + + atString: try + s1 := rbString.Caption; + Randomize; + sarr := TStringArray.Create; + sarr.Resize(seArrayCount.Value); + + for i := 0 to (seArrayCount.Value - 1) do begin + sarr[i] := 'Value is ' + Ansistring(IntToStr(Random(1000) + 1000)); + end; + + start := GetTickCount; + sarr2 := aService.TestStringArray(sarr); + result := GetTickCount - start; + + for i := 0 to (seArrayCount.Value - 1) do begin + s := s + Format('%d:'#9'"%s" - "%s"', [i, sarr[i], sarr2[i]]) + sLineBreak; + if (sarr2[i] <> sarr[i]) then begin + err := TRUE; + Exit; + end; + end; + finally + sarr.Free; + sarr2.Free; + end; + + atTPerson: try + s1 := rbTPerson.Caption; + parr := TPersonArray.Create; + parr.Resize(seArrayCount.Value); + + for i := 0 to (seArrayCount.Value - 1) do begin + parr[i] := TPerson.Create; + with parr[i] do begin + FirstName := AnsiString(eFirstName.Text); + LastName := AnsiString(eLastName.Text); + Age := seAge.Value; + Sex := TSex(cbSex.ItemIndex); + end; + end; + + start := GetTickCount; + parr2 := aService.TestPersonArray(parr); + result := GetTickCount - start; + + for i := 0 to (seArrayCount.Value - 1) do begin + s := s + Format('%d:'#9'%s %s %d %d - %s %s %d %d', [ + i, + parr[i].FirstName, parr[i].LastName, parr[i].Age, + Ord(parr[i].Sex), + parr2[i].FirstName, parr2[i].LastName, parr2[i].Age, + Ord(parr2[i].Sex)]) + sLineBreak; + + if (parr2[i].FirstName <> parr[i].FirstName) or + (parr2[i].LastName <> parr[i].LastName) or + (parr2[i].Age <> parr[i].Age) or + (parr2[i].Sex <> parr[i].Sex) then begin + err := TRUE; + Exit; + end; + end; + finally + parr.Free; + parr2.Free; + end; + end; + finally + if err then + s := 'Arrays are DIFFERENT!' + sLineBreak + s + else + s := sLineBreak + 'Arrays equal!' + sLineBreak + s; + Log('TestArray'); + Log('---------'); + Log('Mode:'#9 + s1); + Log(s); + end; +end; + +function TMegaDemoClientMainForm.IsServiceHTTP( + aService: TROZeroConfService): boolean; +begin + Result := AnsiContainsText(aService.TextRecord, 'channel=http'); +end; + +function TMegaDemoClientMainForm.InvokeEchoBinary(const aService: IMegaDemoService; aSize: + integer): integer; +var + binin, binout: Binary; + i: integer; + b: byte; + start: cardinal; +begin + Randomize; + binin := Binary.Create; + binout := nil; + + try + binin.SetSize(seBinSize.Value); + binin.Position := 0; + for i := 1 to seBinSize.Value do begin + b := Random($FF); + binin.Write(b, SizeOf(b)); + end; + + binin.Position := 0; + + start := GetTickCount; + aService.EchoBinary(binin, binout); + result := GetTickCount - start; + + Log('EchoBinary'); + Log('-------------'); + + Log('outgoing:'#9 + IntToStr(binin.Size) + ' bytes'); + Log('incoming:'#9 + IntToStr(binout.Size) + ' bytes'); + + if (binin.Size = binout.Size) then begin + if CompareMem(binin.Memory, binout.Memory, binout.Size) then + Log('Data is equivalent!') + else + Log('Data is different!'); + end + else begin + Log('Different size!'); + end; + Log(''); + finally + binin.Free; + binout.Free; + end; +end; + +function TMegaDemoClientMainForm.InvokeCustomClass(const aService: IMegaDemoService; + UseBinaryStream: boolean): integer; +var + cls: TCustomClass; + stream: Binary; + xml: string; + start: cardinal; +begin + stream := nil; + cls := nil; + try + if not UseBinaryStream then begin + start := GetTickCount; + xml := string(aService.CustomObjectAsString); + result := GetTickCount - start; + cls := XMLToObject(xml) as TCustomClass; + end + else begin + start := GetTickCount; + stream := aService.CustomObjectAsStream; + result := GetTickCount - start; + cls := StreamToObject(stream) as TCustomClass; + end; + Log('CustomClass'); + Log('-----------'); + Log('incoming:'); + // incoming data + with cls do begin + Log('Random integer:'#9#9 + intToStr(RandomInt)); + Log('Random double:'#9#9 + FloatToStr(RandomDouble)); + Log('Random string:'#9#9 + string(RandomStr)); + Log('Random widestring:'#9 + RandomWideStr); + end; + finally + stream.Free; + cls.Free; + end; +end; + +function TMegaDemoClientMainForm.InvokeGetServerTime(const aService: IMegaDemoService): integer; +var + start: cardinal; + restime: TDateTime; +begin + start := GetTickCount; + restime := aService.GetServerTime; + result := GetTickCount - start; + Log('GetServerTime'); + Log('------------------'); + Log('incoming:'#9 + DateTimeToStr(restime)); + Log(''); +end; + +procedure TMegaDemoClientMainForm.bTestEchoBinaryClick(Sender: TObject); +begin + InvokeEchoBinary(CreateService, seBinSize.Value); +end; + +procedure TMegaDemoClientMainForm.Image1Click(Sender: TObject); +begin + ShellExecute(Handle, 'open', 'http://www.remobjects.com', nil, nil, SW_SHOWNORMAL); +end; + +procedure TMegaDemoClientMainForm.cbEncryptClick(Sender: TObject); +var + lEncryption: TROEncryptionMethod; +begin + if cbEncrypt.Checked then + lEncryption := tetDES + else + lEncryption := tetNone; + + WininetHttpChannel.Encryption.EncryptionMethod := lEncryption; + +{$IFNDEF NO_INDY} + ROIndyHttpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + ROIndyTcpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + ROIndySuperHttpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + ROIndySuperTCPChannel.Encryption.Assign(WininetHttpChannel.Encryption); + +{$ENDIF NO_INDY} +{$IFNDEF NO_SYNAPSE} + ROSynapseHttpchannel.Encryption.Assign(WininetHttpChannel.Encryption); + ROSynapseSuperHttpChannel.Encryption.Assign(WininetHttpChannel.Encryption); + ROSynapseSuperTCPChannel.Encryption.Assign(WininetHttpChannel.Encryption); + +{$ENDIF} + + WinMessageChannel.Encryption.EncryptionMethod := lEncryption; +end; + +procedure TMegaDemoClientMainForm.ChangeUrl(iTo: string); +begin + { lame, but works } + if cbAutoDetect.Checked then iTo:=''; + cbHTTPURL.Text := StringReplace(cbHTTPURL.Text, '/bin', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbHTTPURL.Text := StringReplace(cbHTTPURL.Text, '/soap', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbHTTPURL.Text := StringReplace(cbHTTPURL.Text, '/post', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbHTTPURL.Text := StringReplace(cbHTTPURL.Text, '/xmlrpc', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + + if not cbAutoDetect.Checked and (Pos(iTo, cbHTTPURL.Text) = 0) then + cbHTTPURL.Text:=cbHTTPURL.Text+iTo; + + cbSuperHTTPUrl.Text := StringReplace(cbSuperHTTPUrl.Text, '/bin', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbSuperHTTPUrl.Text := StringReplace(cbSuperHTTPUrl.Text, '/soap', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbSuperHTTPUrl.Text := StringReplace(cbSuperHTTPUrl.Text, '/post', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + cbSuperHTTPUrl.Text := StringReplace(cbSuperHTTPUrl.Text, '/xmlrpc', '/' + iTo, [rfReplaceAll, rfIgnoreCase]); + + if not cbAutoDetect.Checked and (Pos(iTo, cbSuperHTTPUrl.Text) = 0) then + cbSuperHTTPUrl.Text:=cbSuperHTTPUrl.Text+iTo; + + + cbUseCompression.Enabled := rbBinary.Checked; + cbVerbose.Enabled := rbBinary.Checked; + + tsSoap.TabVisible := rbSOAP.Checked; + if not tsSoap.TabVisible then tsLog.PageControl.ActivePage := tsLog; +end; + +procedure TMegaDemoClientMainForm.rbBinaryClick(Sender: TObject); +begin + ChangeUrl('bin'); +end; + +procedure TMegaDemoClientMainForm.rbSOAPClick(Sender: TObject); +begin + ChangeUrl('soap'); +end; + +procedure TMegaDemoClientMainForm.rbPostClick(Sender: TObject); +begin + ChangeUrl('post'); +end; + +procedure TMegaDemoClientMainForm.cbDisableNagleClick(Sender: TObject); +begin +{$IFNDEF NO_INDY} + ROIndyTCPChannel.DisableNagle := cbDisableNagle.Checked; +{$ENDIF} +end; + +function TMegaDemoClientMainForm.GetRequestsPerSecond(TotalTimeMS: integer): double; +begin + if TotalTimeMS > 0 then + result := (seRepetitions.Value) / (TotalTimeMS / 1000) + else + result := seRepetitions.Value; +end; + +procedure TMegaDemoClientMainForm.NotifyThreadTermination(aThread: TThread); +var + totaltimemega, idx: integer; + overallrsec: double; +begin + fCritical.Enter; + try + idx := TStressThread(aThread).idx; + + Log(Format('Thread %d has terminated. %dms. %f Req/Sec. %d Errors', [idx, TStressThread(aThread).TotalTime, GetRequestsPerSecond(TStressThread(aThread).TotalTime), TStressThread(aThread).Errors]), TRUE); + + fThreads.Remove(aThread); + + if fThreads.Count = 0 then begin + Screen.Cursor := crDefault; + + totaltimemega := GetTickCount - fMegaTestStart; + overallrsec := (seThreads.Value * seRepetitions.Value) / (totaltimemega / 1000); + + Log(Format('The test was completed in %dms. %f Total req/second', [totaltimemega, overallrsec]), TRUE); + Caption := Application.Title; + end + else begin + Caption := Application.Title + Format(' (%d threads running)', [fThreads.Count]); + end; + + Application.ProcessMessages; + finally + fCritical.Leave; + end; +end; + +constructor TMegaDemoClientMainForm.Create(aOwner: TComponent); +begin + inherited; + fCritical := TCriticalSection.Create; + fThreads := TList.Create; + ROZeroConfBrowser.Active := true; +end; + +destructor TMegaDemoClientMainForm.Destroy; +begin + fCritical.Free; + fThreads.Free; + inherited; +end; + +procedure TMegaDemoClientMainForm.FormCloseQuery(Sender: TObject; + var CanClose: Boolean); +begin + CanClose := not MegaTestRunning; + + if not CanClose then begin + if (MessageDlg('Do you want to stop the mega test?', mtWarning, [mbYes, mbNo], 0) = mrYes) then + StopAllDemo + else + Exit; + + while MegaTestRunning do + Application.ProcessMessages; + + CanClose := TRUE; + end; +end; + +function TMegaDemoClientMainForm.GetMegaTestRunning: boolean; +begin + result := fThreads.Count > 0 +end; + +procedure TMegaDemoClientMainForm.WriteTestInfo(ARunOnce: Boolean); +begin + if not cbWriteTestInfo.Checked then Exit; + + Log('', TRUE); + Log('------------------ Test Parameters ------------------', TRUE); + Log('Channel:'#9 + UserChannel.ClassName, True); + if pgChannels.ActivePage = tsHttp then begin + Log('URL:'#9#9 + cbHTTPURL.Text, True); + Log('KeepConnection:'#9 + BoolToStr(cbKeepConnection.Checked, TRUE), True); + end + else if pgChannels.ActivePage = tsSuperHTTP then begin + Log('URL:'#9#9 + cbSuperHTTPURL.Text, True); + end + else if pgChannels.ActivePage = tsTCP then begin + Log('IP, port:'#9 + cbTCPIP.Text + ':' + cbTCPPort.Text, True); + LOG('DisableNagle:'#9 + BoolToStr(cbDisableNagle.Checked, TRUE), True); + end + else if pgChannels.ActivePage = tsSuperTCP then begin + Log('IP, port:'#9 + cbSuperTCPIP.Text + ':' + cbSuperTCPPort.Text, True); + end + else if pgChannels.ActivePage = tsWindowsMessage then begin + Log('Server ID:'#9 + eServerID.Text, True); + end; + + Log('Message:'#9 + UserMessage.ClassName, True); + Log('Encrypt:'#9 + BoolToStr(cbEncrypt.Checked, TRUE), True); + if rbBinary.Checked then begin + Log('Compression:'#9 + BoolToStr(cbUseCompression.Checked, TRUE), True); + end; + if not ARunOnce then begin + Log(Format('Threads:'#9'%d', [seThreads.Value]), TRUE); + Log(Format('Repetitions:'#9'%d', [seRepetitions.Value]), TRUE); + Log(format('Total Requests:'#9'%d', [seThreads.Value * seRepetitions.Value]), TRUE); + end; + Log('-----------------------------------------------------', TRUE); + Log('', TRUE); +end; + +procedure TMegaDemoClientMainForm.WriteSequentialStressStart(TestName: string; const ExtraInfo: string); +begin + WriteTestInfo(False); + Log(Format('Starting %s test. %d repetitions %s', [testname, seRepetitions.Value, ExtraInfo]), TRUE); + fLogEnabledStatus := cbEnableLog.Checked; + cbEnableLog.Checked := FALSE; +end; + +procedure TMegaDemoClientMainForm.WriteSequentialStressEnd(TotalTime, Errors: integer); +var + reqsecond: double; +begin + reqsecond := GetRequestsPerSecond(TotalTime); + Log(Format('Test complete. %dms. %f Req/Second. %d Errors', [TotalTime, reqsecond, Errors]), TRUE); + cbEnableLog.Checked := fLogEnabledStatus; +end; + +procedure TMegaDemoClientMainForm.bbStressCustomClassClick(Sender: TObject); +begin + +end; + +{ TStressThread } + +procedure TStressThread.BeforeDestroyThread; +begin + MegaDemoClientMainForm.NotifyThreadTermination(Self); +end; + +constructor TStressThread.Create; +begin + inherited Create(TRUE); + FreeOnTerminate := TRUE; +end; + +destructor TStressThread.Destroy; +begin +// Synchronize(BeforeDestroyThread); + inherited; +end; + +procedure TStressThread.Execute; +begin + Synchronize(Run); +end; + +procedure TStressThread.Run; +var + svc: IMegaDemoService; + maxcount: integer; + i: integer; +begin + + // Makes internal copies of the channel and the message + fMessage := CloneObject(MegaDemoClientMainForm.UserMessage) as TROMessage; + fChannel := CloneObject(MegaDemoClientMainForm.UserChannel) as TROTransportChannel; + try + svc := CoMegaDemoService.Create(fMessage, fChannel); + maxcount := MegaDemoClientMainForm.seRepetitions.Value - 1; + fTotalTime := 0; + + with MegaDemoClientMainForm do try + if clbTests.Checked[1] then begin + for i := 0 to (maxcount - 1) do try + Inc(fSumTime, RunSum(svc)); + except + Inc(fErrors); + end; + if Terminated then Exit; + end; + + if clbTests.Checked[2] then begin + for i := 0 to (maxcount - 1) do try + Inc(fEchoPersonTime, RunEchoPerson(svc)); + except + Inc(fErrors); + end; + + if Terminated then Exit; + end; + + if clbTests.Checked[3] then begin + for i := 0 to (maxcount - 1) do try + Inc(fArrayTime, int_RunTestArrays(svc, atInteger)) + except + Inc(fErrors); + end; + if Terminated then Exit; + + for i := 0 to (maxcount - 1) do try + Inc(fArrayTime, int_RunTestArrays(svc, atString)) + except + Inc(fErrors); + end; + if Terminated then + Exit; + + for i := 0 to (maxcount - 1) do try + Inc(fArrayTime, int_RunTestArrays(svc, atTPerson)) + except + Inc(fErrors); + end; + if Terminated then Exit; + end; + + if clbTests.Checked[4] then begin + for i := 0 to (maxcount - 1) do try + Inc(fEchoBinaryTime, RunEchoBinary(svc)); + except + Inc(fErrors); + end; + if Terminated then Exit; + end; + + if clbTests.Checked[5] then begin + for i := 0 to (maxcount - 1) do try + Inc(fGetServerTimeTime, RunServerTime(svc)); + except + Inc(fErrors); + end; + if Terminated then Exit; + end; + + if clbTests.Checked[6] then begin + for i := 0 to (maxcount - 1) do try + Inc(fCustomClassTime, RunCustomClass(svc)); + except + Inc(fErrors); + end; + + if Terminated then Exit; + end; + { + if clbTests.Checked[7] then begin + for i := 0 to (maxcount - 1) do try + Inc(fRaiseErrorTime, RunRaiseError(svc)); + except + //Inc(fErrors); + end; + if Terminated then Exit; + end; + } + + finally + fTotalTime := fSumTime + + fEchoPersonTime + + fArrayTime + + fEchoBinaryTime + + fGetServerTimeTime + + fCustomClassTime + // + fRaiseErrorTime + + ; + Terminate; + end; + finally + fChannel.Free; + fMessage.Free; + BeforeDestroyThread; + + end; +end; + +procedure TMegaDemoClientMainForm.cbHTTPURLChange(Sender: TObject); +var + s: string; +begin + s:= cbHTTPURL.Text; + if Pos('/bin', s) > 0 then + rbBinary.Checked := true + else if Pos('/soap', s) > 0 then + rbSoap.Checked := true + else if Pos('/post', s) > 0 then + rbPost.Checked := true + else if Pos('/xmlrpc', s) > 0 then + rbXmlRpc.Checked := true; + cbUseCompression.Enabled := rbBinary.Checked; +end; + +procedure TMegaDemoClientMainForm.SOAPMessageWriteToStream(aStream: TStream); +begin + // memo1.Lines.LoadFromStream(aStream); +end; + +procedure TMegaDemoClientMainForm.SOAPMessageEnvelopeComplete(Sender: TROSOAPMessage); +begin + sender.HeaderNode.Add('Test').Value := '1234'; + if cbEnableLog.Checked then + memo1.Lines.Text := Sender.EnvelopeNode.XML; +end; + +procedure TMegaDemoClientMainForm.SOAPMessageReadFromStream(aStream: TStream); +begin + if cbEnableLog.Checked then Memo2.Lines.LoadFromStream(aStream); +end; + +procedure TMegaDemoClientMainForm.BINMessageFinalizeMessage(Sender: TROMessage); +begin + if cbVerbose.Checked then Log(Sender.Name + ' is finalized'); +end; + +procedure TMegaDemoClientMainForm.BINMessageReadMessageParameter(Sender: TROMessage; + const aName: string; aTypeInfo: PTypeInfo; const DataRef: Pointer; + Attributes: TParamAttributes); +begin + if cbVerbose.Checked then begin + Log(Sender.Name + ' is reading ' + aName); + Log(''); + end; +end; + +procedure TMegaDemoClientMainForm.BINMessageWriteMessageParameter(Sender: TROMessage; + const aName: string; aTypeInfo: PTypeInfo; const DataRef: Pointer; + Attributes: TParamAttributes); +begin + if cbVerbose.Checked then Log(Sender.Name + ' is writing ' + aName); +end; + +procedure TMegaDemoClientMainForm.BINMessageInitializeMessage(Sender: TROMessage; + const aTransport: IROTransport; const anInterfaceName, + aMessageName: string); +begin + if cbVerbose.Checked then Log(Sender.Name + ' is initialized'); +end; + +function TMegaDemoClientMainForm.RunSum(aService: IMegaDemoService): integer; +begin + Result := InvokeSum(aService, seA.Value, seB.Value); +end; + +function TMegaDemoClientMainForm.RunEchoPerson(aService: IMegaDemoService): integer; +begin + Result := InvokeEchoPerson( + aService, + eFirstName.Text, + eLastName.Text, + seAge.Value, + TSex(cbSex.ItemIndex)); +end; + +function TMegaDemoClientMainForm.RunRaiseError(aService: IMegaDemoService): integer; +begin + Result := InvokeRaiseError(aService); +end; + +procedure TMegaDemoClientMainForm.Stress(AMethod: TStressMethod); +var + tot, errors, i: integer; + svc: IMegaDemoService; +begin + tot := 0; + errors := 0; + svc := CreateService; + WriteSequentialStressStart(clbTests.Items[clbTests.ItemIndex]); + for i := 1 to (seRepetitions.Value) do try + Inc(tot, AMethod(svc)); + if (i mod 10 = 0) then Application.ProcessMessages; + if fTerminateTest then Break; + except + Inc(errors); + end; + WriteSequentialStressEnd(tot, errors); +end; + +function TMegaDemoClientMainForm.RunTestArrays(aService: IMegaDemoService): integer; +begin + Result := 0; + if rbInteger.Checked then + Result := int_RunTestArrays(aService, atInteger) + else if rbString.Checked then + Result := int_RunTestArrays(aService, atString) + else if rbTPerson.Checked then + Result := int_RunTestArrays(aService, atTPerson); +end; + +function TMegaDemoClientMainForm.RunEchoBinary(aService: IMegaDemoService): integer; +begin + Result := InvokeEchoBinary(aService, seBinSize.Value); +end; + +function TMegaDemoClientMainForm.RunServerTime(aService: IMegaDemoService): integer; +begin + Result := InvokeGetServerTime(aService); +end; + +function TMegaDemoClientMainForm.RunCustomClass(aService: IMegaDemoService): integer; +begin + Result := InvokeCustomClass(aService, rbStream.Checked); +end; + +procedure TMegaDemoClientMainForm.clbTestsClick(Sender: TObject); + + procedure HidePanels; + begin + pStress.Visible := False; + pSum.Visible := False; + pEchoPerson.Visible := False; + pTestArrays.Visible := False; + pEchoBinary.Visible := False; + pGetServerTime.Visible := False; + pCustomClass.Visible := False; + pRaiseError.Visible := False; + end; + +var + t_panel: TPanel; +begin + HidePanels; + case clbTests.ItemIndex of + 1: t_panel := pSum; + 2: t_panel := pEchoPerson; + 3: t_panel := pTestArrays; + 4: t_panel := pEchoBinary; + 5: t_panel := pGetServerTime; + 6: t_panel := pCustomClass; + 7: t_panel := pRaiseError; + else + t_panel := pStress; + end; + t_panel.Parent := pPage; + t_panel.Visible := True; + + if clbTests.ItemIndex = 0 then begin + RunTestOnceButton.Caption := 'Run Stress Test'; + RunTestButton.Caption := 'Stop Stress Test'; + RunTestOnceButton.Hint := 'Run Stress Test'; + RunTestButton.Hint := 'Stop Stress Test'; + end + else begin + RunTestOnceButton.Caption := 'Run Test once'; + RunTestButton.Caption := 'Run Test'; + RunTestOnceButton.Hint := 'Starts the chosen test once'; + RunTestButton.Hint := 'Starts the chosen test some times'; + end; +end; + +procedure TMegaDemoClientMainForm.RunTestOnceButtonClick(Sender: TObject); +var + serv: IMegaDemoService; + s: string; +begin + s := ''; + if clbTests.ItemIndex > 0 then begin + clbTests.Checked[clbTests.ItemIndex] := True; + serv := CreateService; + WriteTestInfo(True); + Screen.Cursor := crHourGlass; + end; + try + try + case clbTests.ItemIndex of + 0: RunAllDemo; + 1: begin + RunSum(serv); + s := 'Sum'; + end; + 2: begin + RunEchoPerson(serv); + s := 'EchoPerson'; + end; + 3: begin + RunTestArrays(serv); + s := 'TestArrays'; + end; + 4: begin + RunEchoBinary(serv); + s := 'EchoBinary'; + end; + 5: begin + RunServerTime(serv); + s := 'ServerTime'; + end; + 6: begin + RunCustomClass(serv); + s := 'CustomClass'; + end; + 7: begin + RunRaiseError(serv); + S := 'RaiseError'; + end; + end; + finally + {$IFNDEF NO_INDY} + if fChannel = ROIndySuperHttpChannel then ROIndySuperHttpChannel.Active:=False; + if fChannel = ROIndySuperTCPChannel then ROIndySuperTCPChannel.Active:=False; + {$ENDIF} + {$IFNDEF NO_SYNAPSE} + if fChannel = ROSynapseSuperHttpChannel then ROSynapseSuperHttpChannel.Active:=False; + if fChannel = ROSynapseSuperTCPChannel then ROSynapseSuperTCPChannel.Active:=False; + {$ENDIF} + end; + finally + if clbTests.ItemIndex > 0 then Screen.Cursor := crDefault; + end; + if (s <> '') and not cbEnableLog.Checked then Log(s + ':'#9'Done', True); +end; + +procedure TMegaDemoClientMainForm.RunAllDemo; +var + i: integer; + trd: TStressThread; +begin + Beep; + if ( + (seRepetitions.Value > 10) and + (MessageDlg(msgWarningPorts, mtWarning, [mbOK, mbCancel], 0) <> mrOK) + ) then + Exit; + + Screen.Cursor := crHourGlass; + cbEnableLog.Checked := FALSE; + fTerminateTest := FALSE; + MegaDemoClientMainForm.CreateService; + // Makes sure UserChannel and UserMessage are set. The threads will reference them in their constructor + WriteTestInfo(False); + try + Log(Format('Sum test:'#9#9 + '%s', [BoolToStr(clbTests.Checked[1], TRUE)]), TRUE); + Log(Format('EchoPerson test:'#9 + '%s', [BoolToStr(clbTests.Checked[2], TRUE)]), TRUE); + // Log('RaiseError test:'#9+'%s', [BoolToStr(clbTests.Checked[3], TRUE)], -1, TRUE); + Log(Format('Array test:'#9#9 + '%s (%d items)', [BoolToStr(clbTests.Checked[4], TRUE), seArrayCount.Value]), TRUE); + Log(Format('EchoBinary test:'#9 + '%s (%d bytes)', [BoolToStr(clbTests.Checked[5], TRUE), seBinSize.Value]), TRUE); + Log(Format('GetServerTime test:'#9 + '%s', [BoolToStr(clbTests.Checked[6], TRUE)]), TRUE); + Log(Format('CustomClass test:'#9 + '%s (Use XML=%s)', [BoolToStr(clbTests.Checked[7], TRUE), BoolToStr(rbXML.Checked, TRUE)]), TRUE); + + Log('', TRUE); + Log('Starting mega test'); + Log('', TRUE); + + for i := 1 to seThreads.Value do begin + trd := TStressThread.Create; + trd.idx := fThreads.Add(trd); + end; + + Caption := Application.Title + Format(' (%d threads running)', [fThreads.Count]); + + fMegaTestStart := GetTickCount; + for i := 0 to seThreads.Value - 1 do + TStressThread(fThreads[i]).Suspended := False; + finally + // Screen.Cursor := crDefault; + end; +end; + +procedure TMegaDemoClientMainForm.StopAllDemo; +var + i: integer; +begin + fCritical.Enter; + try + for i := 0 to (fThreads.Count - 1) do + TThread(fThreads[i]).Terminate; + finally + fCritical.Leave; + end; +end; + +procedure TMegaDemoClientMainForm.RunTestButtonClick(Sender: TObject); +begin + Screen.Cursor := crHourGlass; + try + if clbTests.ItemIndex > 0 then + clbTests.Checked[clbTests.ItemIndex] := True; + case clbTests.ItemIndex of + 0: StopAllDemo; + 1: Stress(RunSum); + 2: Stress(RunEchoPerson); + 3: Stress(RunTestArrays); + 4: Stress(RunEchoBinary); + 5: Stress(RunServerTime); + 6: Stress(RunCustomClass); + 7: Stress(RunRaiseError); + end; + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TMegaDemoClientMainForm.FormShow(Sender: TObject); +begin + pagecontrol2.Visible := False; + clbTests.ItemIndex := 1; + clbTests.OnClick(clbTests); + cbHTTPURLChange(cbHTTPURL); +end; + +procedure TMegaDemoClientMainForm.clbTestsClickCheck(Sender: TObject); +begin + Check_ListBoxClick(clbTests.ItemIndex = 0); +end; + +procedure TMegaDemoClientMainForm.Check_ListBoxClick(isAllDemo: Boolean); + + procedure SetMode(AMode: Boolean); + var + i: integer; + begin + for i := 1 to clbTests.Items.Count - 2 do + clbTests.Checked[i] := AMode; + end; + +var + i: integer; + iChecked, iUnChecked: byte; +begin + if not isAllDemo then begin + iChecked := 0; + iUnChecked := 0; + for i := 1 to clbTests.Items.Count - 2 do begin + if clbTests.Checked[i] then + inc(iChecked) + else + inc(iUnChecked); + end; + if iChecked = 0 then + clbTests.State[0] := cbUnchecked + else if iUnChecked = 0 then + clbTests.State[0] := cbChecked + else + clbTests.State[0] := cbGrayed; + end + else begin + case clbTests.State[0] of + cbUnchecked: SetMode(False); + cbChecked: SetMode(True); + end; + end; +end; + +function TMegaDemoClientMainForm.int_RunTestArrays(aService: IMegaDemoService; + anArrayType: TArrayType): integer; +begin + Result := InvokeTestArray(aService, anArrayType, seArrayCount.Value); +end; + +procedure TMegaDemoClientMainForm.Log(const aMessage: string; + Force: boolean); +begin + if cbEnableLog.Checked or Force then Memo.Lines.Add(AMessage); +end; + +procedure TMegaDemoClientMainForm.LoadFromIni; +var + i: integer; +begin + with TINIFile.Create(ChangeFileExt(Application.EXEName, '.ini')) do try + + with cbTCPIP do begin + ReadSectionValues('IPs', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + with cbHTTPURL do begin + ReadSectionValues('HTTP Urls', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + with cbTCPPort do begin + ReadSectionValues('Ports', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + with cbSuperTCPIP do begin + ReadSectionValues('Super IPs', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + with cbSuperHTTPURL do begin + ReadSectionValues('Super HTTP Urls', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + with cbSuperTCPPort do begin + ReadSectionValues('Super Ports', Items); + for i := 0 to (Items.Count - 1) do + Items[i] := Items.Values[Items.Names[i]]; + end; + + + cbHTTPURL.Text := ReadString('Misc', 'HTTP URL', 'http://localhost:8099/bin'); + cbHTTPURLChange(nil); + + cbSuperHTTPURL.Text := ReadString('Misc', 'Super HTTP URL', 'http://localhost:8098/bin'); + cbSuperHTTPURLChange(nil); + + eServerID.Text := ReadString('Misc', 'Server ID', '{E46A5995-2260-44EA-AC60-121ADB4CC2D0}'); + + cbTCPIP.Text := ReadString('Misc', 'TCP Address', '127.0.0.1'); + cbTCPPort.Text := ReadString('Misc', 'TCP Port', '8090'); + + cbSuperTCPIP.Text := ReadString('Misc', 'Super TCP Address', '127.0.0.1'); + cbSuperTCPPort.Text := ReadString('Misc', 'Super TCP Port', '8095'); + + rbWinInetHttp.Checked := ReadBool('Misc', 'WinINet HTTP', TRUE); + rbIndyHttp.Checked := ReadBool('Misc', 'Indy HTTP', FALSE); + rbSynapseHttp.Checked := ReadBool('Misc', 'Synapse HTTP', False); + + rbIndySuperTCP.Checked := ReadBool('Misc', 'IndySuperTCP', TRUE); + rbSynapseSuperTCP.Checked := ReadBool('Misc', 'SynapseSuperTCP', TRUE); + + rbIndySuperHTTP.Checked := ReadBool('Misc', 'IndySuperHTTP', TRUE); + rbSynapseSuperHTTP.Checked := ReadBool('Misc', 'SynapseSuperHTTP', TRUE); + + cbKeepConnection.Checked := ReadBool('Misc', 'Keep Connection', FALSE); + cbDisableNagle.Checked := ReadBool('Misc', 'Disable Nagle', FALSE); + cbEncrypt.Checked := ReadBool('Misc', 'Encryption Communication', FALSE); + cbEncryptClick(cbEncrypt); + cb_UseEnvelopes.Checked := ReadBool('Misc', 'Use Message Envelopes', FALSE); + cb_UseEnvelopesClick(cb_UseEnvelopes); + seThreads.Value := ReadInteger('Misc', 'Threads', 5); + seRepetitions.Value := ReadInteger('Misc', 'Repetitions', 10); + + cbWriteTestInfo.Checked := ReadBool('Misc', 'Write Test Info', True); + rbXML.Checked := ReadBool('Misc', 'CustomClass as XML', FALSE); + rbStream.Checked := not rbXML.Checked; + cbEnableLog.Checked := ReadBool('Misc', 'Enable Log', TRUE); + cbVerbose.Checked := ReadBool('Misc', 'Verbose', True); + clbTests.Checked[1] := ReadBool('Misc', 'Test Sum', TRUE); + clbTests.Checked[2] := ReadBool('Misc', 'Test EchoPerson', TRUE); + clbTests.Checked[3] := ReadBool('Misc', 'Test TestArrays', TRUE); + clbTests.Checked[4] := ReadBool('Misc', 'Test EchoBinary', TRUE); + clbTests.Checked[5] := ReadBool('Misc', 'Test GetServerTime', TRUE); + clbTests.Checked[6] := ReadBool('Misc', 'Test CustomClass', TRUE); + clbTests.Checked[7] := ReadBool('Misc', 'Test RaiseError', TRUE); + Check_ListBoxClick(False); + finally + Free; + end; +end; + +procedure TMegaDemoClientMainForm.SaveToIni; +var + i: integer; +begin + with TINIFile.Create(ChangeFileExt(Application.EXEName, '.ini')) do try + + with cbTCPIP do begin + for i := 0 to (Items.Count - 1) do + WriteString('IPs', IntToStr(i), Items[i]); + end; + + with cbHTTPURL do + for i := 0 to (Items.Count - 1) do + WriteString('HTTP Urls', IntToStr(i), Items[i]); + + with cbTCPPort do + for i := 0 to (Items.Count - 1) do + WriteString('Ports', IntToStr(i), Items[i]); + + with cbSuperTCPIP do begin + for i := 0 to (Items.Count - 1) do + WriteString('Super IPs', IntToStr(i), Items[i]); + end; + + with cbSuperHTTPURL do + for i := 0 to (Items.Count - 1) do + WriteString('Super HTTP Urls', IntToStr(i), Items[i]); + + with cbSuperTCPPort do + for i := 0 to (Items.Count - 1) do + WriteString('Super Ports', IntToStr(i), Items[i]); + + WriteString('Misc', 'HTTP URL', cbHTTPURL.Text); + WriteString('Misc', 'Super HTTP URL', cbSuperHTTPURL.Text); + WriteString('Misc', 'Server ID', eServerID.Text); + WriteString('Misc', 'TCP Address', cbTCPIP.Text); + WriteString('Misc', 'TCP Port', cbTCPPort.Text); + WriteString('Misc', 'Super TCP Address', cbSuperTCPIP.Text); + WriteString('Misc', 'Super TCP Port', cbSuperTCPPort.Text); + + WriteBool('Misc', 'Indy HTTP', rbIndyHttp.Checked); + WriteBool('Misc', 'WinINet HTTP', rbWinInetHttp.Checked); + WriteBool('Misc', 'Synapse HTTP', rbSynapseHttp.Checked); + + WriteBool('Misc', 'IndySuperTCP', rbIndySuperTCP.Checked); + WriteBool('Misc', 'SynapseSuperTCP', rbSynapseSuperTCP.Checked); + + WriteBool('Misc', 'IndySuperHTTP', rbIndySuperHttp.Checked); + WriteBool('Misc', 'SynapseSuperHTTP', rbSynapseSuperHttp.Checked); + + + WriteBool('Misc', 'Keep Connection', cbKeepConnection.Checked); + WriteBool('Misc', 'Disable Nagle', cbDisableNagle.Checked); + WriteBool('Misc', 'Encryption Communication', cbEncrypt.Checked); + WriteBool('Misc', 'Use Message Envelopes', cb_UseEnvelopes.Checked); + + WriteInteger('Misc', 'Threads', seThreads.Value); + WriteInteger('Misc', 'Repetitions', seRepetitions.Value); + + WriteBool('Misc', 'Write Test Info', cbWriteTestInfo.Checked); + WriteBool('Misc', 'CustomClass as XML', rbXML.Checked); + WriteBool('Misc', 'Enable Log', cbEnableLog.Checked); + WriteBool('Misc', 'Verbose', cbVerbose.Checked); + WriteBool('Misc', 'Test Sum', clbTests.Checked[1]); + WriteBool('Misc', 'Test EchoPerson', clbTests.Checked[2]); + WriteBool('Misc', 'Test TestArrays', clbTests.Checked[3]); + WriteBool('Misc', 'Test EchoBinary', clbTests.Checked[4]); + WriteBool('Misc', 'Test GetServerTime', clbTests.Checked[5]); + WriteBool('Misc', 'Test CustomClass', clbTests.Checked[6]); + WriteBool('Misc', 'Test RaiseError', clbTests.Checked[7]); + finally + Free; + end; +end; + +procedure TMegaDemoClientMainForm.rbIndyHttpClick(Sender: TObject); +begin + cbKeepConnection.Enabled := rbWinInetHttp.Checked; + cbKeepConnection.Checked := rbWinInetHttp.Checked; +end; + +procedure TMegaDemoClientMainForm.rbXmlRpcClick(Sender: TObject); +begin + ChangeUrl('xmlrpc'); +end; + +procedure TMegaDemoClientMainForm.cbAutoDetectClick(Sender: TObject); +begin + if rbBinary.Checked then rbBinaryClick(rbBinary) + else if rbPost.Checked then rbPostClick(rbPost) + else if rbXMLRpc.Checked then rbXmlRpcClick(rbXMLRpc) + else rbSOAPClick(rbSOAP); +end; + +procedure TMegaDemoClientMainForm.cbSuperHTTPURLChange(Sender: TObject); +var + s: string; +begin + s:= cbSuperHTTPURL.Text; + if Pos('/bin', s) > 0 then + rbBinary.Checked := true + else if Pos('/soap', s) > 0 then + rbSoap.Checked := true + else if Pos('/post', s) > 0 then + rbPost.Checked := true + else if Pos('/xmlrpc', s) > 0 then + rbXmlRpc.Checked := true; + cbUseCompression.Enabled := rbBinary.Checked; +end; + +procedure TMegaDemoClientMainForm.pgChannelsChange(Sender: TObject); +begin + cbAutoDetect.Enabled := (pgChannels.ActivePage = tsHttp) or (pgChannels.ActivePage = tsSuperHTTP); +end; + +procedure TMegaDemoClientMainForm.cb_UseEnvelopesClick(Sender: TObject); + + procedure SetupMessage(AMessage: TROMessage); + var + i: integer; + begin + with AMessage.Envelopes do + for i:=0 to Count -1 do + Items[i].Enabled := cb_UseEnvelopes.Checked; + end; + +begin + SetupMessage(BINMessage); + SetupMessage(SOAPMessage); + SetupMessage(PostMessage); + SetupMessage(XmlRpcMessage); +end; + +procedure TMegaDemoClientMainForm.ROAESEncryptionEnvelopeBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); +begin + case aMode of + memIncoming: Log(AMessageEnvelope.Name+' : processing incoming message'); + memOutgoing: Log(AMessageEnvelope.Name+' : processing outgoing message'); + end; +end; + +procedure TMegaDemoClientMainForm.ROZeroConfBrowserServiceAdded( + Sender: TROZeroConfBrowser; aRecord: TROZeroConfService); +var + strPort: string; +begin + if aRecord.TryResolve then begin + strPort := IntToStr(aRecord.Port); + if IsServiceHTTP(aRecord) then begin + Log('Discovered http server at host ' + aRecord.HostTarget + ' port ' + + strPort); + cbHTTPURL.Text := 'http://' + AnsiLowerCase(aRecord.HostTarget) + ':' + + strPort + '/bin'; + cbSuperHTTPURL.Text := cbHTTPURL.Text; + end + else begin + Log('Discovered tcp server at host ' + aRecord.HostTarget + ' port ' + + strPort); + cbTCPIP.Text := aRecord.IP4Address; + cbTCPPort.Text := strPort; + cbSuperTCPIP.Text := aRecord.IP4Address; + cbSuperTCPPort.Text := strPort; + end; + end; +end; + +procedure TMegaDemoClientMainForm.ROZeroConfBrowserServiceRemoved( + Sender: TROZeroConfBrowser; aRecord: TROZeroConfService); +begin + if IsServiceHTTP(aRecord) then + Log('HTTP server at host ' + aRecord.HostTarget + ' port ' + + IntToStr(aRecord.Port) + ' is down') + else Log('TCP server at host ' + aRecord.HostTarget + ' port ' + + IntToStr(aRecord.Port) + ' is down'); +end; + +procedure TMegaDemoClientMainForm.bClearLogClick(Sender: TObject); +begin + Memo.Clear; +end; + +initialization + CoInitializeEx(nil, COINIT_MULTITHREADED); +finalization + CoUninitialize; +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoCustomClass.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoCustomClass.pas new file mode 100644 index 0000000..11ddc62 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoCustomClass.pas @@ -0,0 +1,60 @@ +unit MegaDemoCustomClass; + +interface + +uses uROTypes; + +type + TCustomClass = class(TROComplexType) + private + FRandomInt: integer; + fRandomDouble: double; + FRandomStr: Ansistring; + FRandomWideStr: widestring; + public + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property RandomInt: integer read FRandomInt write FRandomInt; + property RandomDouble: double read FRandomDouble write FRandomDouble; + property RandomStr: Ansistring read FRandomStr write FRandomStr; + property RandomWideStr: Widestring read FRandomWideStr write FRandomWideStr; + end; + +function NewCustomClass: TCustomClass; + +implementation +uses SysUtils, uROSerializer, typInfo; + +function NewCustomClass: TCustomClass; +begin + result := TCustomClass.Create; + Result.RandomInt := Random(1000); + Result.RandomDouble := Random * 1000; + Result.RandomStr := AnsiString(IntToStr(Random(1000))) + '(ansistring)'; + Result.RandomWideStr := IntToStr(Random(1000)) + '(widestring)'; +end; + +{ TCustomClass } + +procedure TCustomClass.ReadComplex(ASerializer: TObject); +begin + TROSerializer(ASerializer).ReadInteger('RandomInt',otULong,FRandomInt); + TROSerializer(ASerializer).ReadDouble('RandomDouble',ftDouble,FRandomDouble); + TROSerializer(ASerializer).ReadUTF8String('RandomStr',FRandomStr); + TROSerializer(ASerializer).ReadWideString('RandomWideStr',FRandomWideStr); +end; + +procedure TCustomClass.WriteComplex(ASerializer: TObject); +begin + TROSerializer(ASerializer).WriteInteger('RandomInt',otULong,FRandomInt); + TROSerializer(ASerializer).WriteDouble('RandomDouble',ftDouble,FRandomDouble); + TROSerializer(ASerializer).WriteUTF8String('RandomStr',FRandomStr); + TROSerializer(ASerializer).WriteWideString('RandomWideStr',FRandomWideStr); +end; + +initialization + RegisterROClass(TCustomClass); + Randomize; +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.bdsproj new file mode 100644 index 0000000..2b99f74 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MegaDemoISAPI.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dpr new file mode 100644 index 0000000..9bad5d7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dpr @@ -0,0 +1,32 @@ +library MegaDemoISAPI; + +{#ROGEN:MegaDemoLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + ActiveX, + ComObj, + WebBroker, + ISAPIApp, + MegaDemoISAPIMain in 'MegaDemoISAPIMain.pas' {MegaDemoISAPIMainForm: TROWebModule}, + MegaDemoLibrary_Intf in 'MegaDemoLibrary_Intf.pas', + MegaDemoLibrary_Invk in 'MegaDemoLibrary_Invk.pas', + MegaDemoService_Impl in 'MegaDemoService_Impl.pas' {MegaService: TDARemoteService}; + +{$R *.RES} +{$R RODLFile.RES} // RemObjects: Careful, do not remove! + +{ + Important note: if you have Delphi 6 you should add the unit ISAPIThreadPool to the above list +} + +exports + GetExtensionVersion, + HttpExtensionProc, + TerminateExtension; + +begin + CoInitFlags := COINIT_MULTITHREADED; + Application.Initialize; + Application.CreateForm(TMegaDemoISAPIMainForm, MegaDemoISAPIMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dproj new file mode 100644 index 0000000..67831a5 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.dproj @@ -0,0 +1,83 @@ + + + {b81cfbe2-60d0-4759-8f98-a2be7944b6f0} + MegaDemoISAPI.dpr + Debug + AnyCPU + DCC32 + MegaDemoISAPI.dll + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MegaDemoISAPI.dpr + + + + + + + MainSource + + +
    MegaDemoISAPIMainForm
    +
    + + + +
    MegaService
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.res new file mode 100644 index 0000000..55f8742 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPI.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.dfm new file mode 100644 index 0000000..6c42bf7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.dfm @@ -0,0 +1,104 @@ +object MegaDemoISAPIMainForm: TMegaDemoISAPIMainForm + OldCreateOrder = False + Actions = <> + Left = 38 + Top = 65533 + Height = 305 + Width = 271 + object WebBrokerServer: TROWebBrokerServer + Active = True + Dispatchers = < + item + Name = 'ROSOAPMessage' + Message = ROSOAPMessage + Enabled = True + PathInfo = '/SOAP' + end + item + Name = 'ROBINMessage' + Message = ROBINMessage + Enabled = True + PathInfo = '/BIN' + end + item + Name = 'ROPostMessage' + Message = ROPostMessage + Enabled = True + PathInfo = '/POST' + end + item + Name = 'ROXmlRpcMessage' + Message = ROXmlRpcMessage + Enabled = True + PathInfo = '/XMLRPC' + end + item + Name = 'ROServerMultiMessage' + Message = ROServerMultiMessage + Enabled = True + PathInfo = '/' + end> + Left = 48 + Top = 8 + end + object ROAESEncryptionEnvelope: TROAESEncryptionEnvelope + EnvelopeMarker = 'AES' + Password = 'All work and no play makes Jack a dull boy.' + Left = 40 + Top = 120 + end + object ROServerMultiMessage: TROServerMultiMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + SupportedMessages = < + item + Message = ROBINMessage + end + item + Message = ROSOAPMessage + end + item + Message = ROPostMessage + end + item + Message = ROXmlRpcMessage + end> + Left = 43 + Top = 73 + end + object ROPostMessage: TROPostMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 71 + Top = 73 + end + object ROBINMessage: TROBinMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 99 + Top = 73 + end + object ROSOAPMessage: TROSOAPMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + SerializationOptions = [xsoWriteMultiRefArray, xsoWriteMultiRefObject] + Left = 128 + Top = 73 + end + object ROXmlRpcMessage: TROXmlRpcMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 157 + Top = 73 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.pas new file mode 100644 index 0000000..f448a7a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoISAPIMain.pas @@ -0,0 +1,32 @@ +unit MegaDemoISAPIMain; + +interface + +uses + SysUtils, Classes, HTTPApp, uROClient, uROClientIntf, uROBINMessage, + uROSOAPMessage, uROServer, uROWebBrokerServer, uROPostMessage, + uROXmlRpcMessage, uROEncryptionEnvelope, uROServerMultiMessage; + +type + TMegaDemoISAPIMainForm = class(TWebModule) + WebBrokerServer: TROWebBrokerServer; + ROAESEncryptionEnvelope: TROAESEncryptionEnvelope; + ROServerMultiMessage: TROServerMultiMessage; + ROPostMessage: TROPostMessage; + ROBINMessage: TROBinMessage; + ROSOAPMessage: TROSOAPMessage; + ROXmlRpcMessage: TROXmlRpcMessage; + private + + public + + end; + +var + MegaDemoISAPIMainForm: TMegaDemoISAPIMainForm; + +implementation + +{$R *.DFM} + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary.rodl new file mode 100644 index 0000000..a4ef8cb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary.rodl @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Intf.pas new file mode 100644 index 0000000..a4c19b7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Intf.pas @@ -0,0 +1,1100 @@ +unit MegaDemoLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{D9821C1A-A084-4120-93F3-BCE6CF2AE0F4}'; + TargetNamespace = ''; + + { Service Interface ID's } + IMegaDemoService_IID : TGUID = '{D9821C1A-A084-4120-93F3-BCE6CF2AE0F4}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + IMegaDemoService = interface; + + TPersonArray = class; + TIntegerArray = class; + TStringArray = class; + + TPerson = class; + + ETestException = class; + + + { Enumerateds } + TSex = (TSex_sxMale,TSex_sxFemale); + + { TPerson } + TPerson = class(TROComplexType) + private + fFirstName: AnsiString; + fLastName: AnsiString; + fAge: Integer; + fSex: TSex; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property FirstName:AnsiString read fFirstName write fFirstName; + property LastName:AnsiString read fLastName write fLastName; + property Age:Integer read fAge write fAge; + property Sex:TSex read fSex write fSex; + end; + + { TPersonCollection } + TPersonCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TPerson; + procedure SetItems(aIndex: integer; const Value: TPerson); + public + constructor Create; overload; + function Add: TPerson; reintroduce; + procedure SaveToArray(anArray: TPersonArray); + procedure LoadFromArray(anArray: TPersonArray); + property Items[Index: integer]:TPerson read GetItems write SetItems; default; + end; + + { TPersonArray } + TPersonArray_TPerson = array of TPerson; + TPersonArray = class(TROArray) + private + fCount: Integer; + fItems : TPersonArray_TPerson; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): TPerson; + procedure SetItems(aIndex: integer; const Value: TPerson); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: TPerson; overload; + function Add(const Value: TPerson):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:TPerson read GetItems write SetItems; default; + property InnerArray: TPersonArray_TPerson read fItems; + end; + + { TIntegerArray } + TIntegerArray_Integer = array of Integer; + TIntegerArray = class(TROArray) + private + fCount: Integer; + fItems : TIntegerArray_Integer; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Integer; + procedure SetItems(aIndex: integer; const Value: Integer); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Integer): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:Integer read GetItems write SetItems; default; + property InnerArray: TIntegerArray_Integer read fItems; + end; + + { TStringArray } + TStringArray_AnsiString = array of AnsiString; + TStringArray = class(TROArray) + private + fCount: Integer; + fItems : TStringArray_AnsiString; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): AnsiString; + procedure SetItems(aIndex: integer; const Value: AnsiString); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:AnsiString): integer; + function GetIndex(const aPropertyName : string; + const aPropertyValue : Variant; + StartFrom : integer = 0; + Options : TROSearchOptions = [soIgnoreCase]) : integer; override; + + property Count : integer read GetCount; + property Items[Index: integer]:AnsiString read GetItems write SetItems; default; + property InnerArray: TStringArray_AnsiString read fItems; + end; + + { Exceptions } + ETestException = class(EROException) + private + fErrorCode: Integer; + fAdditionalInfo: AnsiString; + public + constructor Create(anExceptionMessage : string; aErrorCode: Integer; aAdditionalInfo: AnsiString); + procedure ReadException(ASerializer: TObject); override; + procedure WriteException(ASerializer: TObject); override; + published + property ErrorCode: Integer read fErrorCode write fErrorCode; + property AdditionalInfo: AnsiString read fAdditionalInfo write fAdditionalInfo; + end; + + + { IMegaDemoService } + IMegaDemoService = interface + ['{D9821C1A-A084-4120-93F3-BCE6CF2AE0F4}'] + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + procedure EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); + function TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; + function TestStringArray(const anArray: TStringArray): TStringArray; + function TestPersonArray(const anArray: TPersonArray): TPersonArray; + procedure EchoBinary(const BinIN: binary; out BinOUT: Binary); + procedure SomeTypes(var aString: AnsiString; var aWidestring: Widestring; var anInteger: Integer; var aCurrency: Currency; + var aDatetime: DateTime); + function CustomObjectAsString: AnsiString; + function CustomObjectAsStream: Binary; + procedure RaiseError; + procedure RaiseTestException; + end; + + { CoMegaDemoService } + CoMegaDemoService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMegaDemoService; + end; + + { TMegaDemoService_Proxy } + TMegaDemoService_Proxy = class(TROProxy, IMegaDemoService) + protected + function __GetInterfaceName:string; override; + + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + procedure EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); + function TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; + function TestStringArray(const anArray: TStringArray): TStringArray; + function TestPersonArray(const anArray: TPersonArray): TPersonArray; + procedure EchoBinary(const BinIN: binary; out BinOUT: Binary); + procedure SomeTypes(var aString: AnsiString; var aWidestring: Widestring; var anInteger: Integer; var aCurrency: Currency; + var aDatetime: DateTime); + function CustomObjectAsString: AnsiString; + function CustomObjectAsStream: Binary; + procedure RaiseError; + procedure RaiseTestException; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ ETestException } + +constructor ETestException.Create(anExceptionMessage : string; aErrorCode: Integer; + aAdditionalInfo: AnsiString); +begin + inherited Create(anExceptionMessage); + + fErrorCode := aErrorCode; + fAdditionalInfo := aAdditionalInfo; +end; + +procedure ETestException.ReadException(ASerializer: TObject); +var + l_AdditionalInfo: AnsiString; + l_ErrorCode: Integer; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_ErrorCode := ErrorCode; + TROSerializer(ASerializer).ReadInteger('ErrorCode', otSLong, l_ErrorCode); + ErrorCode := l_ErrorCode; + l_AdditionalInfo := AdditionalInfo; + TROSerializer(ASerializer).ReadAnsiString('AdditionalInfo', l_AdditionalInfo); + AdditionalInfo := l_AdditionalInfo; + end + else begin + l_AdditionalInfo := AdditionalInfo; + TROSerializer(ASerializer).ReadAnsiString('AdditionalInfo', l_AdditionalInfo); + AdditionalInfo := l_AdditionalInfo; + l_ErrorCode := ErrorCode; + TROSerializer(ASerializer).ReadInteger('ErrorCode', otSLong, l_ErrorCode); + ErrorCode := l_ErrorCode; + end; +end; + +procedure ETestException.WriteException(ASerializer: TObject); +var + l_AdditionalInfo: AnsiString; + l_ErrorCode: Integer; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(ETestException); + l_ErrorCode := ErrorCode; + TROSerializer(ASerializer).WriteInteger('ErrorCode', otSLong, l_ErrorCode); + l_AdditionalInfo := AdditionalInfo; + TROSerializer(ASerializer).WriteAnsiString('AdditionalInfo', l_AdditionalInfo); + end + else begin + l_AdditionalInfo := AdditionalInfo; + TROSerializer(ASerializer).WriteAnsiString('AdditionalInfo', l_AdditionalInfo); + l_ErrorCode := ErrorCode; + TROSerializer(ASerializer).WriteInteger('ErrorCode', otSLong, l_ErrorCode); + end; +end; + +{ TPersonArray } + +procedure TPersonArray.Assign(iSource: TPersistent); +var lSource:TPersonArray; + i:integer; + lItem:TPerson; +begin + if (iSource is TPersonArray) then begin + lSource := TPersonArray(iSource); + Clear(); + + for i := 0 to lSource.Count-1 do + if Assigned(lSource.Items[i]) then begin + lItem := TPerson(lSource.Items[i].ClassType.Create); + lItem.Assign(lSource.Items[i]); + Add(lItem); + end + else begin + Add(nil); + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TPersonArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(TPerson); +end; + +class function TPersonArray.GetItemClass: TClass; +begin + result := TPerson; +end; + +class function TPersonArray.GetItemSize: integer; +begin + result := SizeOf(TPerson); +end; + +function TPersonArray.GetItems(aIndex: integer): TPerson; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TPersonArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure TPersonArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure TPersonArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TPersonArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure TPersonArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := TPerson.Create; + FCount := ElementCount; +end; + +function TPersonArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TPersonArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TPersonArray.Add: TPerson; +begin + result := TPerson.Create; + Add(Result); +end; + +function TPersonArray.Add(const Value:TPerson): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TPersonArray.ReadComplex(ASerializer: TObject); +var + lval: TPerson; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), TPerson, lval, i); + Items[i] := lval; + end; +end; + +procedure TPersonArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], TPerson, i); +end; + +{ TIntegerArray } + +procedure TIntegerArray.Assign(iSource: TPersistent); +var lSource:TIntegerArray; + i:integer; +begin + if (iSource is TIntegerArray) then begin + lSource := TIntegerArray(iSource); + Clear(); + + Resize(lSource.Count); + for i := 0 to lSource.Count-1 do + Items[i] := lSource.Items[i]; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TIntegerArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Integer); +end; + +class function TIntegerArray.GetItemSize: integer; +begin + result := SizeOf(Integer); +end; + +function TIntegerArray.GetItems(aIndex: integer): Integer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TIntegerArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure TIntegerArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TIntegerArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure TIntegerArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TIntegerArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TIntegerArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TIntegerArray.Add(const Value: Integer): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function TIntegerArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure TIntegerArray.ReadComplex(ASerializer: TObject); +var + lval: Integer; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i); + Items[i] := lval; + end; +end; + +procedure TIntegerArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i); +end; + +{ TStringArray } + +procedure TStringArray.Assign(iSource: TPersistent); +var lSource:TStringArray; + i:integer; +begin + if (iSource is TStringArray) then begin + lSource := TStringArray(iSource); + Clear(); + + Resize(lSource.Count); + for i := 0 to lSource.Count-1 do + Items[i] := lSource.Items[i]; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TStringArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(AnsiString); +end; + +class function TStringArray.GetItemSize: integer; +begin + result := SizeOf(AnsiString); +end; + +function TStringArray.GetItems(aIndex: integer): AnsiString; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TStringArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure TStringArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TStringArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + fItems[aIndex] := Value; +end; + +procedure TStringArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TStringArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TStringArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TStringArray.Add(const Value: AnsiString): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +function TStringArray.GetIndex(const aPropertyName: string; + const aPropertyValue: Variant; StartFrom: integer; + Options: TROSearchOptions): integer; +begin + result := -1; +end; + +procedure TStringArray.ReadComplex(ASerializer: TObject); +var + lval: AnsiString; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadAnsiString(GetArrayElementName(GetItemType, GetItemRef(i)), lval, i); + Items[i] := lval; + end; +end; + +procedure TStringArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteAnsiString(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], i); +end; + +{ TPerson } + +procedure TPerson.Assign(iSource: TPersistent); +var lSource: MegaDemoLibrary_Intf.TPerson; +begin + inherited Assign(iSource); + if (iSource is MegaDemoLibrary_Intf.TPerson) then begin + lSource := MegaDemoLibrary_Intf.TPerson(iSource); + FirstName := lSource.FirstName; + LastName := lSource.LastName; + Age := lSource.Age; + Sex := lSource.Sex; + end; +end; + +procedure TPerson.ReadComplex(ASerializer: TObject); +var + l_Age: Integer; + l_FirstName: AnsiString; + l_LastName: AnsiString; + l_Sex: TSex; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_FirstName := FirstName; + TROSerializer(ASerializer).ReadAnsiString('FirstName', l_FirstName); + FirstName := l_FirstName; + l_LastName := LastName; + TROSerializer(ASerializer).ReadAnsiString('LastName', l_LastName); + LastName := l_LastName; + l_Age := Age; + TROSerializer(ASerializer).ReadInteger('Age', otSLong, l_Age); + Age := l_Age; + l_Sex := Sex; + TROSerializer(ASerializer).ReadEnumerated('Sex',TypeInfo(TSex), l_Sex); + Sex := l_Sex; + end + else begin + l_Age := Age; + TROSerializer(ASerializer).ReadInteger('Age', otSLong, l_Age); + Age := l_Age; + l_FirstName := FirstName; + TROSerializer(ASerializer).ReadAnsiString('FirstName', l_FirstName); + FirstName := l_FirstName; + l_LastName := LastName; + TROSerializer(ASerializer).ReadAnsiString('LastName', l_LastName); + LastName := l_LastName; + l_Sex := Sex; + TROSerializer(ASerializer).ReadEnumerated('Sex',TypeInfo(TSex), l_Sex); + Sex := l_Sex; + end; +end; + +procedure TPerson.WriteComplex(ASerializer: TObject); +var + l_Age: Integer; + l_FirstName: AnsiString; + l_LastName: AnsiString; + l_Sex: TSex; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TPerson); + l_FirstName := FirstName; + TROSerializer(ASerializer).WriteAnsiString('FirstName', l_FirstName); + l_LastName := LastName; + TROSerializer(ASerializer).WriteAnsiString('LastName', l_LastName); + l_Age := Age; + TROSerializer(ASerializer).WriteInteger('Age', otSLong, l_Age); + l_Sex := Sex; + TROSerializer(ASerializer).WriteEnumerated('Sex',TypeInfo(TSex), l_Sex); + end + else begin + l_Age := Age; + TROSerializer(ASerializer).WriteInteger('Age', otSLong, l_Age); + l_FirstName := FirstName; + TROSerializer(ASerializer).WriteAnsiString('FirstName', l_FirstName); + l_LastName := LastName; + TROSerializer(ASerializer).WriteAnsiString('LastName', l_LastName); + l_Sex := Sex; + TROSerializer(ASerializer).WriteEnumerated('Sex',TypeInfo(TSex), l_Sex); + end; +end; + +{ TPersonCollection } +constructor TPersonCollection.Create; +begin + inherited Create(TPerson); +end; + +constructor TPersonCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TPersonCollection.Add: TPerson; +begin + result := TPerson(inherited Add); +end; + +function TPersonCollection.GetItems(aIndex: integer): TPerson; +begin + result := TPerson(inherited Items[aIndex]); +end; + +procedure TPersonCollection.LoadFromArray(anArray: TPersonArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + anArray[i].Clone.Collection := Self; +end; + +procedure TPersonCollection.SaveToArray(anArray: TPersonArray); +var i : integer; +begin + anArray.Clear; + for i := 0 to (Count-1) do begin + if Assigned(Items[i]) then + anArray.Add(TPerson(Items[i].Clone)) + else + anArray.Add(nil); + end; +end; + +procedure TPersonCollection.SetItems(aIndex: integer; const Value: TPerson); +begin + TPerson(inherited Items[aIndex]).Assign(Value); +end; + +{ CoMegaDemoService } + +class function CoMegaDemoService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMegaDemoService; +begin + result := TMegaDemoService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMegaDemoService_Proxy } + +function TMegaDemoService_Proxy.__GetInterfaceName:string; +begin + result := 'MegaDemoService'; +end; + +function TMegaDemoService_Proxy.Sum(const A: Integer; const B: Integer): Integer; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'Sum'); + __Message.Write('A', TypeInfo(Integer), A, []); + __Message.Write('B', TypeInfo(Integer), B, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.GetServerTime: DateTime; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'GetServerTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TMegaDemoService_Proxy.EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + anotherPerson := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'EchoPerson'); + __Message.Write('aPerson', TypeInfo(MegaDemoLibrary_Intf.TPerson), aPerson, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('anotherPerson', TypeInfo(MegaDemoLibrary_Intf.TPerson), anotherPerson, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'TestIntegerArray'); + __Message.Write('anArray', TypeInfo(MegaDemoLibrary_Intf.TIntegerArray), anArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(MegaDemoLibrary_Intf.TIntegerArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.TestStringArray(const anArray: TStringArray): TStringArray; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'TestStringArray'); + __Message.Write('anArray', TypeInfo(MegaDemoLibrary_Intf.TStringArray), anArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(MegaDemoLibrary_Intf.TStringArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.TestPersonArray(const anArray: TPersonArray): TPersonArray; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'TestPersonArray'); + __Message.Write('anArray', TypeInfo(MegaDemoLibrary_Intf.TPersonArray), anArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(MegaDemoLibrary_Intf.TPersonArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TMegaDemoService_Proxy.EchoBinary(const BinIN: binary; out BinOUT: Binary); +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + BinOUT := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'EchoBinary'); + __Message.Write('BinIN', TypeInfo(binary), BinIN, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('BinOUT', TypeInfo(Binary), BinOUT, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TMegaDemoService_Proxy.SomeTypes(var aString: AnsiString; var aWidestring: Widestring; var anInteger: Integer; var aCurrency: Currency; + var aDatetime: DateTime); +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'SomeTypes'); + __Message.Write('aString', TypeInfo(AnsiString), aString, []); + __Message.Write('aWidestring', TypeInfo(Widestring), aWidestring, []); + __Message.Write('anInteger', TypeInfo(Integer), anInteger, []); + __Message.Write('aCurrency', TypeInfo(Currency), aCurrency, []); + __Message.Write('aDatetime', TypeInfo(DateTime), aDatetime, [paIsDateTime]); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('aString', TypeInfo(AnsiString), aString, []); + __Message.Read('aWidestring', TypeInfo(Widestring), aWidestring, []); + __Message.Read('anInteger', TypeInfo(Integer), anInteger, []); + __Message.Read('aCurrency', TypeInfo(Currency), aCurrency, []); + __Message.Read('aDatetime', TypeInfo(DateTime), aDatetime, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.CustomObjectAsString: AnsiString; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'CustomObjectAsString'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TMegaDemoService_Proxy.CustomObjectAsStream: Binary; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'CustomObjectAsStream'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TMegaDemoService_Proxy.RaiseError; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'RaiseError'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TMegaDemoService_Proxy.RaiseTestException; +begin + __Message.SetAttributes(__TransportChannel, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'RaiseTestException'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TPerson); + RegisterROClass(TPersonArray); + RegisterROClass(TIntegerArray); + RegisterROClass(TStringArray); + RegisterExceptionClass(ETestException); + RegisterProxyClass(IMegaDemoService_IID, TMegaDemoService_Proxy); + + +finalization + UnregisterROClass(TPerson); + UnregisterROClass(TPersonArray); + UnregisterROClass(TIntegerArray); + UnregisterROClass(TStringArray); + UnregisterExceptionClass(ETestException); + UnregisterProxyClass(IMegaDemoService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Invk.pas new file mode 100644 index 0000000..c95972e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoLibrary_Invk.pas @@ -0,0 +1,374 @@ +unit MegaDemoLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} MegaDemoLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TMegaDemoService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EchoPerson(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_TestIntegerArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_TestStringArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_TestPersonArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EchoBinary(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SomeTypes(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_CustomObjectAsString(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_CustomObjectAsStream(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_RaiseError(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_RaiseTestException(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TMegaDemoService_Invoker } + +constructor TMegaDemoService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TMegaDemoService_Invoker.Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Sum(const A: Integer; const B: Integer): Integer; } +var + A: Integer; + B: Integer; + lResult: Integer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.Read('A', TypeInfo(Integer), A, []); + __Message.Read('B', TypeInfo(Integer), B, []); + + lResult := (__Instance as IMegaDemoService).Sum(A, B); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'SumResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetServerTime: DateTime; } +var + lResult: DateTime; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + lResult := (__Instance as IMegaDemoService).GetServerTime; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'GetServerTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_EchoPerson(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); } +var + aPerson: MegaDemoLibrary_Intf.TPerson; + anotherPerson: MegaDemoLibrary_Intf.TPerson; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + aPerson := nil; + anotherPerson := nil; + try + __Message.Read('aPerson', TypeInfo(MegaDemoLibrary_Intf.TPerson), aPerson, []); + + (__Instance as IMegaDemoService).EchoPerson(aPerson, anotherPerson); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'EchoPersonResponse'); + __Message.Write('anotherPerson', TypeInfo(MegaDemoLibrary_Intf.TPerson), anotherPerson, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aPerson); + __lObjectDisposer.Add(anotherPerson); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_TestIntegerArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; } +var + anArray: MegaDemoLibrary_Intf.TIntegerArray; + lResult: MegaDemoLibrary_Intf.TIntegerArray; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + anArray := nil; + lResult := nil; + try + __Message.Read('anArray', TypeInfo(MegaDemoLibrary_Intf.TIntegerArray), anArray, []); + + lResult := (__Instance as IMegaDemoService).TestIntegerArray(anArray); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'TestIntegerArrayResponse'); + __Message.Write('Result', TypeInfo(MegaDemoLibrary_Intf.TIntegerArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(anArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_TestStringArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function TestStringArray(const anArray: TStringArray): TStringArray; } +var + anArray: MegaDemoLibrary_Intf.TStringArray; + lResult: MegaDemoLibrary_Intf.TStringArray; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + anArray := nil; + lResult := nil; + try + __Message.Read('anArray', TypeInfo(MegaDemoLibrary_Intf.TStringArray), anArray, []); + + lResult := (__Instance as IMegaDemoService).TestStringArray(anArray); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'TestStringArrayResponse'); + __Message.Write('Result', TypeInfo(MegaDemoLibrary_Intf.TStringArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(anArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_TestPersonArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function TestPersonArray(const anArray: TPersonArray): TPersonArray; } +var + anArray: MegaDemoLibrary_Intf.TPersonArray; + lResult: MegaDemoLibrary_Intf.TPersonArray; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + anArray := nil; + lResult := nil; + try + __Message.Read('anArray', TypeInfo(MegaDemoLibrary_Intf.TPersonArray), anArray, []); + + lResult := (__Instance as IMegaDemoService).TestPersonArray(anArray); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'TestPersonArrayResponse'); + __Message.Write('Result', TypeInfo(MegaDemoLibrary_Intf.TPersonArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(anArray); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_EchoBinary(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure EchoBinary(const BinIN: binary; out BinOUT: Binary); } +var + BinIN: binary; + BinOUT: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + BinIN := nil; + BinOUT := nil; + try + __Message.Read('BinIN', TypeInfo(binary), BinIN, []); + + (__Instance as IMegaDemoService).EchoBinary(BinIN, BinOUT); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'EchoBinaryResponse'); + __Message.Write('BinOUT', TypeInfo(Binary), BinOUT, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(BinIN); + __lObjectDisposer.Add(BinOUT); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_SomeTypes(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure SomeTypes(var aString: AnsiString; var aWidestring: Widestring; var anInteger: Integer; var aCurrency: Currency; + var aDatetime: DateTime); } +var + aString: AnsiString; + aWidestring: Widestring; + anInteger: Integer; + aCurrency: Currency; + aDatetime: DateTime; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + __Message.Read('aString', TypeInfo(AnsiString), aString, []); + __Message.Read('aWidestring', TypeInfo(Widestring), aWidestring, []); + __Message.Read('anInteger', TypeInfo(Integer), anInteger, []); + __Message.Read('aCurrency', TypeInfo(Currency), aCurrency, []); + __Message.Read('aDatetime', TypeInfo(DateTime), aDatetime, [paIsDateTime]); + + (__Instance as IMegaDemoService).SomeTypes(aString, aWidestring, anInteger, aCurrency, aDatetime); + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'SomeTypesResponse'); + __Message.Write('aString', TypeInfo(AnsiString), aString, []); + __Message.Write('aWidestring', TypeInfo(Widestring), aWidestring, []); + __Message.Write('anInteger', TypeInfo(Integer), anInteger, []); + __Message.Write('aCurrency', TypeInfo(Currency), aCurrency, []); + __Message.Write('aDatetime', TypeInfo(DateTime), aDatetime, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_CustomObjectAsString(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function CustomObjectAsString: AnsiString; } +var + lResult: AnsiString; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + lResult := (__Instance as IMegaDemoService).CustomObjectAsString; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'CustomObjectAsStringResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_CustomObjectAsStream(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function CustomObjectAsStream: Binary; } +var + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + lResult := nil; + try + lResult := (__Instance as IMegaDemoService).CustomObjectAsStream; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'CustomObjectAsStreamResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_RaiseError(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure RaiseError; } +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + (__Instance as IMegaDemoService).RaiseError; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'RaiseErrorResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TMegaDemoService_Invoker.Invoke_RaiseTestException(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure RaiseTestException; } +begin + __Message.SetAttributes(__Transport, ['EA_Model'], + ['C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap']); + try + (__Instance as IMegaDemoService).RaiseTestException; + + __Message.InitializeResponseMessage(__Transport, 'MegaDemoLibrary', 'MegaDemoService', 'RaiseTestExceptionResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization + RegisterServiceAttribute('','EA_Model','C:\Dev\ROSDK3\Tests\MegaDemo\NewLibrary.eap'); +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.bdsproj new file mode 100644 index 0000000..d1cbdcd --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MegaDemoServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.cfg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.cfg new file mode 100644 index 0000000..4c2816a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.cfg @@ -0,0 +1,38 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dof b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dof new file mode 100644 index 0000000..1a07019 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dof @@ -0,0 +1,132 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1043 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dpr new file mode 100644 index 0000000..d611779 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dpr @@ -0,0 +1,22 @@ +program MegaDemoServer; + +{#ROGEN:MegaDemoLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + MegaDemoServerMain in 'MegaDemoServerMain.pas' {MegaDemoServerMainForm}, + MegaDemoCustomClass in 'MegaDemoCustomClass.pas', + MegaDemoLibrary_Intf in 'MegaDemoLibrary_Intf.pas', + MegaDemoLibrary_Invk in 'MegaDemoLibrary_Invk.pas', + MegaDemoService_Impl in 'MegaDemoService_Impl.pas' {MegaService: TDARemoteService}; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'RemObjects MegaDemo Server'; + Application.CreateForm(TMegaDemoServerMainForm, MegaDemoServerMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dproj new file mode 100644 index 0000000..5a3f78c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.dproj @@ -0,0 +1,48 @@ + + + {f8cc3de2-12be-48eb-b46d-815b9569e1af} + MegaDemoServer.dpr + Debug + AnyCPU + DCC32 + MegaDemoServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + +FalseTrueFalseTrueFalse1000FalseFalseFalseFalseFalse105812511.0.0.01.0.0.0MegaDemoServer.dpr + + + + + MainSource + + + + + +
    MegaDemoServerMainForm
    +
    + +
    MegaService
    +
    +
    +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.res new file mode 100644 index 0000000..b0dd731 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.dfm new file mode 100644 index 0000000..c1af618 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.dfm @@ -0,0 +1,1140 @@ +object MegaDemoServerMainForm: TMegaDemoServerMainForm + Left = 271 + Top = 212 + BorderStyle = bsDialog + Caption = 'RemObjects SDK - Mega Demo Server' + ClientHeight = 450 + ClientWidth = 744 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 496 + Top = 397 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object Memo: TMemo + Left = 460 + Top = 12 + Width = 279 + Height = 350 + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 8 + end + object cbUseCompression: TCheckBox + Left = 10 + Top = 427 + Width = 155 + Height = 17 + Caption = '&Compress Binary messages' + Checked = True + State = cbChecked + TabOrder = 5 + OnClick = cbUseCompressionClick + end + object gbHTTP: TGroupBox + Left = 7 + Top = 7 + Width = 450 + Height = 90 + Caption = ' HTTP Server ' + TabOrder = 0 + object Label1: TLabel + Left = 8 + Top = 24 + Width = 22 + Height = 13 + Caption = '&Port:' + FocusControl = seHTTPPort + end + object Label5: TLabel + Left = 8 + Top = 68 + Width = 393 + Height = 13 + Caption = + 'Message: The HTTP Server can support multiple message formats at' + + ' the same time' + end + object Label13: TLabel + Left = 99 + Top = 24 + Width = 62 + Height = 13 + Alignment = taRightJustify + AutoSize = False + Caption = 'Component:' + end + object seHTTPPort: TSpinEdit + Left = 36 + Top = 21 + Width = 53 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 8099 + end + object bActivateHTTP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = '&Activate' + TabOrder = 3 + OnClick = bActivateHTTPClick + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00A7632F811E0081 + 1E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00D8 + B69CE6D1BFE7D3C4811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00D8AF96F4E2CFF0D7BDD8A784811E00811E00FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00E7BB92E3B081E0A672D5925A811E00FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF811E00811E00811E00811E00811E00811E00FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object bDeactivateHTTP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = 'Deactivate' + TabOrder = 4 + Visible = False + OnClick = bDeactivateHTTPClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object Panel2: TPanel + Left = 168 + Top = 23 + Width = 177 + Height = 17 + BevelOuter = bvNone + TabOrder = 1 + object rbBpdxHttp: TRadioButton + Left = 0 + Top = 0 + Width = 57 + Height = 17 + Caption = 'DXSock' + TabOrder = 0 + end + object RbIndyHttp: TRadioButton + Left = 60 + Top = 0 + Width = 45 + Height = 17 + Caption = 'Indy' + Checked = True + TabOrder = 1 + TabStop = True + end + object rbSynapseHttp: TRadioButton + Left = 104 + Top = 0 + Width = 65 + Height = 17 + Caption = 'Synapse' + TabOrder = 2 + end + end + object cb_SupportKeepAlive: TCheckBox + Left = 104 + Top = 41 + Width = 169 + Height = 17 + Caption = 'Support HTTP 1.1 KeepAlive' + Checked = True + State = cbChecked + TabOrder = 2 + OnClick = cb_SupportKeepAliveClick + end + end + object gbTCP: TGroupBox + Left = 7 + Top = 175 + Width = 450 + Height = 80 + Caption = ' TCP Server ' + TabOrder = 2 + object Label3: TLabel + Left = 8 + Top = 24 + Width = 22 + Height = 13 + Caption = '&Port:' + FocusControl = seHTTPPort + end + object Label6: TLabel + Left = 8 + Top = 52 + Width = 46 + Height = 13 + Caption = 'Message:' + end + object Label8: TLabel + Left = 99 + Top = 24 + Width = 62 + Height = 13 + Alignment = taRightJustify + AutoSize = False + Caption = 'Component:' + end + object seTCPPort: TSpinEdit + Left = 36 + Top = 22 + Width = 53 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 8090 + end + object bActivateTCP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = '&Activate' + TabOrder = 4 + OnClick = bActivateTCPClick + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00A7632F811E0081 + 1E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00D8 + B69CE6D1BFE7D3C4811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00D8AF96F4E2CFF0D7BDD8A784811E00811E00FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00E7BB92E3B081E0A672D5925A811E00FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF811E00811E00811E00811E00811E00811E00FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object cbTCPMsg: TComboBox + Left = 62 + Top = 49 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + OnChange = cbTCPMsgChange + end + object bDeactivateTCP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = 'Deactivate' + TabOrder = 5 + Visible = False + OnClick = bDeactivateTCPClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object Panel1: TPanel + Left = 168 + Top = 23 + Width = 182 + Height = 17 + BevelOuter = bvNone + TabOrder = 1 + object rbBpdxTcp: TRadioButton + Left = 0 + Top = 0 + Width = 57 + Height = 17 + Caption = 'DXSock' + TabOrder = 0 + end + object RbIndyTcp: TRadioButton + Left = 60 + Top = 0 + Width = 45 + Height = 17 + Caption = 'Indy' + Checked = True + TabOrder = 1 + TabStop = True + end + object rbSynapseTCP: TRadioButton + Left = 104 + Top = 0 + Width = 65 + Height = 17 + Caption = 'Synapse' + TabOrder = 2 + end + end + object cbDisableNagle: TCheckBox + Left = 240 + Top = 51 + Width = 161 + Height = 17 + Caption = 'Disable &Nagle for Indy Server' + TabOrder = 3 + OnClick = cbDisableNagleClick + end + end + object gbWinMsg: TGroupBox + Left = 7 + Top = 343 + Width = 450 + Height = 81 + Caption = ' WinMessage Server ' + TabOrder = 4 + object Label4: TLabel + Left = 10 + Top = 24 + Width = 48 + Height = 13 + Caption = 'Server ID:' + end + object Label7: TLabel + Left = 10 + Top = 52 + Width = 46 + Height = 13 + Caption = 'Message:' + end + object eServerID: TEdit + Left = 64 + Top = 21 + Width = 281 + Height = 21 + TabOrder = 0 + Text = 'eServerID' + end + object bActivateWinMsg: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = '&Activate' + TabOrder = 2 + OnClick = bActivateWinMsgClick + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00A7632F811E0081 + 1E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00D8 + B69CE6D1BFE7D3C4811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00D8AF96F4E2CFF0D7BDD8A784811E00811E00FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00E7BB92E3B081E0A672D5925A811E00FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF811E00811E00811E00811E00811E00811E00FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object cbWinMsgMsg: TComboBox + Left = 64 + Top = 49 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + OnChange = cbWinMsgMsgChange + end + object bDeactivateWinMsg: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = 'Deactivate' + TabOrder = 3 + Visible = False + OnClick = bDeactivateWinMsgClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + end + object cb_Encrypt: TCheckBox + Left = 172 + Top = 427 + Width = 129 + Height = 17 + Caption = 'Encrypt communication' + TabOrder = 6 + OnClick = cb_EncryptClick + end + object cbVerbose: TCheckBox + Left = 460 + Top = 371 + Width = 97 + Height = 17 + Caption = 'Verbose' + Checked = True + State = cbChecked + TabOrder = 10 + end + object ErrorMemo: TMemo + Left = 460 + Top = 12 + Width = 279 + Height = 350 + Alignment = taCenter + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -25 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Lines.Strings = ( + '' + '' + '' + '' + '' + 'Please activate at ' + 'least one server!') + ParentFont = False + TabOrder = 9 + end + object gbSuperHTTP: TGroupBox + Left = 7 + Top = 101 + Width = 450 + Height = 70 + Caption = ' Super HTTP Server ' + TabOrder = 1 + object Label2: TLabel + Left = 8 + Top = 24 + Width = 22 + Height = 13 + Caption = '&Port:' + FocusControl = seSuperHTTPPort + end + object Label9: TLabel + Left = 8 + Top = 47 + Width = 424 + Height = 13 + Caption = + 'Message: The Super HTTP Server can support multiple message form' + + 'ats at the same time' + end + object Label10: TLabel + Left = 99 + Top = 24 + Width = 62 + Height = 13 + Alignment = taRightJustify + AutoSize = False + Caption = 'Component:' + end + object seSuperHTTPPort: TSpinEdit + Left = 36 + Top = 21 + Width = 53 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 8098 + end + object bActivateSuperHTTP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = '&Activate' + TabOrder = 2 + OnClick = bActivateSuperHTTPClick + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00A7632F811E0081 + 1E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00D8 + B69CE6D1BFE7D3C4811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00D8AF96F4E2CFF0D7BDD8A784811E00811E00FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00E7BB92E3B081E0A672D5925A811E00FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF811E00811E00811E00811E00811E00811E00FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object bDeactivateSuperHTTP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = 'Deactivate' + TabOrder = 3 + Visible = False + OnClick = bDeactivateSuperHTTPClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object Panel3: TPanel + Left = 168 + Top = 23 + Width = 129 + Height = 17 + BevelOuter = bvNone + TabOrder = 1 + object rbSynapseSuperHttp: TRadioButton + Left = 0 + Top = 0 + Width = 65 + Height = 17 + Caption = 'Synapse' + Checked = True + TabOrder = 0 + TabStop = True + end + end + end + object gbSuperTcp: TGroupBox + Left = 7 + Top = 259 + Width = 450 + Height = 80 + Caption = ' Super TCP Server ' + TabOrder = 3 + object Label11: TLabel + Left = 8 + Top = 24 + Width = 22 + Height = 13 + Caption = '&Port:' + FocusControl = seSuperHTTPPort + end + object Label12: TLabel + Left = 8 + Top = 52 + Width = 46 + Height = 13 + Caption = 'Message:' + end + object Label14: TLabel + Left = 99 + Top = 24 + Width = 62 + Height = 13 + Alignment = taRightJustify + AutoSize = False + Caption = 'Component:' + end + object seSuperTCPPort: TSpinEdit + Left = 36 + Top = 22 + Width = 53 + Height = 22 + MaxValue = 0 + MinValue = 0 + TabOrder = 0 + Value = 8095 + end + object bActivateSuperTcp: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = '&Activate' + TabOrder = 3 + OnClick = bActivateSuperTCPClick + Glyph.Data = { + 36030000424D3603000000000000360000002800000010000000100000000100 + 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FF811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00 + 811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00811E00811E00FF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF811E0095440F811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00A7632F811E0081 + 1E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF811E00BF8B62CCA17E811E00811E00FF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00D8 + B69CE6D1BFE7D3C4811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FF811E00F0E2D9FCF7F2FAF0E6811E00811E + 00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00D8AF96F4E2CFF0D7BDD8A784811E00811E00FF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FF811E00F3DECAEFD4B8EBC9A7DAA67D811E00FF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF81 + 1E00E7BB92E3B081E0A672D5925A811E00FF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF811E00DA995ED78F50D38441CF7B + 35811E00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FF811E00811E00811E00811E00811E00811E00FF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + end + object cbSuperTCPMsg: TComboBox + Left = 62 + Top = 49 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + OnChange = cbSuperTCPMsgChange + end + object bDeactivateSuperTCP: TBitBtn + Left = 357 + Top = 14 + Width = 83 + Height = 25 + Caption = 'Deactivate' + TabOrder = 4 + Visible = False + OnClick = bDeactivateSuperTCPClick + Glyph.Data = { + 36060000424D3606000000000000360000002800000020000000100000000100 + 18000000000000060000C40E0000C40E00000000000000000000FF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A174AFD103BF400009AFF00FFFF00FFFF00FFFF00FF00009A002CF80030 + FC00009AFF00FFFF00FFFF00FFFF00FF6B6B6BA8A8A8A0A0A06B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6B9A9A9A9C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A1A47F81A4CFF123BF100009AFF00FFFF00FF00009A012DF60132FF002A + F300009AFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7AAAAAA9F9F9F6B6B6BFF + 00FFFF00FF6B6B6B9999999E9E9E9797976B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A1C47F61B4DFF143EF400009A00009A002DF80134FF032BF20000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ABABABA2A2A26B + 6B6B6B6B6B9A9A9A9E9E9E9898986B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A1D48F61D50FF103DFB0431FE0132FF002CF600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7ACACACA3 + A3A39F9F9F9E9E9E9999996B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A1A48F91342FF0C3CFF0733F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BA7A7A7A7 + A7A7A3A3A39C9C9C6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FF00009A214EFC1D4BFF1847FF1743F600009AFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BACACACAC + ACACA9A9A9A4A4A46B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FF00009A2E5BF92C5FFF224DF8204BF82355FF1B46F600009AFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB1B1B1B3B3B3AB + ABABAAAAAAAFAFAFA6A6A66B6B6BFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FF00009A3664FA386BFF2D59F400009A00009A224CF42558FF1D49F60000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6BB6B6B6B9B9B9AEAEAE6B + 6B6B6B6B6BA9A9A9B0B0B0A7A7A76B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + 00009A4071FA4274FF325DF100009AFF00FFFF00FF00009A224DF1275AFF204C + F800009AFF00FFFF00FFFF00FFFF00FF6B6B6BBBBBBBBEBEBEAFAFAF6B6B6BFF + 00FFFF00FF6B6B6BA7A7A7B1B1B1AAAAAA6B6B6BFF00FFFF00FFFF00FFFF00FF + 00009A497AFC3B66F300009AFF00FFFF00FFFF00FFFF00FF00009A2550F42655 + FA00009AFF00FFFF00FFFF00FFFF00FF6B6B6BC0C0C0B5B5B56B6B6BFF00FFFF + 00FFFF00FFFF00FF6B6B6BAAAAAAAEAEAE6B6B6BFF00FFFF00FFFF00FFFF00FF + FF00FF00009A00009AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF00009A0000 + 9AFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FF6B6B6B6B6B6BFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF + FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 + FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF + 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} + NumGlyphs = 2 + end + object Panel4: TPanel + Left = 168 + Top = 23 + Width = 129 + Height = 17 + BevelOuter = bvNone + TabOrder = 1 + object rbSynapseSuperTcp: TRadioButton + Left = 0 + Top = 0 + Width = 65 + Height = 17 + Caption = 'Synapse' + TabOrder = 0 + end + object rbIndySuperTCP: TRadioButton + Left = 68 + Top = 0 + Width = 41 + Height = 17 + Caption = 'Indy' + Checked = True + TabOrder = 1 + TabStop = True + end + end + end + object bClearLog: TButton + Left = 664 + Top = 367 + Width = 75 + Height = 25 + Caption = 'Clear Log' + TabOrder = 11 + OnClick = bClearLogClick + end + object cb_UseEnvelopes: TCheckBox + Left = 307 + Top = 427 + Width = 149 + Height = 17 + Caption = 'Use message envelopes' + TabOrder = 7 + OnClick = cb_UseEnvelopesClick + end + object ROBINMessage: TROBinMessage + OnInitializeMessage = MessageInitializeMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 563 + Top = 25 + end + object WinMessageServer: TROWinMessageServer + Encryption.EncryptionSendKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Encryption.EncryptionRecvKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Dispatchers = < + item + Name = 'ROBINMessage' + Message = ROBINMessage + Enabled = True + end> + OnAfterServerActivate = WinMessageServerAfterServerActivate + OnAfterServerDeactivate = WinMessageServerAfterServerDeactivate + ServerID = '{E46A5995-2260-44EA-AC60-121ADB4CC2D0}' + Left = 608 + Top = 312 + end + object ROSOAPMessage: TROSOAPMessage + OnInitializeMessage = MessageInitializeMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + SerializationOptions = [xsoWriteMultiRefArray, xsoWriteMultiRefObject] + Left = 592 + Top = 25 + end + object BpdxTcpServer: TROBPDXTCPServer + Encryption.EncryptionSendKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Encryption.EncryptionRecvKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Dispatchers = < + item + Name = 'ROBINMessage' + Message = ROBINMessage + Enabled = True + end> + OnAfterServerActivate = TcpServerAfterServerActivate + OnAfterServerDeactivate = TcpServerAfterServerDeactivate + BPDXServer.ReleaseDate = '2002-09-01' + BPDXServer.ListenerThreadPriority = tpIdle + BPDXServer.SpawnedThreadPriority = tpIdle + BPDXServer.Suspend = False + BPDXServer.UseSSL = False + BPDXServer.UseThreadPool = True + BPDXServer.ServerPort = 8090 + BPDXServer.ProtocolToBind = wpTCPOnly + BPDXServer.SocketOutputBufferSize = bsfNormal + BPDXServer.ServerType = stThreadBlocking + BPDXServer.ThreadCacheSize = 1000 + Port = 8090 + Left = 576 + Top = 312 + end + object BpdxHttpServer: TROBPDXHTTPServer + Encryption.EncryptionSendKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Encryption.EncryptionRecvKey = 'CDB4E624C47EF40C26DCE65F70E6F3ABC03B6AD4FC0B064985F180A46895F064' + Dispatchers = < + item + Name = 'ROBINMessage' + Message = ROBINMessage + Enabled = True + PathInfo = '/BIN' + end + item + Name = 'ROSOAPMessage' + Message = ROSOAPMessage + Enabled = True + PathInfo = '/SOAP' + end + item + Name = 'ROPostMessage' + Message = ROPostMessage + Enabled = True + PathInfo = '/POST' + end + item + Name = 'ROXmlRpcMessage' + Message = ROXmlRpcMessage + Enabled = True + PathInfo = '/XMLRPC' + end + item + Name = 'ROServerMultiMessage' + Message = ROServerMultiMessage + Enabled = True + PathInfo = '/' + end + item + Name = 'ROJSONMessage' + Message = ROJSONMessage + Enabled = True + PathInfo = 'JSON' + end> + OnAfterServerActivate = HttpServerAfterServerActivate + OnAfterServerDeactivate = HttpServerAfterServerDeactivate + BPDXServer.ReleaseDate = '2002-09-01' + BPDXServer.ListenerThreadPriority = tpIdle + BPDXServer.SpawnedThreadPriority = tpIdle + BPDXServer.Suspend = False + BPDXServer.UseSSL = False + BPDXServer.UseThreadPool = True + BPDXServer.ServerPort = 8099 + BPDXServer.ProtocolToBind = wpTCPOnly + BPDXServer.SocketOutputBufferSize = bsfNormal + BPDXServer.ServerType = stThreadBlocking + BPDXServer.ThreadCacheSize = 1000 + BPDXServer.Timeout = 50000 + BPDXServer.SupportKeepAlive = True + Port = 8099 + SupportKeepAlive = True + Left = 544 + Top = 312 + end + object ROPostMessage: TROPostMessage + OnInitializeMessage = MessageInitializeMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 535 + Top = 25 + end + object ROServerMultiMessage: TROServerMultiMessage + OnInitializeMessage = MessageInitializeMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + SupportedMessages = < + item + Message = ROBINMessage + end + item + Message = ROSOAPMessage + end + item + Message = ROPostMessage + end + item + Message = ROXmlRpcMessage + end> + Left = 507 + Top = 25 + end + object ROXmlRpcMessage: TROXmlRpcMessage + OnInitializeMessage = MessageInitializeMessage + Envelopes = < + item + Envelope = ROAESEncryptionEnvelope + end> + Left = 621 + Top = 25 + end + object ROAESEncryptionEnvelope: TROAESEncryptionEnvelope + EnvelopeMarker = 'AES' + BeforeEnvelopeProcessed = ROAESEncryptionEnvelopeBeforeEnvelopeProcessed + Password = 'All work and no play makes Jack a dull boy.' + Left = 504 + Top = 72 + end + object ROJSONMessage: TROJSONMessage + Envelopes = <> + Left = 536 + Top = 56 + end + object HTTPZeroConfRegistration: TROZeroConfRegistration + RegistrationFailed = HTTPZeroConfRegistrationRegistrationFailed + RegistrationSucceeded = HTTPZeroConfRegistrationRegistrationSucceeded + Left = 576 + Top = 216 + end + object TCPZeroConfRegistration: TROZeroConfRegistration + RegistrationFailed = TCPZeroConfRegistrationRegistrationFailed + RegistrationSucceeded = TCPZeroConfRegistrationRegistrationSucceeded + Left = 576 + Top = 264 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.pas new file mode 100644 index 0000000..fc5cde6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoServerMain.pas @@ -0,0 +1,781 @@ +unit MegaDemoServerMain; + +{ Activate this define if you are using the demo without having Indy installed. } +{.$DEFINE NO_INDY} + +{ Activate this define if you are using the demo without having Synapse installed. } +{.$DEFINE NO_Synapse} +{$INCLUDE RemObjects.inc} + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, Spin, Buttons, ExtCtrls, SyncObjs, + +{$IFNDEF NO_INDY} + IdBaseComponent, IdComponent, + IdTCPServer, IdHTTPServer, uROIndyTCPServer, uROIndyHTTPServer, uROSuperTCPServer, + {$IFDEF RemObjects_INDY10}IdContext,{$ENDIF} + +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + uROIpSuperHttpServer,uROSynapseSuperTCPServer,uROIpHttpServer,uROIpTcpServer, +{$ENDIF} + uROClient, uROBINMessage, uROClientIntf, uROServer, + uROBPDXHTTPServer, uROBPDXTCPServer, uROPoweredByRemObjectsButton, + uROSOAPMessage, uROWinMessageServer, uROEncryption, + uROPostMessage, uROServerMultiMessage, uROXmlRpcMessage, + uROEncryptionEnvelope, uROJSONMessage, uROZeroConf; + +const + WM_LOG_MESSAGE = WM_APP + 1; + +type + TMegaDemoServerMainForm = class(TForm) + ROBINMessage: TROBinMessage; + Memo: TMemo; + cbUseCompression: TCheckBox; + WinMessageServer: TROWinMessageServer; + ROSOAPMessage: TROSOAPMessage; + gbHTTP: TGroupBox; + gbTCP: TGroupBox; + gbWinMsg: TGroupBox; + Label1: TLabel; + seHTTPPort: TSpinEdit; + seTCPPort: TSpinEdit; + Label4: TLabel; + eServerID: TEdit; + bActivateHTTP: TBitBtn; + bActivateTCP: TBitBtn; + bActivateWinMsg: TBitBtn; + cbWinMsgMsg: TComboBox; + Label3: TLabel; + Label6: TLabel; + cbTCPMsg: TComboBox; + Label7: TLabel; + BpdxTcpServer: TROBPDXTCPServer; + BpdxHttpServer: TROBPDXHTTPServer; + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + Label5: TLabel; + bDeactivateWinMsg: TBitBtn; + bDeactivateTCP: TBitBtn; + bDeactivateHTTP: TBitBtn; + Label13: TLabel; + Panel2: TPanel; + rbBpdxHttp: TRadioButton; + RbIndyHttp: TRadioButton; + Panel1: TPanel; + rbBpdxTcp: TRadioButton; + RbIndyTcp: TRadioButton; + Label8: TLabel; + cb_Encrypt: TCheckBox; + cb_SupportKeepAlive: TCheckBox; + cbDisableNagle: TCheckBox; + cbVerbose: TCheckBox; + ROPostMessage: TROPostMessage; + ErrorMemo: TMemo; + ROServerMultiMessage: TROServerMultiMessage; + ROXmlRpcMessage: TROXmlRpcMessage; + gbSuperHTTP: TGroupBox; + Label2: TLabel; + Label9: TLabel; + Label10: TLabel; + seSuperHTTPPort: TSpinEdit; + bActivateSuperHTTP: TBitBtn; + bDeactivateSuperHTTP: TBitBtn; + Panel3: TPanel; + rbSynapseSuperHttp: TRadioButton; + gbSuperTcp: TGroupBox; + Label11: TLabel; + Label12: TLabel; + Label14: TLabel; + seSuperTCPPort: TSpinEdit; + bActivateSuperTcp: TBitBtn; + cbSuperTCPMsg: TComboBox; + bDeactivateSuperTCP: TBitBtn; + Panel4: TPanel; + rbSynapseSuperTcp: TRadioButton; + rbIndySuperTCP: TRadioButton; + rbSynapseHttp: TRadioButton; + rbSynapseTCP: TRadioButton; + bClearLog: TButton; + cb_UseEnvelopes: TCheckBox; + ROAESEncryptionEnvelope: TROAESEncryptionEnvelope; + ROJSONMessage: TROJSONMessage; + HTTPZeroConfRegistration: TROZeroConfRegistration; + TCPZeroConfRegistration: TROZeroConfRegistration; + procedure FormCreate(Sender: TObject); + procedure HttpServerAfterServerActivate(Sender: TObject); + procedure HttpServerAfterServerDeactivate(Sender: TObject); + procedure cbUseCompressionClick(Sender: TObject); + procedure bActivateHTTPClick(Sender: TObject); + procedure bActivateTCPClick(Sender: TObject); + procedure bActivateWinMsgClick(Sender: TObject); + procedure cbTCPMsgChange(Sender: TObject); + procedure cbWinMsgMsgChange(Sender: TObject); + procedure bDeactivateHTTPClick(Sender: TObject); + procedure bDeactivateTCPClick(Sender: TObject); + procedure bDeactivateWinMsgClick(Sender: TObject); + procedure TcpServerAfterServerActivate(Sender: TObject); + procedure TcpServerAfterServerDeactivate(Sender: TObject); + procedure WinMessageServerAfterServerDeactivate(Sender: TObject); + procedure WinMessageServerAfterServerActivate(Sender: TObject); + procedure cb_EncryptClick(Sender: TObject); + procedure cb_SupportKeepAliveClick(Sender: TObject); + procedure cbDisableNagleClick(Sender: TObject); + procedure MessageInitializeMessage(Sender: TROMessage; + const aTransport: IROTransport; const anInterfaceName, + aMessageName: String); + procedure cbSuperTCPMsgChange(Sender: TObject); + procedure bDeactivateSuperTCPClick(Sender: TObject); + procedure bActivateSuperTCPClick(Sender: TObject); + procedure SuperTcpServerAfterServerActivate(Sender: TObject); + procedure SuperTcpServerAfterServerDeactivate(Sender: TObject); + procedure SuperHttpServerAfterServerActivate(Sender: TObject); + procedure SuperHttpServerAfterServerDeactivate(Sender: TObject); + procedure bActivateSuperHTTPClick(Sender: TObject); + procedure bDeactivateSuperHTTPClick(Sender: TObject); + procedure bClearLogClick(Sender: TObject); + procedure cb_UseEnvelopesClick(Sender: TObject); + procedure ROAESEncryptionEnvelopeBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); + procedure HTTPZeroConfRegistrationRegistrationFailed( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine; + anException: Exception); + procedure HTTPZeroConfRegistrationRegistrationSucceeded( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine); + procedure TCPZeroConfRegistrationRegistrationFailed( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine; + anException: Exception); + procedure TCPZeroConfRegistrationRegistrationSucceeded( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine); + private + {$IFNDEF NO_INDY} + ROIndyHTTPServer : TROIndyHTTPServer; + ROIndyTCPServer : TROIndyTCPServer; + ROIndySuperTCPServer: TROSuperTcpServer; + {$ENDIF NO_INDY} + {$IFNDEF NO_Synapse} + ROSynapseSuperHTTPServer : TROIpSuperHttpServer; + ROSynapseSuperTCPServer : TROSynapseSuperTcpServer; + ROSynapseTCPServer : TROIpTcpServer; + ROSynapseHTTPServer : TROIpHttpServer; + {$ENDIF NO_Synapse} + + fCritical: TCriticalSection; + + procedure ActivateGroupBox(iGroupBox: TGroupBox; iActivate: boolean); + procedure CheckStatus; + protected + procedure WMLog(var Message: TMessage); message WM_LOG_MESSAGE; + + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + + procedure Log(const someText: string); + + end; + +var + MegaDemoServerMainForm: TMegaDemoServerMainForm; + +implementation + +uses MegaDemoLibrary_Intf; + +{$R *.DFM} + +procedure TMegaDemoServerMainForm.FormCreate(Sender: TObject); +begin + rbBpdxTcp.Enabled:=True; + rbBpdxHttp.Enabled:=True; +{$IFDEF NO_INDY} + rbIndyHttp.Enabled := false; + rbIndyTcp.Enabled := false; + rbIndySuperTCP.Enabled := false; +{$ELSE} + ROIndyHTTPServer := TROIndyHTTPServer.Create(Self); + ROIndyHTTPServer.Dispatchers.Assign(BpdxHttpServer.Dispatchers); + ROIndyHTTPServer.OnAfterServerActivate := HttpServerAfterServerActivate; + ROIndyHTTPServer.OnAfterServerDeactivate := HttpServerAfterServerDeactivate; + + ROIndyTCPServer := TROIndyTCPServer.Create(Self); + ROIndyTCPServer.Dispatchers.Assign(BpdxTcpServer.Dispatchers); + ROIndyTCPServer.OnAfterServerActivate := TcpServerAfterServerActivate; + ROIndyTCPServer.OnAfterServerDeactivate := TcpServerAfterServerDeactivate; + + ROIndySuperTCPServer:= TROSuperTcpServer.Create(Self); + ROIndySuperTCPServer.Dispatchers.Assign(BpdxTcpServer.Dispatchers); + ROIndySuperTCPServer.OnAfterServerActivate := SuperTcpServerAfterServerActivate; + ROIndySuperTCPServer.OnAfterServerDeactivate := SuperTcpServerAfterServerDeactivate; +{$ENDIF NO_INDY} + +{$IFDEF NO_Synapse} + rbSynapseSuperHttp.Enabled:=False; + rbSynapseSuperTcp.Enabled:=False; + rbSynapseTCP.Enabled:=False; + rbSynapseHTTP.Enabled:=False; +{$ELSE} + ROSynapseSuperHTTPServer := TROIpSuperHttpServer.Create(Self); + ROSynapseSuperHTTPServer.Dispatchers.Assign(BpdxHttpServer.Dispatchers); + ROSynapseSuperHTTPServer.OnAfterServerActivate := SuperHttpServerAfterServerActivate; + ROSynapseSuperHTTPServer.OnAfterServerDeactivate := SuperHttpServerAfterServerDeactivate; + + ROSynapseSuperTCPServer := TROSynapseSuperTcpServer.Create(Self); + ROSynapseSuperTCPServer.Dispatchers.Assign(BpdxTcpServer.Dispatchers); + ROSynapseSuperTCPServer.OnAfterServerActivate := SuperTcpServerAfterServerActivate; + ROSynapseSuperTCPServer.OnAfterServerDeactivate := SuperTcpServerAfterServerDeactivate; + + ROSynapseHTTPServer := TROIpHttpServer.Create(Self); + ROSynapseHTTPServer.Dispatchers.Assign(BpdxHttpServer.Dispatchers); + ROSynapseHTTPServer.OnAfterServerActivate := HttpServerAfterServerActivate; + ROSynapseHTTPServer.OnAfterServerDeactivate := HttpServerAfterServerDeactivate; + + ROSynapseTCPServer := TROIpTcpServer.Create(Self); + ROSynapseTCPServer.Dispatchers.Assign(BpdxTcpServer.Dispatchers); + ROSynapseTCPServer.OnAfterServerActivate := TcpServerAfterServerActivate; + ROSynapseTCPServer.OnAfterServerDeactivate := TcpServerAfterServerDeactivate; +{$ENDIF NO_Synapse} + cb_SupportKeepAliveClick(Sender); + + // Misc + WinMessageServer.ServerID := LibraryUID; + + eServerID.Text := WinMessageServer.ServerID; + + cbTCPMsg.Items.Clear; + cbTCPMsg.Items.AddObject('Auto', ROServerMultiMessage); + cbTCPMsg.Items.AddObject('Bin', ROBINMessage); + cbTCPMsg.Items.AddObject('Soap', ROSOAPMessage); + cbTCPMsg.Items.AddObject('Post', ROPOSTMessage); + cbTCPMsg.Items.AddObject('XmlRpc', ROXmlRpcMessage); + cbTCPMsg.ItemIndex := 0; + cbTCPMsgChange(cbTCPMsg); + + cbSuperTcpMsg.Items.AddStrings(cbTCPMsg.Items); + cbSuperTcpMsg.ItemIndex := 0; + cbSuperTCPMsgChange(cbSuperTcpMsg); + + + cbWinMsgMsg.Items.AddStrings(cbTCPMsg.Items); + cbWinMsgMsg.ItemIndex := 0; + cbWinMsgMsgChange(cbWinMsgMsg); + + cbUseCompressionClick(cbUseCompression); + cb_EncryptClick(cb_Encrypt); + cb_UseEnvelopesClick(cb_UseEnvelopes); + + if (ParamCount > 0) and SameText(ParamStr(1), '/activate') then begin + Application.ProcessMessages(); + bActivateHTTP.Click; + bActivateTcP.Click; + bActivateWinMsg.Click; + bActivateSuperHTTP.Click; + bActivateSuperTCP.Click; + end; + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.Log(const someText: string); +var + p: pChar; +begin + if Application.Terminated then Exit; + + if not cbVerbose.Checked then Exit; + + GetMem(p, (Length(someText) + 1)*SizeOf(Char)); + Move(someText[1], p^, (Length(someText)+ 1)*SizeOf(Char)); + PostMessage(Handle, WM_LOG_MESSAGE, 0, integer(p)); + + { Access to the VCL may only happen from within the main thread. To allow + Log to be called from within the Service implementattion, we must ensure + it's threadsafe. + + So instread of just addint the log message to the Memo, we'l send a + PostMessage to the window, which wil then later be handled within the + main thread. + + As a side benefit, the secution of the Log doe snot need to wait for this + logging to happen (as usage of, for example, Synchronize would require), + which will in turn make the server more respinsible for a simultaneous + calls. } +end; + +procedure TMegaDemoServerMainForm.WMLog(var Message: TMessage); +var + p: pChar; +begin + try + p := pChar(Message.LParam); + Memo.Lines.Add(p); + Freemem(p); + except + on E: Exception do + Memo.Lines.Add(E.Classname + ': ' + E.Message); + end; +end; + +procedure TMegaDemoServerMainForm.ActivateGroupBox(iGroupBox: TGroupBox; iActivate: boolean); +var + i, j: integer; + lPanel: TPanel; +begin + if iGroupBox <> nil then + for i := 0 to (iGroupBox.ControlCount - 1) do begin + if not (iGroupBox.Controls[i] is TBitBtn) and + not (iGroupBox.Controls[i] is TComboBox) and + not ((iGroupBox.Controls[i] is TLabel) and (TLabel(iGroupBox.Controls[i]).Caption = 'Message:')) then iGroupBox.Controls[i].Enabled := iActivate; + if (iGroupBox.Controls[i] is TPanel) then begin + lPanel := TPanel(iGroupBox.Controls[i]); + for j := 0 to (lPanel.ControlCount - 1) do begin + lPanel.Controls[j].Enabled := iActivate; + end; + end; + end; +end; + +procedure TMegaDemoServerMainForm.HttpServerAfterServerActivate(Sender: TObject); +begin + ActivateGroupBox(gbHttp, false); + Log((Sender as TComponent).ClassName + ' has been activated...'); +end; + +procedure TMegaDemoServerMainForm.HttpServerAfterServerDeactivate(Sender: TObject); +begin + ActivateGroupBox(gbHttp, true); + Log((Sender as TComponent).ClassName + ' has been deactivated...'); +end; + +procedure TMegaDemoServerMainForm.HTTPZeroConfRegistrationRegistrationFailed( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine; + anException: Exception); +begin + Log('ZeroConf registration failed for HTTP server: ' + anException.Message); +end; + +procedure TMegaDemoServerMainForm.HTTPZeroConfRegistrationRegistrationSucceeded( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine); +begin + Log('ZeroConf registration succeeded for HTTP server'); +end; + +procedure TMegaDemoServerMainForm.TcpServerAfterServerActivate(Sender: TObject); +begin + ActivateGroupBox(gbTcp, false); + Log((Sender as TComponent).ClassName + ' has been activated...'); +end; + +procedure TMegaDemoServerMainForm.TcpServerAfterServerDeactivate(Sender: TObject); +begin + ActivateGroupBox(gbTcp, true); + Log((Sender as TComponent).ClassName + ' has been deactivated...'); +end; + +procedure TMegaDemoServerMainForm.TCPZeroConfRegistrationRegistrationFailed( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine; + anException: Exception); +begin + Log('ZeroConf registration failed for TCP server: ' + anException.Message); +end; + +procedure TMegaDemoServerMainForm.TCPZeroConfRegistrationRegistrationSucceeded( + Sender: TROZeroConfRegistration; const ACurrentEngine: TROZeroConfEngine); +begin + Log('ZeroConf registration succeeded for TCP server'); +end; + +procedure TMegaDemoServerMainForm.WinMessageServerAfterServerActivate(Sender: TObject); +begin + ActivateGroupBox(gbWinMsg, false); + Log((Sender as TComponent).ClassName + ' has been activated...'); +end; + +procedure TMegaDemoServerMainForm.WinMessageServerAfterServerDeactivate(Sender: TObject); +begin + ActivateGroupBox(gbWinMsg, true); + Log((Sender as TComponent).ClassName + ' has been deactivated...'); +end; + +procedure TMegaDemoServerMainForm.cbUseCompressionClick(Sender: TObject); +begin + ROBINMessage.UseCompression := cbUseCompression.Checked; +end; + +procedure TMegaDemoServerMainForm.cbTCPMsgChange(Sender: TObject); +begin + with TComboBox(Sender) do begin +{$IFNDEF NO_INDY} + ROIndyTCPServer.Dispatchers[0].Message := TROMessage(Items.Objects[ItemIndex]); +{$ENDIF NO_INDY} +{$IFNDEF NO_SYNAPSE} + ROSynapseTCPServer.Dispatchers[0].Message := TROMessage(Items.Objects[ItemIndex]); +{$ENDIF NO_SYNAPSE} + BpdxTCPServer.Dispatchers[0].Message := TROMessage(Items.Objects[ItemIndex]); + end; +end; + +procedure TMegaDemoServerMainForm.cbWinMsgMsgChange(Sender: TObject); +begin + with TComboBox(Sender) do + WinMessageServer.Dispatchers[0].Message :=TROMessage(Items.Objects[ItemIndex]); +end; + +procedure TMegaDemoServerMainForm.bActivateTCPClick(Sender: TObject); +begin +{$IFNDEF NO_INDY} + if RbIndyTcp.Checked then begin + TCPZeroConfRegistration.Server := ROIndyTCPServer; + ROIndyTCPServer.Port := seTCPPort.Value; + ROIndyTCPServer.Active := true; + end + else +{$ENDIF NO_INDY} +{$IFNDEF NO_SYNAPSE} + if rbSynapseTCP.Checked then begin + TCPZeroConfRegistration.Server := ROSynapseTCPServer; + ROSynapseTCPServer.Port := seTCPPort.Value; + ROSynapseTCPServer.Active := true; + end + else +{$ENDIF NO_SYNAPSE} + begin + rbBpdxTcp.Checked:= True; + TCPZeroConfRegistration.Server := BpdxTCPServer; + BpdxTCPServer.BpdxServer.ServerPort := seTCPPort.Value; + BpdxTCPServer.Active := true; + bDeactivateTcp.Enabled := false; + Log('Please note that BPDX Servers cannot be deactivated once they have been activated.' + + 'This is a limitation of the BPDX Library, see the Help topic for this sample for more details.'); + end; + bDeactivateTcp.Visible := true; + bActivateTcp.Visible := false; + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bDeactivateTCPClick(Sender: TObject); +begin + bActivateTcp.Visible := true; + bDeactivateTcp.Visible := false; + + BpdxTCPServer.Active := false; +{$IFNDEF NO_INDY} + ROIndyTCPServer.Active := false; +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseTCPServer.Active := false; +{$ENDIF NO_INDY} + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bActivateHTTPClick(Sender: TObject); +begin +{$IFNDEF NO_INDY} + if RbIndyHttp.Checked then begin + HTTPZeroConfRegistration.Server := ROIndyHTTPServer; + ROIndyHTTPServer.Port := seHTTPPort.Value; + ROIndyHTTPServer.Active := true; + end + else +{$ENDIF NO_INDY} +{$IFNDEF NO_SYNAPSE} + if rbSynapseHttp.Checked then begin + HTTPZeroConfRegistration.Server := ROSynapseHTTPServer; + ROSynapseHTTPServer.Port := seHTTPPort.Value; + ROSynapseHTTPServer.Active := true; + end + else +{$ENDIF NO_SYNAPSE} + begin + rbBpdxHttp.Checked:= True; + HTTPZeroConfRegistration.Server := BpdxHTTPServer; + BpdxHTTPServer.BpdxServer.ServerPort := seHTTPPort.Value; + BpdxHTTPServer.Active := true; + bDeactivateHttp.Enabled := false; + Log('Please note that BPDX Servers cannot be deactivated once they have been activated.' + + 'This is a limitation of the BPDX Library, see the Help topic for this sample for more details.'); + end; + bDeactivateHttp.Visible := true; + bActivateHttp.Visible := false; + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bDeactivateHTTPClick(Sender: TObject); +begin + bActivateHttp.Visible := true; + bDeactivateHttp.Visible := false; + + BpdxHTTPServer.Active := false; +{$IFNDEF NO_INDY} + ROIndyHTTPServer.Active := false; +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseHTTPServer.Active := false; +{$ENDIF NO_Synapse} + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bActivateWinMsgClick(Sender: TObject); +begin + WinMessageServer.ServerID := eServerID.Text; + WinMessageServer.Active := true; + + bDeactivateWinMsg.Visible := true; + bActivateWinMsg.Visible := false; + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bDeactivateWinMsgClick(Sender: TObject); +begin + bActivateWinMsg.Visible := true; + bDeactivateWinMsg.Visible := false; + WinMessageServer.Active := false; + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.cb_EncryptClick(Sender: TObject); +var + lEncryption: TROEncryptionMethod; +begin + if cb_Encrypt.Checked then + lEncryption := tetDES + else + lEncryption := tetNone; + + BpdxHttpServer.Encryption.EncryptionMethod := lEncryption; + BpdxTcpServer.Encryption.Assign(BpdxHttpServer.Encryption); +{$IFNDEF NO_INDY} + ROIndyHttpServer.Encryption.Assign(BpdxHttpServer.Encryption); + ROIndyTcpServer.Encryption.Assign(BpdxHttpServer.Encryption); + ROIndySuperTCPServer.Encryption.Assign(BpdxHttpServer.Encryption); +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseSuperHTTPServer.Encryption.Assign(BpdxHttpServer.Encryption); + ROSynapseSuperTCPServer.Encryption.Assign(BpdxHttpServer.Encryption); + ROSynapseHTTPServer.Encryption.Assign(BpdxHttpServer.Encryption); + ROSynapseTCPServer.Encryption.Assign(BpdxHttpServer.Encryption); +{$ENDIF} + WinMessageServer.Encryption.Assign(BpdxHttpServer.Encryption); +end; + +procedure TMegaDemoServerMainForm.cb_SupportKeepAliveClick(Sender: TObject); +begin + BpdxHttpServer.SupportKeepAlive := cb_SupportKeepAlive.Checked; +{$IFNDEF NO_INDY} + ROIndyHttpServer.KeepAlive := cb_SupportKeepAlive.Checked; +{$ENDIF NO_INDY} +end; + +procedure TMegaDemoServerMainForm.cbDisableNagleClick(Sender: TObject); +begin +{$IFNDEF NO_INDY} + ROIndyTCPServer.DisableNagle := cbDisableNagle.Checked +{$ENDIF NO_INDY} +end; + +constructor TMegaDemoServerMainForm.Create(aOwner: TComponent); +begin + inherited; + fCritical := TCriticalSection.Create; +end; + +destructor TMegaDemoServerMainForm.Destroy; +begin + fCritical.Free; + inherited; +end; + +procedure TMegaDemoServerMainForm.CheckStatus; +var + fStatus: Boolean; +begin + FStatus := +{$IFNDEF NO_INDY} + ROIndyHTTPServer.Active or + ROIndyTCPServer.Active or + ROIndySuperTCPServer.Active or +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseSuperHTTPServer.Active or + ROSynapseSuperTCPServer.Active or + ROSynapseHTTPServer.Active or + ROSynapseTCPServer.Active or +{$ENDIF} + WinMessageServer.Active or + BpdxHttpServer.Active or + BpdxTcpServer.Active; + if FStatus then begin + ErrorMemo.Visible := False; + Memo.Visible := True; + end + else begin + ErrorMemo.Visible := True; + Memo.Visible := False; + end; +end; + +procedure TMegaDemoServerMainForm.MessageInitializeMessage( + Sender: TROMessage; const aTransport: IROTransport; + const anInterfaceName, aMessageName: String); +begin + Log('Request via '+Sender.ClassName); +end; + +procedure TMegaDemoServerMainForm.cbSuperTCPMsgChange(Sender: TObject); +begin + with TComboBox(Sender) do begin +{$IFNDEF NO_INDY} + ROIndySuperTCPServer.Dispatchers[0].Message := TROMessage(Items.Objects[ItemIndex]); +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseSuperTCPServer.Dispatchers[0].Message := TROMessage(Items.Objects[ItemIndex]); +{$ENDIF NO_Synapse} + end; +end; + +procedure TMegaDemoServerMainForm.bDeactivateSuperTCPClick( + Sender: TObject); +begin + bActivateSuperTcp.Visible := true; + bDeactivateSuperTcp.Visible := false; +{$IFNDEF NO_INDY} + ROIndySuperTCPServer.Active := false; +{$ENDIF NO_INDY} +{$IFNDEF NO_Synapse} + ROSynapseSuperTCPServer.Active := false; +{$ENDIF NO_Synapse} + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bActivateSuperTCPClick( + Sender: TObject); +var + fServer: TROServer; +begin + fServer:=nil; +{$IFDEF NO_Synapse} + rbIndySuperTCP.Checked:= True; +{$ENDIF} +{$IFNDEF NO_INDY} + if rbIndySuperTCP.Checked then begin + TCPZeroConfRegistration.Server := ROIndySuperTCPServer; + ROIndySuperTCPServer.Port := seSuperTCPPort.Value; + fServer := ROIndySuperTCPServer; + end; +{$ELSE} + rbSynapseSuperTcp.Checked := True; +{$ENDIF NO_INDY} + +{$IFNDEF NO_Synapse} + if rbSynapseSuperTcp.Checked then begin + TCPZeroConfRegistration.Server := ROSynapseSuperTCPServer; + ROSynapseSuperTCPServer.Port := seSuperTCPPort.Value; + fServer := ROSynapseSuperTCPServer; + end; +{$ENDIF} + if Assigned(fServer) then begin + fServer.Active:= True; + bDeactivateSuperTcp.Visible := true; + bActivateSuperTcp.Visible := false; + CheckStatus; + end + else begin + ShowMessage('No Super TCP servers was found.'+sLineBreak+ + 'Please use Indy or Synapse library.'); + end; +end; + +procedure TMegaDemoServerMainForm.SuperTcpServerAfterServerActivate( + Sender: TObject); +begin + ActivateGroupBox(gbSuperTcp, false); + Log((Sender as TComponent).ClassName + ' has been activated...'); +end; + +procedure TMegaDemoServerMainForm.SuperTcpServerAfterServerDeactivate( + Sender: TObject); +begin + ActivateGroupBox(gbSuperTcp, true); + Log((Sender as TComponent).ClassName + ' has been deactivated...'); +end; + +procedure TMegaDemoServerMainForm.SuperHttpServerAfterServerActivate( + Sender: TObject); +begin + ActivateGroupBox(gbSuperHTTP, false); + Log((Sender as TComponent).ClassName + ' has been activated...'); +end; + +procedure TMegaDemoServerMainForm.SuperHttpServerAfterServerDeactivate( + Sender: TObject); +begin + ActivateGroupBox(gbSuperHTTP, true); + Log((Sender as TComponent).ClassName + ' has been deactivated...'); +end; + +procedure TMegaDemoServerMainForm.bActivateSuperHTTPClick(Sender: TObject); +begin +{$IFNDEF NO_Synapse} + HTTPZeroConfRegistration.Server := ROSynapseSuperHTTPServer; + ROSynapseSuperHTTPServer.Port := seSuperHTTPPort.Value; + ROSynapseSuperHTTPServer.Active := true; + bDeactivateSuperHttp.Visible := true; + bActivateSuperHttp.Visible := false; + CheckStatus; +{$ELSE} + ShowMessage('No Super HTTP servers was found.'+sLineBreak+ + 'Please use Synapse library.'); +{$ENDIF} +end; + +procedure TMegaDemoServerMainForm.bDeactivateSuperHTTPClick( + Sender: TObject); +begin + bActivateSuperHttp.Visible := true; + bDeactivateSuperHttp.Visible := false; + +{$IFNDEF NO_Synapse} + ROSynapseSuperHTTPServer.Active := false; +{$ENDIF} + CheckStatus; +end; + +procedure TMegaDemoServerMainForm.bClearLogClick(Sender: TObject); +begin + Memo.Lines.Clear; +end; + +procedure TMegaDemoServerMainForm.cb_UseEnvelopesClick(Sender: TObject); + + procedure SetupMessage(AMessage: TROMessage); + var + i: integer; + begin + with AMessage.Envelopes do + for i:=0 to Count -1 do + Items[i].Enabled := cb_UseEnvelopes.Checked; + end; + +begin + SetupMessage(ROServerMultiMessage); + SetupMessage(ROBINMessage); + SetupMessage(ROSOAPMessage); + SetupMessage(ROPostMessage); + SetupMessage(ROXmlRpcMessage); +end; + +procedure TMegaDemoServerMainForm.ROAESEncryptionEnvelopeBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); +begin + case aMode of + memIncoming: Log(AMessageEnvelope.Name+' : processing incoming message'); + memOutgoing: Log(AMessageEnvelope.Name+' : processing outgoing message'); + end; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.dfm new file mode 100644 index 0000000..b0eed90 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.dfm @@ -0,0 +1,6 @@ +object MegaDemoService: TMegaDemoService + OldCreateOrder = True + OnDeactivate = RORemoteDataModuleDeactivate + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.pas new file mode 100644 index 0000000..c8155d0 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/MegaDemoService_Impl.pas @@ -0,0 +1,179 @@ +unit MegaDemoService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} MegaDemoLibrary_Intf; + +type + { TMegaDemoService } + TMegaDemoService = class(TRORemoteDataModule, IMegaDemoService) + procedure RORemoteDataModuleDeactivate(const aClientID: TGUID; + aSession: TROSession); + private + protected + { IMegaDemoService methods } + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + procedure EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); + function TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; + function TestStringArray(const anArray: TStringArray): TStringArray; + function TestPersonArray(const anArray: TPersonArray): TPersonArray; + procedure EchoBinary(const BinIN: binary; out BinOUT: Binary); + procedure SomeTypes(var aString: Ansistring; var aWidestring: Widestring; var anInteger: Integer; var + aCurrency: Currency; var aDatetime: DateTime); + function CustomObjectAsString: Ansistring; + function CustomObjectAsStream: Binary; + procedure RaiseError; + procedure RaiseTestException; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MegaDemoLibrary_Invk, MegaDemoServerMain, + MegaDemoCustomClass, uROXMLSerializer, uROStreamSerializer; + +procedure Create_MegaDemoService(out anInstance: IUnknown); +begin + anInstance := TMegaDemoService.Create(nil); +end; + +{ MegaService } + +function TMegaDemoService.Sum(const A: Integer; const B: Integer): Integer; +begin + result := A + B; +end; + +function TMegaDemoService.GetServerTime: DateTime; +begin + result := Now; +end; + +procedure TMegaDemoService.EchoPerson(const aPerson: TPerson; out anotherPerson: TPerson); +begin + anotherPerson := TPerson.Create; + + anotherPerson.FirstName := aPerson.FirstName; + anotherPerson.LastName := aPerson.LastName; + anotherPerson.Age := aPerson.Age; + anotherPerson.Sex := aPerson.Sex; +end; + +function TMegaDemoService.TestIntegerArray(const anArray: TIntegerArray): TIntegerArray; +var + i: integer; +begin + result := TIntegerArray.Create; + for i := 0 to anArray.Count - 1 do + result.Add(anArray[i]); +end; + +function TMegaDemoService.TestStringArray(const anArray: TStringArray): TStringArray; +var + i: integer; +begin + result := TStringArray.Create; + for i := 0 to anArray.Count - 1 do + result.Add(anArray[i]); +end; + +function TMegaDemoService.TestPersonArray(const anArray: TPersonArray): TPersonArray; +var + i: integer; +begin + result := TPersonArray.Create; + for i := 0 to anArray.Count - 1 do begin + with result.Add do begin + FirstName := anArray[i].FirstName; + LastName := anArray[i].LastName; + Age := anArray[i].Age; + Sex := anArray[i].Sex; + end; + end; +end; + +procedure TMegaDemoService.EchoBinary(const BinIN: binary; out BinOUT: Binary); +begin + BinOut := Binary.Create; + BinOUT.CopyFrom(BinIN, BinIN.Size); +end; + +procedure TMegaDemoService.SomeTypes(var aString: Ansistring; var aWidestring: Widestring; var anInteger: + Integer; var aCurrency: Currency; var aDatetime: DateTime); +begin + aString := 'received aString: "' + aString + '"'; + aWidestring := 'received aWideString "' + aWideString + '"'; + anInteger := anInteger * 2; + aCurrency := aCurrency * 2; + aDatetime := Now; +end; + +function TMegaDemoService.CustomObjectAsString: Ansistring; +var + cls: TCustomClass; +begin + result := ''; + + cls := NewCustomClass; + try + result := AnsiString(ObjectToXML(cls)); + finally + cls.Free; + end; +end; + +function TMegaDemoService.CustomObjectAsStream: Binary; +var + cls: TCustomClass; +begin + result := Binary.Create; + + cls := NewCustomClass; + try + ObjectToStream(cls, result); + finally + cls.Free; + end; +end; + +procedure TMegaDemoService.RaiseError; +begin + // Generic and unregistered exceptions + raise EDivByZero.Create('A fake div by zero!'); +end; + +procedure TMegaDemoService.RaiseTestException; +begin + raise ETestException.Create('This is the exception message '+ ' îøèáêà çäåñü!', 666, 'Îøèáêà!'); +end; + +procedure TMegaDemoService.RORemoteDataModuleDeactivate(const aClientID: TGUID; + aSession: TROSession); +begin + if Assigned(MegaDemoServerMainForm) then MegaDemoServerMainForm.Log('Complete!'); +end; + +var + fClassFactory: IROClassFactory; + +initialization + fClassFactory := TROClassFactory.Create('MegaDemoService', Create_MegaDemoService, TMegaDemoService_Invoker); + RegisterForZeroConf(fClassFactory, '_MegaDemoService_rosdk._tcp.'); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/RODLFile.RES b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/RODLFile.RES new file mode 100644 index 0000000..bf5d731 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/MegaDemo/RODLFile.RES differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.Sample.html new file mode 100644 index 0000000..fa9f6f0 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.Sample.html @@ -0,0 +1,28 @@ + + + + + + + + + +

    + Message Envelopes Sample +

    + +

    Purpose

    + +

    This example illustrates usage message envelopes.

    +

    At using message envelopes, result stream contains only envelope marker and encrypted ouput stream so + if correspondent envelope isn't found at other-side, the exception will be raised.

    + +

    Testing

    +
      +
    • Test example with different combinations of predefined envelopes
    • +
    • Change server and client envelopes (create/update/delete) and test again.
    • +
    +

    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.bpg new file mode 100644 index 0000000..acc18fe --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MessageEnvelopes_Server.exe MessageEnvelopes_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MessageEnvelopes_Server.exe: MessageEnvelopes_Server.dpr + $(DCC) + +MessageEnvelopes_Client.exe: MessageEnvelopes_Client.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary.RODL b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary.RODL new file mode 100644 index 0000000..3ae3367 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary.RODL @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Intf.pas new file mode 100644 index 0000000..157e014 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Intf.pas @@ -0,0 +1,98 @@ +unit MessageEnvelopesLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{9FBE9FFC-D17D-4D9C-840E-949F7EEB9FC2}'; + TargetNamespace = ''; + + { Service Interface ID's } + IMessageEnvelopesService_IID : TGUID = '{D20EC6CD-45A8-4C62-8114-EE02C3FDF979}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + IMessageEnvelopesService = interface; + + + { IMessageEnvelopesService } + IMessageEnvelopesService = interface + ['{D20EC6CD-45A8-4C62-8114-EE02C3FDF979}'] + function Echo(const AStr: AnsiString): AnsiString; + end; + + { CoMessageEnvelopesService } + CoMessageEnvelopesService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMessageEnvelopesService; + end; + + { TMessageEnvelopesService_Proxy } + TMessageEnvelopesService_Proxy = class(TROProxy, IMessageEnvelopesService) + protected + function __GetInterfaceName:string; override; + + function Echo(const AStr: AnsiString): AnsiString; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoMessageEnvelopesService } + +class function CoMessageEnvelopesService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMessageEnvelopesService; +begin + result := TMessageEnvelopesService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMessageEnvelopesService_Proxy } + +function TMessageEnvelopesService_Proxy.__GetInterfaceName:string; +begin + result := 'MessageEnvelopesService'; +end; + +function TMessageEnvelopesService_Proxy.Echo(const AStr: AnsiString): AnsiString; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'MessageEnvelopesLibrary', __InterfaceName, 'Echo'); + __Message.Write('AStr', TypeInfo(AnsiString), AStr, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(AnsiString), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IMessageEnvelopesService_IID, TMessageEnvelopesService_Proxy); + + +finalization + UnregisterProxyClass(IMessageEnvelopesService_IID); + + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Invk.pas new file mode 100644 index 0000000..7189440 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesLibrary_Invk.pas @@ -0,0 +1,65 @@ +unit MessageEnvelopesLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} MessageEnvelopesLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TMessageEnvelopesService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Echo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TMessageEnvelopesService_Invoker } + +constructor TMessageEnvelopesService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TMessageEnvelopesService_Invoker.Invoke_Echo(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Echo(const AStr: AnsiString): AnsiString; } +var + AStr: AnsiString; + lResult: AnsiString; +begin + try + __Message.Read('AStr', TypeInfo(AnsiString), AStr, []); + + lResult := (__Instance as IMessageEnvelopesService).Echo(AStr); + + __Message.InitializeResponseMessage(__Transport, 'MessageEnvelopesLibrary', 'MessageEnvelopesService', 'EchoResponse'); + __Message.Write('Result', TypeInfo(AnsiString), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.dfm new file mode 100644 index 0000000..d0cd297 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.dfm @@ -0,0 +1,7 @@ +object MessageEnvelopesService: TMessageEnvelopesService + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.pas new file mode 100644 index 0000000..05eb313 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopesService_Impl.pas @@ -0,0 +1,56 @@ +unit MessageEnvelopesService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} MessageEnvelopesLibrary_Intf; + +type + { TMessageEnvelopesService } + TMessageEnvelopesService = class(TRORemoteDataModule, IMessageEnvelopesService) + private + protected + { IMessageEnvelopesService methods } + function Echo(const AStr: AnsiString): AnsiString; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} MessageEnvelopesLibrary_Invk, MessageEnvelopes_ServerMain; + +procedure Create_MessageEnvelopesService(out anInstance : IUnknown); +begin + anInstance := TMessageEnvelopesService.Create(nil); +end; + +{ MessageEnvelopesService } +function TMessageEnvelopesService.Echo(const AStr: AnsiString): AnsiString; +begin + MessageEnvelopes_ServerMainForm.Log('Received: '+string(AStr)); + Result := AStr; +end; + +var + fClassFactory: IROClassFactory; +initialization + fClassFactory := TROClassFactory.Create('MessageEnvelopesService', Create_MessageEnvelopesService, TMessageEnvelopesService_Invoker); + +finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.dfm new file mode 100644 index 0000000..ca327a2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.dfm @@ -0,0 +1,60 @@ +object MessageEnvelopes_AddEnvelopeForm: TMessageEnvelopes_AddEnvelopeForm + Left = 666 + Top = 360 + Width = 330 + Height = 164 + Color = clBtnFace + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 7 + Top = 8 + Width = 33 + Height = 13 + Caption = 'Marker' + end + object Label2: TLabel + Left = 7 + Top = 50 + Width = 46 + Height = 13 + Caption = 'Password' + end + object eMarker: TEdit + Left = 7 + Top = 24 + Width = 301 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object ePassword: TEdit + Left = 7 + Top = 66 + Width = 301 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + end + object bOk: TButton + Left = 74 + Top = 94 + Width = 75 + Height = 22 + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 2 + end + object bCancel: TButton + Left = 162 + Top = 94 + Width = 75 + Height = 22 + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 3 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.pas new file mode 100644 index 0000000..d0b5738 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_AddEnvelope.pas @@ -0,0 +1,61 @@ +unit MessageEnvelopes_AddEnvelope; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls; + +type + TMessageEnvelopes_AddEnvelopeForm = class(TForm) + Label1: TLabel; + Label2: TLabel; + eMarker: TEdit; + ePassword: TEdit; + bOk: TButton; + bCancel: TButton; + private + { Private declarations } + public + { Public declarations } + end; + +var + MessageEnvelopes_AddEnvelopeForm: TMessageEnvelopes_AddEnvelopeForm; + +function AddAESEnvelope(var AMarker, APassword: string): Boolean; +function UpdateAESEnvelope(var AMarker, APassword: string): Boolean; + +implementation + +{$R *.dfm} +function ShowEnvelopeForm(AUpdateMode: Boolean;var AMarker, APassword: string): Boolean; +begin + with TMessageEnvelopes_AddEnvelopeForm.Create(Application) do try + if AUpdateMode then + Caption := 'Update Envelope' + else + Caption := 'Add Envelope'; + eMarker.Text := AMarker; + ePassword.Text := APassword; + Result:= ShowModal = mrOk; + if Result then begin + AMarker := eMarker.Text; + APassword := ePassword.Text; + end; + finally + Release; + end; +end; + +function AddAESEnvelope(var AMarker, APassword: string): Boolean; +begin + Result:= ShowEnvelopeForm(False,AMarker,APassword); +end; + +function UpdateAESEnvelope(var AMarker, APassword: string): Boolean; +begin + Result:= ShowEnvelopeForm(True,AMarker,APassword); +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.dpr new file mode 100644 index 0000000..06da221 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.dpr @@ -0,0 +1,17 @@ +program MessageEnvelopes_Client; + +uses + uROComInit, + Forms, + MessageEnvelopes_ClientMain in 'MessageEnvelopes_ClientMain.pas' {MessageEnvelopes_ClientMainForm}, + MessageEnvelopes_AddEnvelope in 'MessageEnvelopes_AddEnvelope.pas' {MessageEnvelopes_AddEnvelopeForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Message Envelopes Client'; + Application.CreateForm(TMessageEnvelopes_ClientMainForm, MessageEnvelopes_ClientMainForm); + Application.CreateForm(TMessageEnvelopes_AddEnvelopeForm, MessageEnvelopes_AddEnvelopeForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.dfm new file mode 100644 index 0000000..ada7803 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.dfm @@ -0,0 +1,224 @@ +object MessageEnvelopes_ClientMainForm: TMessageEnvelopes_ClientMainForm + Left = 513 + Top = 264 + Width = 389 + Height = 413 + BorderIcons = [biSystemMenu] + Caption = 'Message Envelopes Client' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 373 + Height = 153 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + DesignSize = ( + 373 + 153) + object Label1: TLabel + Left = 9 + Top = 11 + Width = 53 + Height = 13 + Caption = 'Envelopes:' + end + object bMoveDown: TButton + Left = 292 + Top = 128 + Width = 75 + Height = 22 + Action = aMoveDown + Anchors = [akTop, akRight] + TabOrder = 5 + end + object bMoveUp: TButton + Left = 292 + Top = 104 + Width = 75 + Height = 22 + Action = aMoveUp + Anchors = [akTop, akRight] + TabOrder = 4 + end + object bDelete: TButton + Left = 292 + Top = 80 + Width = 75 + Height = 22 + Action = aDelete + Anchors = [akTop, akRight] + TabOrder = 3 + end + object bUpdate: TButton + Left = 292 + Top = 56 + Width = 75 + Height = 22 + Action = aUpdate + Anchors = [akTop, akRight] + TabOrder = 2 + end + object bAdd: TButton + Left = 292 + Top = 32 + Width = 75 + Height = 22 + Action = aAdd + Anchors = [akTop, akRight] + TabOrder = 1 + end + object CheckListBox1: TCheckListBox + Left = 9 + Top = 32 + Width = 276 + Height = 118 + OnClickCheck = CheckListBox1ClickCheck + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 0 + end + end + object Panel2: TPanel + Left = 0 + Top = 217 + Width = 373 + Height = 160 + Align = alClient + BevelOuter = bvNone + TabOrder = 2 + DesignSize = ( + 373 + 160) + object bClearLog: TButton + Left = 292 + Top = 129 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Clear Log' + TabOrder = 1 + OnClick = bClearLogClick + end + object Memo1: TMemo + Left = 9 + Top = 2 + Width = 275 + Height = 153 + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 0 + end + end + object Panel3: TPanel + Left = 0 + Top = 153 + Width = 373 + Height = 64 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 373 + 64) + object Label2: TLabel + Left = 338 + Top = 42 + Width = 24 + Height = 13 + Caption = 'times' + end + object Edit1: TEdit + Left = 9 + Top = 11 + Width = 275 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'Test phrase' + end + object bTest: TButton + Left = 9 + Top = 37 + Width = 103 + Height = 22 + Caption = 'Run Test once' + TabOrder = 1 + OnClick = aTestExecute + end + object bRandomTest: TButton + Left = 117 + Top = 37 + Width = 167 + Height = 22 + Caption = 'Run test via random envelope' + TabOrder = 2 + OnClick = bRandomTestClick + end + object SpinEdit1: TSpinEdit + Left = 290 + Top = 37 + Width = 43 + Height = 22 + MaxValue = 999 + MinValue = 1 + TabOrder = 3 + Value = 5 + end + end + object ROMessage: TROBinMessage + Envelopes = <> + Left = 212 + Top = 40 + end + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + ServerLocators = <> + DispatchOptions = [] + Left = 184 + Top = 40 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'NewService' + Left = 240 + Top = 40 + end + object ActionList1: TActionList + Left = 152 + Top = 40 + object aAdd: TAction + Caption = 'Add' + OnExecute = bAddClick + end + object aUpdate: TAction + Caption = 'Update' + OnExecute = aUpdateExecute + OnUpdate = aDeleteUpdate + end + object aDelete: TAction + Caption = 'Delete' + OnExecute = aDeleteExecute + OnUpdate = aDeleteUpdate + end + object aMoveUp: TAction + Caption = 'Move Up' + OnExecute = aMoveUpExecute + OnUpdate = aMoveUpUpdate + end + object aMoveDown: TAction + Caption = 'Move Down' + OnExecute = aMoveDownExecute + OnUpdate = aMoveDownUpdate + end + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.pas new file mode 100644 index 0000000..97ecf90 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ClientMain.pas @@ -0,0 +1,228 @@ +unit MessageEnvelopes_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + ToolWin, ComCtrls, CheckLst, ExtCtrls, ActnList, uROEncryptionEnvelope, + Spin; + +type + TMessageEnvelopes_ClientMainForm = class(TForm) + ROMessage: TROBinMessage; + ROChannel: TROWinInetHTTPChannel; + RORemoteService: TRORemoteService; + ActionList1: TActionList; + aAdd: TAction; + aUpdate: TAction; + aDelete: TAction; + aMoveUp: TAction; + aMoveDown: TAction; + Panel1: TPanel; + bMoveDown: TButton; + bMoveUp: TButton; + bDelete: TButton; + bUpdate: TButton; + bAdd: TButton; + CheckListBox1: TCheckListBox; + Label1: TLabel; + Panel2: TPanel; + bClearLog: TButton; + Memo1: TMemo; + Panel3: TPanel; + Edit1: TEdit; + bTest: TButton; + bRandomTest: TButton; + SpinEdit1: TSpinEdit; + Label2: TLabel; + procedure bClearLogClick(Sender: TObject); + procedure aTestExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure aDeleteExecute(Sender: TObject); + procedure aDeleteUpdate(Sender: TObject); + procedure CheckListBox1ClickCheck(Sender: TObject); + procedure aMoveUpUpdate(Sender: TObject); + procedure aMoveUpExecute(Sender: TObject); + procedure aMoveDownExecute(Sender: TObject); + procedure aMoveDownUpdate(Sender: TObject); + procedure bAddClick(Sender: TObject); + procedure aUpdateExecute(Sender: TObject); + procedure bRandomTestClick(Sender: TObject); + private + { Private declarations } + procedure Log(AStr: string); + procedure CreateAESEnvelope(AMarker, APass: String; AEnabled: Boolean); + procedure DoBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); + function GenerateString(AMessageEnvelope: TROAESEncryptionEnvelope): String; + public + { Public declarations } + end; + +var + MessageEnvelopes_ClientMainForm: TMessageEnvelopes_ClientMainForm; + +implementation + + +uses MessageEnvelopesLibrary_Intf, MessageEnvelopes_AddEnvelope, Math; + +{$R *.dfm} + +procedure TMessageEnvelopes_ClientMainForm.bClearLogClick(Sender: TObject); +begin + Memo1.Clear; +end; + +procedure TMessageEnvelopes_ClientMainForm.aTestExecute(Sender: TObject); +begin + if (RORemoteService as IMessageEnvelopesService).Echo(Ansistring(Edit1.Text)) = Ansistring(Edit1.Text) then + Log('Echo is OK!'); +end; + +procedure TMessageEnvelopes_ClientMainForm.Log(AStr: string); +begin + Memo1.Lines.Add(AStr); +end; + +procedure TMessageEnvelopes_ClientMainForm.FormCreate(Sender: TObject); +begin + CreateAESEnvelope('Marker A','Password A',True); + CheckListBox1.ItemIndex := 0; + CreateAESEnvelope('Marker B','Password B',False); + CreateAESEnvelope('Marker C','Password C',False); +end; + +procedure TMessageEnvelopes_ClientMainForm.CreateAESEnvelope(AMarker, APass: String; AEnabled: Boolean); +var + lEnv: TROAESEncryptionEnvelope; +begin + lEnv := TROAESEncryptionEnvelope.Create(nil); + with lEnv do begin + Password := APass; + EnvelopeMarker := AMarker; + BeforeEnvelopeProcessed := DoBeforeEnvelopeProcessed; + end; + with TROMessageEnvelopeItem(ROMessage.Envelopes.Add) do begin + Envelope := lEnv; + Enabled := AEnabled; + end; + CheckListBox1.AddItem(GenerateString(lEnv),lEnv); + CheckListBox1.Checked[CheckListBox1.Count-1]:=AEnabled; +end; + +procedure TMessageEnvelopes_ClientMainForm.aDeleteExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + CheckListBox1.Items.Delete(CheckListBox1.ItemIndex); + ROMessage.Envelopes.Delete(ROMessage.Envelopes.ItemByEnvelope(lEnv).Index); + lEnv.Free; +end; + +procedure TMessageEnvelopes_ClientMainForm.aDeleteUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := CheckListBox1.ItemIndex <> -1; +end; + +procedure TMessageEnvelopes_ClientMainForm.CheckListBox1ClickCheck(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + ROMessage.Envelopes.ItemByEnvelope(lEnv).Enabled := CheckListBox1.Checked[CheckListBox1.ItemIndex]; +end; + +procedure TMessageEnvelopes_ClientMainForm.aMoveUpUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (CheckListBox1.ItemIndex > 0); +end; + +procedure TMessageEnvelopes_ClientMainForm.aMoveUpExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + with ROMessage.Envelopes.ItemByEnvelope(lEnv) do + Index := Index -1; + CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex-1); +end; + +procedure TMessageEnvelopes_ClientMainForm.aMoveDownExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + with ROMessage.Envelopes.ItemByEnvelope(lEnv) do + Index := Index +1; + CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex+1); +end; + +procedure TMessageEnvelopes_ClientMainForm.aMoveDownUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (CheckListBox1.ItemIndex <> -1) and (CheckListBox1.ItemIndex <> CheckListBox1.Count-1); +end; + +procedure TMessageEnvelopes_ClientMainForm.DoBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); +begin + case aMode of + memIncoming: Log(AMessageEnvelope.EnvelopeMarker+' : processing incoming message'); + memOutgoing: Log(AMessageEnvelope.EnvelopeMarker+' : processing outgoing message'); + end; +end; + +procedure TMessageEnvelopes_ClientMainForm.bAddClick(Sender: TObject); +var + lMarker, lPassword: string; +begin + lMarker := 'Marker '+ inttoStr(CheckListBox1.Count+1); + lPassword := 'Password '+ inttoStr(CheckListBox1.Count+1); + if AddAESEnvelope(lMarker,lPassword) then + CreateAESEnvelope(lMarker,lPassword,True); +end; + +procedure TMessageEnvelopes_ClientMainForm.aUpdateExecute(Sender: TObject); +var + lEnv: TROAESEncryptionEnvelope; + lMarker, lPassword: string; +begin + lEnv := TROAESEncryptionEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + lMarker :=lEnv.EnvelopeMarker; + lPassword := lEnv.Password; + if UpdateAESEnvelope(lMarker,lPassword) then begin + lEnv.EnvelopeMarker := lMarker; + lEnv.Password := lPassword; + CheckListBox1.Items[CheckListBox1.ItemIndex] := GenerateString(lEnv); + end; +end; + +procedure TMessageEnvelopes_ClientMainForm.bRandomTestClick(Sender: TObject); +var + i,j: integer; +begin + for j := 0 to SpinEdit1.Value -1 do begin + For i:= 0 to CheckListBox1.Count -1 do begin + CheckListBox1.Checked[i] := False; + ROMessage.Envelopes[i].Enabled := False; + end; + if CheckListBox1.Count > 0 then begin + i := RandomRange(0, CheckListBox1.Count-1); + CheckListBox1.Checked[i] := True; + ROMessage.Envelopes[i].Enabled := True; + aTestExecute(bTest); + end; + end; +end; + +function TMessageEnvelopes_ClientMainForm.GenerateString( + AMessageEnvelope: TROAESEncryptionEnvelope): String; +begin + Result := AMessageEnvelope.EnvelopeMarker + ' [ password = ''' + AMessageEnvelope.Password+''' ]' +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.dpr new file mode 100644 index 0000000..fa43e95 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.dpr @@ -0,0 +1,23 @@ +program MessageEnvelopes_Server; + +{#ROGEN:MessageEnvelopesLibrary.RODL} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + MessageEnvelopes_ServerMain in 'MessageEnvelopes_ServerMain.pas' {MessageEnvelopes_ServerMainForm}, + MessageEnvelopesLibrary_Intf in 'MessageEnvelopesLibrary_Intf.pas', + MessageEnvelopesLibrary_Invk in 'MessageEnvelopesLibrary_Invk.pas', + MessageEnvelopesService_Impl in 'MessageEnvelopesService_Impl.pas' {MessageEnvelopesService: TRORemoteDataModule}, + MessageEnvelopes_AddEnvelope in 'MessageEnvelopes_AddEnvelope.pas' {MessageEnvelopes_AddEnvelopeForm}; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'Message Envelopes Server'; + Application.CreateForm(TMessageEnvelopes_ServerMainForm, MessageEnvelopes_ServerMainForm); + Application.CreateForm(TMessageEnvelopes_AddEnvelopeForm, MessageEnvelopes_AddEnvelopeForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.res new file mode 100644 index 0000000..95e15d9 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_Server.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.dfm new file mode 100644 index 0000000..40401e2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.dfm @@ -0,0 +1,173 @@ +object MessageEnvelopes_ServerMainForm: TMessageEnvelopes_ServerMainForm + Left = 545 + Top = 360 + Width = 411 + Height = 407 + BorderIcons = [biSystemMenu] + Caption = 'Message Envelopes Server' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object Panel2: TPanel + Left = 0 + Top = 153 + Width = 395 + Height = 218 + Align = alClient + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 395 + 218) + object bClearLog: TButton + Left = 314 + Top = 187 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Clear Log' + TabOrder = 0 + end + object Memo1: TMemo + Left = 9 + Top = 2 + Width = 297 + Height = 211 + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 1 + end + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 395 + Height = 153 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + DesignSize = ( + 395 + 153) + object Label1: TLabel + Left = 9 + Top = 11 + Width = 53 + Height = 13 + Caption = 'Envelopes:' + end + object bMoveDown: TButton + Left = 314 + Top = 128 + Width = 75 + Height = 22 + Action = aMoveDown + Anchors = [akTop, akRight] + TabOrder = 5 + end + object bMoveUp: TButton + Left = 314 + Top = 104 + Width = 75 + Height = 22 + Action = aMoveUp + Anchors = [akTop, akRight] + TabOrder = 4 + end + object bDelete: TButton + Left = 314 + Top = 80 + Width = 75 + Height = 22 + Action = aDelete + Anchors = [akTop, akRight] + TabOrder = 3 + end + object bUpdate: TButton + Left = 314 + Top = 56 + Width = 75 + Height = 22 + Action = aUpdate + Anchors = [akTop, akRight] + TabOrder = 2 + end + object bAdd: TButton + Left = 314 + Top = 32 + Width = 75 + Height = 22 + Action = aAdd + Anchors = [akTop, akRight] + TabOrder = 1 + end + object CheckListBox1: TCheckListBox + Left = 9 + Top = 32 + Width = 298 + Height = 118 + OnClickCheck = CheckListBox1ClickCheck + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 0 + end + end + object ROMessage: TROBinMessage + Envelopes = <> + Left = 52 + Top = 96 + end + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 24 + Top = 96 + end + object ActionList1: TActionList + Left = 152 + Top = 40 + object aAdd: TAction + Caption = 'Add' + OnExecute = aAddExecute + end + object aUpdate: TAction + Caption = 'Update' + OnExecute = aUpdateExecute + OnUpdate = aUpdateUpdate + end + object aDelete: TAction + Caption = 'Delete' + OnExecute = aDeleteExecute + end + object aMoveUp: TAction + Caption = 'Move Up' + OnExecute = aMoveUpExecute + OnUpdate = aMoveUpUpdate + end + object aMoveDown: TAction + Caption = 'Move Down' + OnExecute = aMoveDownExecute + OnUpdate = aMoveDownUpdate + end + object aTest: TAction + Caption = 'Test' + end + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.pas new file mode 100644 index 0000000..745e418 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/MessageEnvelopes_ServerMain.pas @@ -0,0 +1,229 @@ +unit MessageEnvelopes_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, ActnList, CheckLst, + ExtCtrls, uROEncryptionEnvelope; + +const + WM_LOG_MESSAGE = WM_APP + 1; +type + TMessageEnvelopes_ServerMainForm = class(TForm) + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + ROMessage: TROBinMessage; + ROServer: TROIndyHTTPServer; + Panel2: TPanel; + bClearLog: TButton; + Memo1: TMemo; + Panel1: TPanel; + Label1: TLabel; + bMoveDown: TButton; + bMoveUp: TButton; + bDelete: TButton; + bUpdate: TButton; + bAdd: TButton; + CheckListBox1: TCheckListBox; + ActionList1: TActionList; + aAdd: TAction; + aUpdate: TAction; + aDelete: TAction; + aMoveUp: TAction; + aMoveDown: TAction; + aTest: TAction; + procedure FormCreate(Sender: TObject); + procedure aAddExecute(Sender: TObject); + procedure aUpdateExecute(Sender: TObject); + procedure aUpdateUpdate(Sender: TObject); + procedure aDeleteExecute(Sender: TObject); + procedure aMoveUpUpdate(Sender: TObject); + procedure aMoveUpExecute(Sender: TObject); + procedure aMoveDownUpdate(Sender: TObject); + procedure aMoveDownExecute(Sender: TObject); + procedure CheckListBox1ClickCheck(Sender: TObject); + private + { Private declarations } + protected + procedure WMLog(var Message: TMessage); message WM_LOG_MESSAGE; + procedure CreateAESEnvelope(AMarker, APass: String; AEnabled: Boolean); + procedure DoBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); + function GenerateString(AMessageEnvelope: TROAESEncryptionEnvelope): String; + public + { Public declarations } + Procedure Log(Astr: string); + end; + +var + MessageEnvelopes_ServerMainForm: TMessageEnvelopes_ServerMainForm; + +implementation + +uses + MessageEnvelopes_AddEnvelope; +{$R *.dfm} + +procedure TMessageEnvelopes_ServerMainForm.FormCreate(Sender: TObject); +begin + ROServer.Active := true; + CreateAESEnvelope('Marker A','Password A',True); + CheckListBox1.ItemIndex := 0; + CreateAESEnvelope('Marker B','Password B',False); + CreateAESEnvelope('Marker C','Password C',False); +end; + +procedure TMessageEnvelopes_ServerMainForm.aAddExecute(Sender: TObject); +var + lMarker, lPassword: string; +begin + lMarker := 'Marker '+ inttoStr(CheckListBox1.Count+1); + lPassword := 'Password '+ inttoStr(CheckListBox1.Count+1); + if AddAESEnvelope(lMarker,lPassword) then + CreateAESEnvelope(lMarker,lPassword,True); +end; + +procedure TMessageEnvelopes_ServerMainForm.aUpdateExecute(Sender: TObject); +var + lEnv: TROAESEncryptionEnvelope; + lMarker, lPassword: string; +begin + lEnv := TROAESEncryptionEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + lMarker :=lEnv.EnvelopeMarker; + lPassword := lEnv.Password; + if UpdateAESEnvelope(lMarker,lPassword) then begin + lEnv.EnvelopeMarker := lMarker; + lEnv.Password := lPassword; + CheckListBox1.Items[CheckListBox1.ItemIndex] := GenerateString(lEnv); + end; +end; + +procedure TMessageEnvelopes_ServerMainForm.aUpdateUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := CheckListBox1.ItemIndex <> -1; +end; + +procedure TMessageEnvelopes_ServerMainForm.aDeleteExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + CheckListBox1.Items.Delete(CheckListBox1.ItemIndex); + ROMessage.Envelopes.Delete(ROMessage.Envelopes.ItemByEnvelope(lEnv).Index); + lEnv.Free; +end; + +procedure TMessageEnvelopes_ServerMainForm.aMoveUpUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (CheckListBox1.ItemIndex > 0); +end; + +procedure TMessageEnvelopes_ServerMainForm.aMoveUpExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + with ROMessage.Envelopes.ItemByEnvelope(lEnv) do + Index := Index -1; + CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex-1); +end; + +procedure TMessageEnvelopes_ServerMainForm.aMoveDownUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (CheckListBox1.ItemIndex <> -1) and (CheckListBox1.ItemIndex <> CheckListBox1.Count-1); +end; + +procedure TMessageEnvelopes_ServerMainForm.aMoveDownExecute(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + with ROMessage.Envelopes.ItemByEnvelope(lEnv) do + Index := Index +1; + CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex+1); +end; + +procedure TMessageEnvelopes_ServerMainForm.Log(Astr: string); +var + p: pChar; +begin + if Application.Terminated then Exit; + + GetMem(p, (Length(Astr) + 1)*SizeOf(Char)); + Move(Astr[1], p^, (Length(Astr) + 1)*SizeOf(Char)); + PostMessage(Handle, WM_LOG_MESSAGE, 0, integer(p)); + + { Access to the VCL may only happen from within the main thread. To allow + Log to be called from within the Service implementattion, we must ensure + it's threadsafe. + + So instread of just addint the log message to the Memo, we'l send a + PostMessage to the window, which wil then later be handled within the + main thread. + + As a side benefit, the secution of the Log doe snot need to wait for this + logging to happen (as usage of, for example, Synchronize would require), + which will in turn make the server more respinsible for a simultaneous + calls. } +end; + +procedure TMessageEnvelopes_ServerMainForm.WMLog(var Message: TMessage); +var + p: pChar; +begin + try + p := pChar(Message.LParam); + Memo1.Lines.Add(p); + Freemem(p); + except + on E: Exception do + Memo1.Lines.Add(E.Classname + ': ' + E.Message); + end; +end; + +procedure TMessageEnvelopes_ServerMainForm.CreateAESEnvelope(AMarker, APass: String; + AEnabled: Boolean); +var + lEnv: TROAESEncryptionEnvelope; +begin + lEnv := TROAESEncryptionEnvelope.Create(nil); + with lEnv do begin + Password := APass; + EnvelopeMarker := AMarker; + BeforeEnvelopeProcessed := DoBeforeEnvelopeProcessed; + end; + with TROMessageEnvelopeItem(ROMessage.Envelopes.Add) do begin + Envelope := lEnv; + Enabled := AEnabled; + end; + CheckListBox1.AddItem(GenerateString(lEnv),lEnv); + CheckListBox1.Checked[CheckListBox1.Count-1]:=AEnabled; +end; + +procedure TMessageEnvelopes_ServerMainForm.DoBeforeEnvelopeProcessed( + AMessageEnvelope: TROMessageEnvelope; AStream: TStream; + aMode: TROMessageEnvelopeMode; AMessage: IROMessage); +begin + case aMode of + memIncoming: Log(AMessageEnvelope.EnvelopeMarker+' : processing incoming message'); + memOutgoing: Log(AMessageEnvelope.EnvelopeMarker+' : processing outgoing message'); + end; +end; + +procedure TMessageEnvelopes_ServerMainForm.CheckListBox1ClickCheck(Sender: TObject); +var + lEnv: TROMessageEnvelope; +begin + lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]); + ROMessage.Envelopes.ItemByEnvelope(lEnv).Enabled := CheckListBox1.Checked[CheckListBox1.ItemIndex]; +end; + +function TMessageEnvelopes_ServerMainForm.GenerateString( + AMessageEnvelope: TROAESEncryptionEnvelope): String; +begin + Result := AMessageEnvelope.EnvelopeMarker + ' [ password = ''' + AMessageEnvelope.Password+''' ]' +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/RODLFILE.res new file mode 100644 index 0000000..3fa8bbf Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Message Envelopes/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.Sample.html new file mode 100644 index 0000000..098ee9f --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.Sample.html @@ -0,0 +1,53 @@ + + + + + + + + + +

    + Multi Channel Sample +

    + + +

    Purpose

    + +

    + This example provides an introduction to using the Delphi edition of the RemObjects SDK product. + It shows how to use different channels to connect to the server application.
    + The following channels and servers are included: +

      +
    • TROWinMessageChannel / TROWinMessageServer
    • +
    • TRONamedPipeChannel / TRONamedPipeServer
    • +
    • TROWinInetHTTPChannel / TROIndyHTTPServer
    • +
    • TROIndyTCPChannel / TROIndyTCPServer
    • +
    • TROSuperTcpChannel / TROSuperTcpServer
    • +
    • TROIndySuperHttpChannel / TROIpSuperHttpServer
    • +
    • TROIndyUDPChannel / TROIndyUDPServer
    • +
    • TROIndyTCPChannel / TROBPDXTCPServer
    • +
    • TROWinInetHTTPChannel / TROBPDXHTTPServer
    • +
    • TROLocalChannel / TROLocalServer
    • +
    • TRODLLChannel
    • +
    + +

    + +

    Getting Started

    +
      +
    • Build or compile all projects.
    • +
    • Launch the server (via the menu option: RemObjects | Launch Server Executable).
    • +
    • Activate the server(s) you require.
    • +
    • Ensure that MultiChannel_Client is the selected project and run it.
    • +
    • Choose a server and test it.
    • +
    +

    Examine the Code

    +
      +
    • + See the code that changes the selected channel/server in MultiChannel_ClientMain.pas. +
    • +
    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bdsgroup new file mode 100644 index 0000000..b13f1a1 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bdsgroup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + MultiChannel_Server.bdsproj + MultiChannel_DLLServer.bdsproj + MultiChannel_Client.bdsproj + MultiChannel_Server.exe MultiChannel_DLLServer.dll MultiChannel_Client.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bpg new file mode 100644 index 0000000..cc87d7d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.bpg @@ -0,0 +1,26 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = MultiChannel_Server.exe MultiChannel_DLLServer.dll MultiChannel_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +MultiChannel_Server.exe: MultiChannel_Server.dpr + $(DCC) + +MultiChannel_Client.exe: MultiChannel_Client.dpr + $(DCC) + +MultiChannel_DLLServer.dll: MultiChannel_DLLServer.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.groupproj new file mode 100644 index 0000000..d3e81da --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel.groupproj @@ -0,0 +1,49 @@ + + + {3788f490-6c3b-412b-924c-ca4e290cbf69} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary.rodl new file mode 100644 index 0000000..71b3778 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary.rodl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Intf.pas new file mode 100644 index 0000000..4729390 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Intf.pas @@ -0,0 +1,95 @@ +unit MultiChannelLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{60A753C4-1ED0-4385-AD64-B6B547D42BD5}'; + TargetNamespace = ''; + + { Service Interface ID's } + IMultiChannelService_IID : TGUID = '{DCA9C2C8-5CE4-4270-829D-503B0E9547B9}'; + + { Event ID's } + +type + { Forward declarations } + IMultiChannelService = interface; + + + { IMultiChannelService } + IMultiChannelService = interface + ['{DCA9C2C8-5CE4-4270-829D-503B0E9547B9}'] + function GetServerTime: DateTime; + end; + + { CoMultiChannelService } + CoMultiChannelService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiChannelService; + end; + + { TMultiChannelService_Proxy } + TMultiChannelService_Proxy = class(TROProxy, IMultiChannelService) + protected + function __GetInterfaceName:string; override; + + function GetServerTime: DateTime; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoMultiChannelService } + +class function CoMultiChannelService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IMultiChannelService; +begin + result := TMultiChannelService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TMultiChannelService_Proxy } + +function TMultiChannelService_Proxy.__GetInterfaceName:string; +begin + result := 'MultiChannelService'; +end; + +function TMultiChannelService_Proxy.GetServerTime: DateTime; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'MultiChannelLibrary', __InterfaceName, 'GetServerTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(IMultiChannelService_IID, TMultiChannelService_Proxy); + + +finalization + UnregisterProxyClass(IMultiChannelService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Invk.pas new file mode 100644 index 0000000..6de2033 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelLibrary_Invk.pas @@ -0,0 +1,54 @@ +unit MultiChannelLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} MultiChannelLibrary_Intf; + +type + {$M+} + TMultiChannelService_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TMultiChannelService_Invoker } + +procedure TMultiChannelService_Invoker.Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetServerTime: DateTime; } +var + lResult: DateTime; +begin + try + lResult := (__Instance as IMultiChannelService).GetServerTime; + + __Message.InitializeResponseMessage(__Transport, 'MultiChannelLibrary', 'MultiChannelService', 'GetServerTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelService_Impl.pas new file mode 100644 index 0000000..ec076d7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannelService_Impl.pas @@ -0,0 +1,49 @@ +unit MultiChannelService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Generated:} MultiChannelLibrary_Intf; + +type + { TMultiChannelService } + TMultiChannelService = class(TRORemotable, IMultiChannelService) + private + protected + { IMultiChannelService methods } + function GetServerTime: DateTime; + end; + +implementation + +uses + {Generated:} MultiChannelLibrary_Invk; + +procedure Create_MultiChannelService(out anInstance: IUnknown); +begin + anInstance := TMultiChannelService.Create; +end; + +{ MultiChannelService } + +function TMultiChannelService.GetServerTime: DateTime; +begin + Result := Now; +end; + +initialization + TROClassFactory.Create('MultiChannelService', Create_MultiChannelService, TMultiChannelService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.bdsproj new file mode 100644 index 0000000..e08c4b6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MultiChannel_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.cfg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.cfg new file mode 100644 index 0000000..4c2816a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.cfg @@ -0,0 +1,38 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dof b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dof new file mode 100644 index 0000000..05891e5 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dof @@ -0,0 +1,132 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1043 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dpr new file mode 100644 index 0000000..2752a1f --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dpr @@ -0,0 +1,16 @@ +program MultiChannel_Client; + +uses + Forms, + MultiChannel_ClientMain in 'MultiChannel_ClientMain.pas' {MultiChannel_ClientMainForm}, + MultiChannel_ClientData in 'MultiChannel_ClientData.pas' {MultiChannel_ClientDataMain: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'MultiChannel - Client'; + Application.CreateForm(TMultiChannel_ClientDataMain, MultiChannel_ClientDataMain); + Application.CreateForm(TMultiChannel_ClientMainForm, MultiChannel_ClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dproj new file mode 100644 index 0000000..1d06581 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.dproj @@ -0,0 +1,81 @@ + + + {c9e161f0-df30-424e-b087-976a9cda6727} + MultiChannel_Client.dpr + Debug + AnyCPU + DCC32 + MultiChannel_Client.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MultiChannel_Client.dpr + + + + + + + MainSource + + +
    MultiChannel_ClientDataMain
    +
    + +
    MultiChannel_ClientMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.dfm new file mode 100644 index 0000000..403b473 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.dfm @@ -0,0 +1,22 @@ +object MultiChannel_ClientDataMain: TMultiChannel_ClientDataMain + OldCreateOrder = False + Left = 322 + Top = 227 + Height = 150 + Width = 215 + object LocalServer: TROLocalServer + Dispatchers = < + item + Name = 'BinMessage' + Message = BinMessage + Enabled = True + end> + Left = 41 + Top = 21 + end + object BinMessage: TROBinMessage + OnInitializeMessage = BinMessageInitializeMessage + Left = 38 + Top = 63 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.pas new file mode 100644 index 0000000..ae8009a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientData.pas @@ -0,0 +1,39 @@ +unit MultiChannel_ClientData; + +interface + +uses + SysUtils, Classes, uROClient, uROBinMessage, uROServer, uROLocalServer, uROClientIntf; + +type + TMultiChannel_ClientDataMain = class(TDataModule) + LocalServer: TROLocalServer; + BinMessage: TROBinMessage; + procedure BinMessageInitializeMessage(Sender: TROMessage; + const aTransport: IROTransport; const anInterfaceName, + aMessageName: string); + private + { Private declarations } + public + { Public declarations } + end; + +var + MultiChannel_ClientDataMain: TMultiChannel_ClientDataMain; + +implementation +uses MultiChannelService_Impl, MultiChannel_ClientMain; +{$R *.dfm} + +procedure TMultiChannel_ClientDataMain.BinMessageInitializeMessage( + Sender: TROMessage; const aTransport: IROTransport; + const anInterfaceName, aMessageName: string); +begin + MultiChannel_ClientMainForm.Log(''); + MultiChannel_ClientMainForm.Log('SERVER: Connect via ' + Tobject(aTransport.GetTransportObject).ClassName); + MultiChannel_ClientMainForm.Log('SERVER: ' + anInterfaceName + ':'#9 + StringReplace(aMessageName, 'Response', '', [])); + MultiChannel_ClientMainForm.Log(''); +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.dfm new file mode 100644 index 0000000..b5b9a64 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.dfm @@ -0,0 +1,153 @@ +object MultiChannel_ClientMainForm: TMultiChannel_ClientMainForm + Left = 301 + Top = 153 + Width = 392 + Height = 363 + Caption = 'MultiChannel_ClientMainForm' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object Memo: TMemo + Left = 0 + Top = 148 + Width = 384 + Height = 188 + Align = alClient + ScrollBars = ssVertical + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 384 + Height = 148 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object GetServerTimeButton: TButton + Left = 7 + Top = 116 + Width = 104 + Height = 25 + Caption = 'GetServerTime' + TabOrder = 0 + OnClick = GetServerTimeButtonClick + end + object rgConnect: TRadioGroup + Left = 6 + Top = 5 + Width = 375 + Height = 105 + Caption = 'Connect to:' + Columns = 3 + ItemIndex = 0 + Items.Strings = ( + 'IndyHTTPServer' + 'BPDXHTTPServer' + 'SuperTcpServer' + 'IndyTCPServer' + 'BPDXTCPServer' + 'LocalServer' + 'IndyUDPServer' + 'NamedPipeServer' + 'WinMessageServer' + 'SuperHTTPServer' + 'DLLChannel') + TabOrder = 1 + end + end + object RemoteService: TRORemoteService + Message = BinMessage + ServiceName = 'MultiChannelService' + Left = 249 + Top = 276 + end + object BinMessage: TROBinMessage + Envelopes = <> + Left = 248 + Top = 231 + end + object WinInetHTTPChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + ServerLocators = <> + DispatchOptions = [] + Left = 30 + Top = 164 + end + object WinMessageChannel: TROWinMessageChannel + ServerID = '{30221B5E-6C56-4A91-A4E4-455BB3DA22B9}' + ServerLocators = <> + DispatchOptions = [] + Left = 86 + Top = 192 + end + object NamedPipeChannel: TRONamedPipeChannel + ServerID = 'MultiChannel_ServerMainForm_NamedPipeServer' + ServerName = '.' + ServerLocators = <> + DispatchOptions = [] + Left = 58 + Top = 192 + end + object DLLChannel: TRODLLChannel + DLLName = 'MultiChannel_DLLServer.dll' + ServerLocators = <> + DispatchOptions = [] + Left = 314 + Top = 257 + end + object LocalChannel: TROLocalChannel + ServerLocators = <> + DispatchOptions = [] + ServerChannel = MultiChannel_ClientDataMain.LocalServer + Left = 313 + Top = 216 + end + object IndyTCPChannel: TROIndyTCPChannel + ServerLocators = <> + DispatchOptions = [] + Port = 8090 + Host = '127.0.0.1' + Left = 58 + Top = 164 + end + object SuperTcpChannel: TROSuperTCPChannel + Host = 'localhost' + ServerLocators = <> + DispatchOptions = [] + Left = 30 + Top = 192 + end + object IndyUDPChannel: TROIndyUDPChannel + Retrys = 5 + IndyClient.Host = 'localhost' + IndyClient.Port = 8090 + Port = 8090 + Host = 'localhost' + ServerLocators = <> + DispatchOptions = [] + Left = 86 + Top = 164 + end + object IndySuperHttpChannel: TROIndySuperHTTPChannel + Active = False + ClientWait.Request.Accept = 'text/html, */*' + ClientWait.Request.ContentLength = -1 + ClientWait.Request.ContentRangeEnd = 0 + ClientWait.Request.ContentRangeStart = 0 + ClientWait.Request.UserAgent = 'RemObjects SDK' + ClientRequest.Request.Accept = 'text/html, */*' + ClientRequest.Request.ContentLength = -1 + ClientRequest.Request.ContentRangeEnd = 0 + ClientRequest.Request.ContentRangeStart = 0 + ClientRequest.Request.UserAgent = 'RemObjects SDK' + DispatchOptions = [] + ServerLocators = <> + Left = 115 + Top = 164 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.pas new file mode 100644 index 0000000..3ba4eee --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ClientMain.pas @@ -0,0 +1,139 @@ +unit MultiChannel_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + StdCtrls, MultiChannelLibrary_Intf, MultiChannel_ClientData, SyncObjs, + uROIndyUDPChannel, uROSuperTCPChannel, uROIndyTCPChannel, + uROLocalChannel, uRODLLChannel, uRONamedPipeChannel, + uROWinMessageChannel, uROClient, uROWinInetHttpChannel, uROBinMessage, + uRORemoteService, ExtCtrls, uROBaseSuperHttpChannel, + uROIndySuperHttpChannel; + +type + TMultiChannel_ClientMainForm = class(TForm) + RemoteService: TRORemoteService; + BinMessage: TROBinMessage; + WinInetHTTPChannel: TROWinInetHTTPChannel; + WinMessageChannel: TROWinMessageChannel; + NamedPipeChannel: TRONamedPipeChannel; + DLLChannel: TRODLLChannel; + LocalChannel: TROLocalChannel; + IndyTCPChannel: TROIndyTCPChannel; + SuperTcpChannel: TROSuperTcpChannel; + IndyUDPChannel: TROIndyUDPChannel; + Memo: TMemo; + Panel1: TPanel; + GetServerTimeButton: TButton; + rgConnect: TRadioGroup; + IndySuperHttpChannel: TROIndySuperHttpChannel; + procedure GetServerTimeButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + private + CriticalSection: TCriticalSection; + function GetMultiChannelService: IMultiChannelService; + { Private declarations } + public + procedure Log(Astr: string); + { Public declarations } + end; + +var + MultiChannel_ClientMainForm: TMultiChannel_ClientMainForm; + +implementation + +{$R *.dfm} + +function TMultiChannel_ClientMainForm.GetMultiChannelService: IMultiChannelService; +const + atargetUrl = 'http://localhost:%d/BIN'; + aHost = '127.0.0.1'; +begin + case rgConnect.ItemIndex of + {IndyHTTPServer} 0: begin + RemoteService.Channel := WinInetHTTPChannel; + WinInetHTTPChannel.TargetURL := Format(atargetUrl, [8099]); + end; + {BPDXHTTPServer} 1: begin + RemoteService.Channel := WinInetHTTPChannel; + WinInetHTTPChannel.TargetURL := Format(atargetUrl, [8098]); + end; + {SuperTcpServer} 2: begin + RemoteService.Channel := SuperTcpChannel; + SuperTcpChannel.Host := aHost; + end; + {IndyTCPServer} 3: begin + RemoteService.Channel := IndyTCPChannel; + IndyTCPChannel.Host := aHost; + IndyTCPChannel.Port := 8090; + end; + {BPDXTCPServer} 4: begin + RemoteService.Channel := IndyTCPChannel; + IndyTCPChannel.Host := aHost; + IndyTCPChannel.Port := 8089; + end; + {LocalServer} 5: begin + RemoteService.Channel := LocalChannel; + end; + {IndyUDPServer} 6: begin + RemoteService.Channel := IndyUDPChannel; + IndyUDPChannel.Host := aHost; + IndyUDPChannel.Port := 8090; + end; + {NamedPipeServer} 7: begin + RemoteService.Channel := NamedPipeChannel; + end; + {WinMessageServer} 8: begin + RemoteService.Channel := WinMessageChannel; + end; + {SuperHTTPServer} 9: begin + RemoteService.Channel := IndySuperHttpChannel; + IndySuperHttpChannel.TargetURL := Format(atargetUrl, [8094]); + end; + else + {DLLChannel} + RemoteService.Channel := DLLChannel; + end; + + RemoteService.Message := BinMessage; + Result := RemoteService as IMultiChannelService; +end; + +procedure TMultiChannel_ClientMainForm.GetServerTimeButtonClick( + Sender: TObject); +var + srv: IMultiChannelService; +begin + srv := GetMultiChannelService; + Log('use ' + RemoteService.Channel.Name); + Log('GetServerTime'); + Log('-------------'); + Log('Receiving:'#9 + DateTimeToStr(srv.GetServerTime)); + Log(''); +end; + +procedure TMultiChannel_ClientMainForm.Log(Astr: string); +begin + CriticalSection.Enter; + try + Memo.Lines.Add(Astr); + finally + CriticalSection.Leave; + end; +end; + +procedure TMultiChannel_ClientMainForm.FormCreate(Sender: TObject); +begin + CriticalSection := TCriticalSection.Create; +end; + +procedure TMultiChannel_ClientMainForm.FormDestroy(Sender: TObject); +begin + CriticalSection.Free; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.bdsproj new file mode 100644 index 0000000..cbeccf8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MultiChannel_DLLServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dpr new file mode 100644 index 0000000..d6f53fc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dpr @@ -0,0 +1,33 @@ +library MultiChannel_DLLServer; + +{#ROGEN:MultiChannelLibrary.rodl} // RemObjects: Careful, do not remove! +{$R RODLFile.res} +{$R *.res} + +uses + Windows, + uRODLLServer, + uROBinMessage, + MultiChannelLibrary_Intf in 'MultiChannelLibrary_Intf.pas', + MultiChannelLibrary_Invk in 'MultiChannelLibrary_Invk.pas', + MultiChannelService_Impl in 'MultiChannelService_Impl.pas'; + +var BINMessage : TROBINMessage; + +procedure ROProc(Reason:integer); +begin + case Reason of + DLL_PROCESS_ATTACH: begin + BINMessage := TROBINMessage.Create(NIL); + RegisterMessage(BINMessage); + end; + DLL_PROCESS_DETACH: begin + BINMessage.Free; + end; + end +end; + +begin + DLLProc:=@ROProc; + ROProc(DLL_PROCESS_ATTACH) + end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dproj new file mode 100644 index 0000000..1891cad --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.dproj @@ -0,0 +1,78 @@ + + + {adbefef6-fc25-4d38-b90a-93262644f71e} + MultiChannel_DLLServer.dpr + Debug + AnyCPU + DCC32 + MultiChannel_DLLServer.dll + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MultiChannel_DLLServer.dpr + + + + + + + MainSource + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.res new file mode 100644 index 0000000..08ba56e Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_DLLServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.bdsproj new file mode 100644 index 0000000..d2b55cb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + MultiChannel_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dpr new file mode 100644 index 0000000..12d5046 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dpr @@ -0,0 +1,20 @@ +program MultiChannel_Server; + +uses + Forms, + MultiChannel_ServerMain in 'MultiChannel_ServerMain.pas' {MultiChannel_ServerMainForm}, + MultiChannelLibrary_Intf in 'MultiChannelLibrary_Intf.pas', + MultiChannelLibrary_Invk in 'MultiChannelLibrary_Invk.pas', + MultiChannelService_Impl in 'MultiChannelService_Impl.pas'; + +{#ROGEN:MultiChannelLibrary.rodl} // RemObjects: Careful, do not remove! +{$R RODLFile.res} +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'MultiChannel - Server'; + Application.CreateForm(TMultiChannel_ServerMainForm, MultiChannel_ServerMainForm); + Application.Run; +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dproj new file mode 100644 index 0000000..1d73442 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.dproj @@ -0,0 +1,81 @@ + + + {afd44946-8e31-4a11-adce-eecf8dfa9da7} + MultiChannel_Server.dpr + Debug + AnyCPU + DCC32 + MultiChannel_Server.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + MultiChannel_Server.dpr + + + + + + + MainSource + + + + + +
    MultiChannel_ServerMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.res new file mode 100644 index 0000000..b0dd731 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_Server.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.dfm new file mode 100644 index 0000000..0a94b67 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.dfm @@ -0,0 +1,270 @@ +object MultiChannel_ServerMainForm: TMultiChannel_ServerMainForm + Left = 331 + Top = 214 + Caption = 'MultiChannel_ServerMainForm' + ClientHeight = 295 + ClientWidth = 386 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 96 + Top = 3 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object Memo: TMemo + Left = 0 + Top = 128 + Width = 386 + Height = 166 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + ScrollBars = ssVertical + TabOrder = 9 + end + object cbIndyHTTPServer: TCheckBox + Left = 7 + Top = 57 + Width = 120 + Height = 17 + Caption = 'IndyHTTPServer' + TabOrder = 0 + OnClick = cbIndyHTTPServerClick + end + object cbBPDXHttpServer: TCheckBox + Left = 7 + Top = 74 + Width = 120 + Height = 17 + Caption = 'BPDXHttpServer' + TabOrder = 1 + OnClick = cbBPDXHttpServerClick + end + object cbSuperTcpServer: TCheckBox + Left = 7 + Top = 91 + Width = 120 + Height = 17 + Caption = 'SuperTcpServer' + TabOrder = 2 + OnClick = cbSuperTcpServerClick + end + object cbIndyTcpServer: TCheckBox + Left = 129 + Top = 57 + Width = 120 + Height = 17 + Caption = 'IndyTcpServer' + TabOrder = 3 + OnClick = cbIndyTcpServerClick + end + object cbBPDXTcpServer: TCheckBox + Left = 129 + Top = 74 + Width = 120 + Height = 17 + Caption = 'BPDXTcpServer' + TabOrder = 4 + OnClick = cbBPDXTcpServerClick + end + object cbIndyUdpServer: TCheckBox + Left = 129 + Top = 91 + Width = 120 + Height = 17 + Caption = 'IndyUdpServer' + TabOrder = 5 + OnClick = cbIndyUdpServerClick + end + object cbNamedPipeServer: TCheckBox + Left = 250 + Top = 57 + Width = 120 + Height = 17 + Caption = 'NamedPipeServer' + TabOrder = 6 + OnClick = cbNamedPipeServerClick + end + object cbWinMessageServer: TCheckBox + Left = 250 + Top = 74 + Width = 120 + Height = 17 + Caption = 'WinMessageServer' + TabOrder = 7 + OnClick = cbWinMessageServerClick + end + object ErrorMemo: TMemo + Left = 0 + Top = 111 + Width = 386 + Height = 201 + Alignment = taCenter + Anchors = [akLeft, akTop, akRight, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -25 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Lines.Strings = ( + '' + '' + 'Please activate ' + 'at least one server!') + ParentFont = False + TabOrder = 10 + end + object cbSuperHttpServer: TCheckBox + Left = 250 + Top = 91 + Width = 120 + Height = 17 + Caption = 'SuperHttpServer' + TabOrder = 8 + OnClick = cbSuperHttpServerClick + end + object ROBinMessage: TROBinMessage + OnInitializeMessage = ROBinMessageInitializeMessage + Envelopes = <> + Left = 330 + Top = 243 + end + object WinMessageServer: TROWinMessageServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + OnWriteToStream = stub + OnReadFromStream = stub + ServerID = '{30221B5E-6C56-4A91-A4E4-455BB3DA22B9}' + Left = 266 + Top = 192 + end + object NamedPipeServer: TRONamedPipeServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + ServerID = 'MultiChannel_ServerMainForm_NamedPipeServer' + Left = 265 + Top = 148 + end + object IndyHTTPServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8099 + Left = 15 + Top = 139 + end + object IndyTCPServer: TROIndyTCPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + Port = 8090 + Left = 144 + Top = 144 + end + object SuperTcpServer: TROSuperTCPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + DefaultResponse = 'ROSC:Invalid connection string' + Left = 30 + Top = 189 + end + object IndyUDPServer: TROIndyUDPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + IndyUDPServer.Bindings = <> + IndyUDPServer.DefaultPort = 8090 + Port = 8090 + Left = 154 + Top = 194 + end + object BPDXTCPServer: TROBPDXTCPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + BPDXServer.ReleaseDate = '2002-09-01' + BPDXServer.ListenerThreadPriority = tpIdle + BPDXServer.SpawnedThreadPriority = tpIdle + BPDXServer.Suspend = False + BPDXServer.UseSSL = False + BPDXServer.UseThreadPool = False + BPDXServer.ServerPort = 8089 + BPDXServer.ProtocolToBind = wpTCPOnly + BPDXServer.SocketOutputBufferSize = bsfNormal + BPDXServer.ServerType = stThreadBlocking + BPDXServer.ThreadCacheSize = 10 + Port = 8089 + Left = 171 + Top = 145 + end + object BPDXHTTPServer: TROBPDXHTTPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + PathInfo = 'Bin' + end> + BPDXServer.ReleaseDate = '2002-09-01' + BPDXServer.ListenerThreadPriority = tpIdle + BPDXServer.SpawnedThreadPriority = tpIdle + BPDXServer.Suspend = False + BPDXServer.UseSSL = False + BPDXServer.UseThreadPool = False + BPDXServer.ServerPort = 8098 + BPDXServer.ProtocolToBind = wpTCPOnly + BPDXServer.SocketOutputBufferSize = bsfNormal + BPDXServer.ServerType = stThreadBlocking + BPDXServer.ThreadCacheSize = 10 + BPDXServer.Timeout = 50000 + BPDXServer.SupportKeepAlive = False + Port = 8098 + SupportKeepAlive = False + Left = 42 + Top = 139 + end + object SuperHttpServer: TROIpSuperHTTPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 8094 + ServerName = 'RemObjects SDK Super IpHttp Server for Delphi' + Left = 328 + Top = 152 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.pas new file mode 100644 index 0000000..e67d2d9 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/MultiChannel_ServerMain.pas @@ -0,0 +1,194 @@ +unit MultiChannel_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uROClientIntf, SyncObjs, uROBPDXHTTPServer, uROBPDXTCPServer, + uROIndyUDPServer, uROSuperTCPServer, uROIndyTCPServer, uROIndyHTTPServer, + uRONamedPipeServer, uROClient, uROServer, uROWinMessageServer, + uROBinMessage, StdCtrls, uROPoweredByRemObjectsButton, + uROBaseSuperHttpServer, uROIpSuperHttpServer; + +type + TMultiChannel_ServerMainForm = class(TForm) + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + ROBinMessage: TROBinMessage; + WinMessageServer: TROWinMessageServer; + NamedPipeServer: TRONamedPipeServer; + IndyHTTPServer: TROIndyHTTPServer; + IndyTCPServer: TROIndyTCPServer; + SuperTcpServer: TROSuperTcpServer; + IndyUDPServer: TROIndyUDPServer; + BPDXTCPServer: TROBPDXTCPServer; + BPDXHTTPServer: TROBPDXHTTPServer; + Memo: TMemo; + cbIndyHTTPServer: TCheckBox; + cbBPDXHttpServer: TCheckBox; + cbSuperTcpServer: TCheckBox; + cbIndyTcpServer: TCheckBox; + cbBPDXTcpServer: TCheckBox; + cbIndyUdpServer: TCheckBox; + cbNamedPipeServer: TCheckBox; + cbWinMessageServer: TCheckBox; + ErrorMemo: TMemo; + SuperHttpServer: TROIpSuperHttpServer; + cbSuperHttpServer: TCheckBox; + procedure ROBinMessageInitializeMessage(Sender: TROMessage; + const aTransport: IROTransport; const anInterfaceName, + aMessageName: string); + procedure stub(aStream: TStream); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure cbIndyHTTPServerClick(Sender: TObject); + procedure cbBPDXHttpServerClick(Sender: TObject); + procedure cbSuperTcpServerClick(Sender: TObject); + procedure cbIndyTcpServerClick(Sender: TObject); + procedure cbBPDXTcpServerClick(Sender: TObject); + procedure cbLocalServerClick(Sender: TObject); + procedure cbIndyUdpServerClick(Sender: TObject); + procedure cbNamedPipeServerClick(Sender: TObject); + procedure cbWinMessageServerClick(Sender: TObject); + procedure EmailServerException(aSender: TObject; + aExceptionClass: TClass; const aExceptionMessage: string); + procedure cbSuperHttpServerClick(Sender: TObject); + private + { Private declarations } + CriticalSection: tCriticalSection; + procedure ActivateServer(Server: TROServer; Mode: Boolean); + public + procedure Log(Astr: string); + { Public declarations } + end; + +var + MultiChannel_ServerMainForm: TMultiChannel_ServerMainForm; + +implementation +uses Dialogs; +{$R *.dfm} + +procedure TMultiChannel_ServerMainForm.Log(Astr: string); +begin + CriticalSection.Enter; + try + Memo.Lines.Add(Astr); + finally + CriticalSection.Leave; + end; +end; + +procedure TMultiChannel_ServerMainForm.ROBinMessageInitializeMessage( + Sender: TROMessage; const aTransport: IROTransport; + const anInterfaceName, aMessageName: string); +begin + Log('Connect via ' + Tobject(aTransport.GetTransportObject).ClassName); + Log(anInterfaceName + ':'#9 + StringReplace(aMessageName, 'Response', '', [])); + Log(''); +end; + +procedure TMultiChannel_ServerMainForm.stub(aStream: TStream); +begin + // stub for prevention of a error +end; + +procedure TMultiChannel_ServerMainForm.FormCreate(Sender: TObject); +begin + CriticalSection := TCriticalSection.Create; +end; + +procedure TMultiChannel_ServerMainForm.FormDestroy(Sender: TObject); +begin + CriticalSection.Free; +end; + +procedure TMultiChannel_ServerMainForm.cbIndyHTTPServerClick( + Sender: TObject); +begin + ActivateServer(IndyHTTPServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbBPDXHttpServerClick( + Sender: TObject); +begin + ActivateServer(BPDXHttpServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbSuperTcpServerClick( + Sender: TObject); +begin + ActivateServer(SuperTcpServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbIndyTcpServerClick( + Sender: TObject); +begin + ActivateServer(IndyTcpServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbBPDXTcpServerClick( + Sender: TObject); +begin + ActivateServer(BPDXTcpServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbLocalServerClick(Sender: TObject); +begin + Log('This server can be tested only on client side.') +end; + +procedure TMultiChannel_ServerMainForm.cbIndyUdpServerClick( + Sender: TObject); +begin + ActivateServer(IndyUdpServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbNamedPipeServerClick( + Sender: TObject); +begin + ActivateServer(NamedPipeServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.cbWinMessageServerClick( + Sender: TObject); +begin + ActivateServer(WinMessageServer, TCheckBox(Sender).Checked); +end; + +procedure TMultiChannel_ServerMainForm.ActivateServer(Server: TROServer; + Mode: Boolean); +begin + Server.Active := Mode; + Memo.Visible := + WinMessageServer.Active or + NamedPipeServer.Active or + IndyHTTPServer.Active or + IndyTCPServer.Active or + SuperTcpServer.Active or + IndyUDPServer.Active or + BPDXTCPServer.Active or + BPDXHTTPServer.Active or + SuperHTTPServer.Active; + ErrorMemo.Visible := not Memo.Visible; + if Server.Active then + Log(Server.Name + ' is activated!') + else + Log(Server.Name + ' is deactivated!'); + Log(''); +end; + +procedure TMultiChannel_ServerMainForm.EmailServerException( + aSender: TObject; aExceptionClass: TClass; + const aExceptionMessage: string); +begin + ShowMessage('There was a problem in the Email Server Thread:'#13#13 + aExceptionClass.ClassName + ': ' + aExceptionMessage); +end; + +procedure TMultiChannel_ServerMainForm.cbSuperHttpServerClick( + Sender: TObject); +begin + ActivateServer(SuperHttpServer, TCheckBox(Sender).Checked); +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/RODLFILE.res new file mode 100644 index 0000000..de596ec Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Multi Channel/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.bdsproj new file mode 100644 index 0000000..969da59 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + NamedPipeClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dpr new file mode 100644 index 0000000..624ee70 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dpr @@ -0,0 +1,15 @@ +program NamedPipeClient; + +uses + uROComInit, + Forms, + NamedPipeClientMain in 'NamedPipeClientMain.pas' {NamedPipeClientMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Named Pipes Client'; + Application.CreateForm(TNamedPipeClientMainForm, NamedPipeClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dproj new file mode 100644 index 0000000..a6bf3f9 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.dproj @@ -0,0 +1,78 @@ + + + {74686689-c7fb-4b01-b7a9-40feaee9825d} + NamedPipeClient.dpr + Debug + AnyCPU + DCC32 + NamedPipeClient.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + NamedPipeClient.dpr + + + + + + + MainSource + + +
    NamedPipeClientMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClient.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.dfm new file mode 100644 index 0000000..2b04fca --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.dfm @@ -0,0 +1,69 @@ +object NamedPipeClientMainForm: TNamedPipeClientMainForm + Left = 240 + Top = 150 + AutoScroll = False + Caption = 'Named Pipes Client' + ClientHeight = 306 + ClientWidth = 379 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object GetPathButton: TButton + Left = 9 + Top = 12 + Width = 75 + Height = 25 + Caption = 'Get Path' + TabOrder = 0 + OnClick = GetPathButtonClick + end + object Memo: TMemo + Left = 7 + Top = 52 + Width = 365 + Height = 245 + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 3 + end + object UpTimeButton: TButton + Left = 88 + Top = 12 + Width = 91 + Height = 25 + Caption = 'Server UpTime' + TabOrder = 1 + OnClick = UpTimeButtonClick + end + object GetConnectedUsersCountButton: TButton + Left = 182 + Top = 12 + Width = 148 + Height = 25 + Caption = 'Get Connected Users Count' + TabOrder = 2 + OnClick = GetConnectedUsersCountButtonClick + end + object ROMessage: TROBinMessage + Left = 132 + Top = 66 + end + object ROChannel: TRONamedPipeChannel + ServerLocators = <> + DispatchOptions = [] + ServerID = 'NamedPipeServerService_ID' + ServerName = '.' + Left = 104 + Top = 66 + end + object RONamedPipeServer: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'NamedPipeService' + Left = 160 + Top = 66 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.pas new file mode 100644 index 0000000..dfd160f --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeClientMain.pas @@ -0,0 +1,63 @@ +unit NamedPipeClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uRONamedPipeChannel, NamedPipeLibrary_Intf; +type + TNamedPipeClientMainForm = class(TForm) + ROMessage: TROBinMessage; + ROChannel: TRONamedPipeChannel; + RONamedPipeServer: TRORemoteService; + GetPathButton: TButton; + Memo: TMemo; + UpTimeButton: TButton; + GetConnectedUsersCountButton: TButton; + procedure GetPathButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure UpTimeButtonClick(Sender: TObject); + procedure GetConnectedUsersCountButtonClick(Sender: TObject); + private + { Private declarations } + FService: INamedPipeService; + public + { Public declarations } + end; + +var + NamedPipeClientMainForm: TNamedPipeClientMainForm; + +implementation + +{$R *.dfm} + +procedure TNamedPipeClientMainForm.GetPathButtonClick(Sender: TObject); +begin + Memo.Lines.text := StringReplace(FService.getPath, ';', sLineBreak, [rfReplaceAll]); +end; + +procedure TNamedPipeClientMainForm.FormCreate(Sender: TObject); +begin + FService := RONamedPipeServer as INamedPipeService; +end; + +procedure TNamedPipeClientMainForm.UpTimeButtonClick(Sender: TObject); +var + uptime: TDateTime; + d, h, m, s, ms: word; +begin + uptime := FService.UpTime; + d := Trunc(UpTime); + DecodeTime(uptime, h, m, s, ms); + Memo.Lines.text := Format('Server uptime is %d day %d hour %d min %d sec', [d, h, m, s]); +end; + +procedure TNamedPipeClientMainForm.GetConnectedUsersCountButtonClick( + Sender: TObject); +begin + Memo.Lines.text := 'Connected users on server is ' + IntToStr(FService.GetConnectedUsersCount); +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.Sample.html new file mode 100644 index 0000000..5f0e355 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.Sample.html @@ -0,0 +1,30 @@ + + + + + + + + + +

    + Named Pipes Sample +

    + +

    Purpose

    + +

    This example shows the use of a named pipe connection. It creates a named pipe server as a Windows service.

    + +

    Getting Started

    +
      +
    • Build or compile both projects.
    • +
    • Run the install_service.cmd file provided.
    • +
    • Run the NamedPipeClient.exe.
    • +
    + +

    Note

    +

    To uninstall the NamedPipeServer.exe, run the uninstall_service.cmd + file provided.

    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bdsgroup new file mode 100644 index 0000000..8de25da --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + NamedPipeServer.bdsproj + NamedPipeClient.bdsproj + NamedPipeServer.exe NamedPipeClient.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bpg new file mode 100644 index 0000000..070893c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = NamedPipeServer.exe NamedPipeClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +NamedPipeServer.exe: NamedPipeServer.dpr + $(DCC) + +NamedPipeClient.exe: NamedPipeClient.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.groupproj new file mode 100644 index 0000000..c750633 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeGroup.groupproj @@ -0,0 +1,40 @@ + + + {08382df8-e356-42f2-9a54-b54aca159b7f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary.rodl new file mode 100644 index 0000000..8a1b0d3 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary.rodl @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Intf.pas new file mode 100644 index 0000000..4f6a86a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Intf.pas @@ -0,0 +1,129 @@ +unit NamedPipeLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{BC2D6352-25BF-4A67-A9DD-9ED1CEE3DE20}'; + TargetNamespace = ''; + + { Service Interface ID's } + INamedPipeService_IID : TGUID = '{DCD778A1-C1C3-485F-B723-D4997B7AA972}'; + + { Event ID's } + +type + { Forward declarations } + INamedPipeService = interface; + + + { INamedPipeService } + INamedPipeService = interface + ['{DCD778A1-C1C3-485F-B723-D4997B7AA972}'] + function GetPath: Widestring; + function GetConnectedUsersCount: Integer; + function UpTime: DateTime; + end; + + { CoNamedPipeService } + CoNamedPipeService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INamedPipeService; + end; + + { TNamedPipeService_Proxy } + TNamedPipeService_Proxy = class(TROProxy, INamedPipeService) + protected + function __GetInterfaceName:string; override; + + function GetPath: Widestring; + function GetConnectedUsersCount: Integer; + function UpTime: DateTime; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoNamedPipeService } + +class function CoNamedPipeService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INamedPipeService; +begin + result := TNamedPipeService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TNamedPipeService_Proxy } + +function TNamedPipeService_Proxy.__GetInterfaceName:string; +begin + result := 'NamedPipeService'; +end; + +function TNamedPipeService_Proxy.GetPath: Widestring; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'NamedPipeLibrary', __InterfaceName, 'GetPath'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Widestring), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TNamedPipeService_Proxy.GetConnectedUsersCount: Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'NamedPipeLibrary', __InterfaceName, 'GetConnectedUsersCount'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TNamedPipeService_Proxy.UpTime: DateTime; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'NamedPipeLibrary', __InterfaceName, 'UpTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(INamedPipeService_IID, TNamedPipeService_Proxy); + + +finalization + UnregisterProxyClass(INamedPipeService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Invk.pas new file mode 100644 index 0000000..cd25ff2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeLibrary_Invk.pas @@ -0,0 +1,97 @@ +unit NamedPipeLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} NamedPipeLibrary_Intf; + +type + TNamedPipeService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetPath(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetConnectedUsersCount(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TNamedPipeService_Invoker } + +constructor TNamedPipeService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TNamedPipeService_Invoker.Invoke_GetPath(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetPath: Widestring; } +var + lResult: Widestring; +begin + try + lResult := (__Instance as INamedPipeService).GetPath; + + __Message.InitializeResponseMessage(__Transport, 'NamedPipeLibrary', 'NamedPipeService', 'GetPathResponse'); + __Message.Write('Result', TypeInfo(Widestring), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TNamedPipeService_Invoker.Invoke_GetConnectedUsersCount(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetConnectedUsersCount: Integer; } +var + lResult: Integer; +begin + try + lResult := (__Instance as INamedPipeService).GetConnectedUsersCount; + + __Message.InitializeResponseMessage(__Transport, 'NamedPipeLibrary', 'NamedPipeService', 'GetConnectedUsersCountResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TNamedPipeService_Invoker.Invoke_UpTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpTime: DateTime; } +var + lResult: DateTime; +begin + try + lResult := (__Instance as INamedPipeService).UpTime; + + __Message.InitializeResponseMessage(__Transport, 'NamedPipeLibrary', 'NamedPipeService', 'UpTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.bdsproj new file mode 100644 index 0000000..ecfe67d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + NamedPipeServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dpr new file mode 100644 index 0000000..3a4d969 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dpr @@ -0,0 +1,21 @@ +program NamedPipeServer; + +{#ROGEN:NamedPipeLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + SvcMgr, + NamedPipeServerMain in 'NamedPipeServerMain.pas' {NamedPipeServerService: TService}, + NamedPipeLibrary_Intf in 'NamedPipeLibrary_Intf.pas', + NamedPipeLibrary_Invk in 'NamedPipeLibrary_Invk.pas', + NamedPipeService_Impl in 'NamedPipeService_Impl.pas'; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'Named Pipes Server'; + Application.CreateForm(TNamedPipeServerService, NamedPipeServerService); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dproj new file mode 100644 index 0000000..ebbafa8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.dproj @@ -0,0 +1,81 @@ + + + {12bb6a7e-498d-4663-8c5d-bce90c5e41a8} + NamedPipeServer.dpr + Debug + AnyCPU + DCC32 + NamedPipeServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + NamedPipeServer.dpr + + + + + + + MainSource + + + + +
    NamedPipeServerService
    +
    + +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.res new file mode 100644 index 0000000..95e15d9 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.dfm new file mode 100644 index 0000000..4bef3b6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.dfm @@ -0,0 +1,27 @@ +object NamedPipeServerService: TNamedPipeServerService + OldCreateOrder = False + DisplayName = 'NamedPipeServerService' + OnContinue = ServiceContinue + OnPause = ServicePause + OnStart = ServiceStart + OnStop = ServiceStop + Left = 158 + Top = 156 + Height = 171 + Width = 215 + object ROMessage: TROBinMessage + Left = 55 + Top = 52 + end + object ROServer: TRONamedPipeServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + end> + ServerID = 'NamedPipeServerService_ID' + Left = 56 + Top = 8 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.pas new file mode 100644 index 0000000..c03099a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeServerMain.pas @@ -0,0 +1,61 @@ +unit NamedPipeServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, + uROClient, uROClientIntf, uROServer, uROBinMessage, uRONamedPipeServer; + +type + TNamedPipeServerService = class(TService) + ROMessage: TROBinMessage; + ROServer: TRONamedPipeServer; + procedure ServiceStart(Sender: TService; var Started: Boolean); + procedure ServiceStop(Sender: TService; var Stopped: Boolean); + procedure ServicePause(Sender: TService; var Paused: Boolean); + procedure ServiceContinue(Sender: TService; var Continued: Boolean); + private + { Private declarations } + public + function GetServiceController: TServiceController; override; + { Public declarations } + end; + +var + NamedPipeServerService: TNamedPipeServerService; + +implementation + +{$R *.dfm} + +procedure ServiceController(CtrlCode: DWord); stdcall; +begin + NamedPipeServerService.Controller(CtrlCode); +end; + +function TNamedPipeServerService.GetServiceController: TServiceController; +begin + Result := ServiceController; +end; + +procedure TNamedPipeServerService.ServiceStart(Sender:TService; var Started:Boolean); +begin + RoServer.Active := true; +end; + +procedure TNamedPipeServerService.ServiceStop(Sender:TService; var Stopped:Boolean); +begin + RoServer.Active := false; +end; + +procedure TNamedPipeServerService.ServicePause(Sender:TService; var Paused:Boolean); +begin + RoServer.Active := false; +end; + +procedure TNamedPipeServerService.ServiceContinue(Sender:TService; var Continued:Boolean); +begin + RoServer.Active := true; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeService_Impl.pas new file mode 100644 index 0000000..f401b30 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/NamedPipeService_Impl.pas @@ -0,0 +1,63 @@ +unit NamedPipeService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Generated:} NamedPipeLibrary_Intf; + +type + { TNamedPipeService } + TNamedPipeService = class(TRORemotable, INamedPipeService) + private + protected + { INamedPipeService methods } + function GetPath: Widestring; + function GetConnectedUsersCount: Integer; + function UpTime: DateTime; + end; + +implementation + +uses + {Generated:} NamedPipeLibrary_Invk, + Windows; + +procedure Create_NamedPipeService(out anInstance: IUnknown); +begin + anInstance := TNamedPipeService.Create; +end; + +{ NamedPipeService } + +function TNamedPipeService.GetConnectedUsersCount: Integer; +begin + Result := Random(100); +end; + +function TNamedPipeService.GetPath: Widestring; +begin + Result := GetEnvironmentVariable('Path'); +end; + +function TNamedPipeService.UpTime: DateTime; +begin + Result := GetTickCount / MSecsPerDay; +end; + +initialization + Randomize; + TROClassFactory.Create('NamedPipeService', Create_NamedPipeService, TNamedPipeService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/RODLFILE.res new file mode 100644 index 0000000..e12681b Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/install_service.cmd b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/install_service.cmd new file mode 100644 index 0000000..61927ad --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/install_service.cmd @@ -0,0 +1,2 @@ +NamedPipeServer.exe /install +net start NamedPipeServerService \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/uninstall_service.cmd b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/uninstall_service.cmd new file mode 100644 index 0000000..239d0a6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Named Pipes/uninstall_service.cmd @@ -0,0 +1,2 @@ +net stop NamedPipeServerService +NamedPipeServer.exe /uninstall diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.Sample.html new file mode 100644 index 0000000..13caf4e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.Sample.html @@ -0,0 +1,28 @@ + + + + + + + + + +

    + Proxy Server Sample +

    + + +

    Purpose

    + +

    This example shows how to create a proxy server to redirect the calls to another + server without having to recreate the RODL file, thus allowing the use of the same types of the original server.
    +This provides total control. As every call will pass from the proxy class before going to the real server, you can even stop methods from being dispatched any further.

    + +

    +ProxyServer_ProxyServer_Impl was created by simply copying the original MainService_Impl.pas file, renaming the TMainService class to TProxyService followed by implementing a bypass for all the method calls. This class is basically a server which accesses a RemObjects SDK server as a client would do. +

    +

    Getting Started

    +Launch both servers and run the client.
    +The client allows you to select either server. When you execute a method using the Proxy Server, you will see both servers log the call. + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bdsgroup new file mode 100644 index 0000000..adffb7a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bdsgroup @@ -0,0 +1,21 @@ + + + + + + + + + + + + + ProxyServer_MainServer.bdsproj + ProxyServer_Client.bdsproj + ProxyServer_ProxyServer.bdsproj + ProxyServer_MainServer.exe ProxyServer_Client.exe ProxyServer_ProxyServer.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bpg new file mode 100644 index 0000000..10a7447 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.bpg @@ -0,0 +1,26 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = ProxyServer_MainServer.exe ProxyServer_Client.exe ProxyServer_ProxyServer.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +ProxyServer_MainServer.exe: ProxyServer_MainServer.dpr + $(DCC) + +ProxyServer_Client.exe: ProxyServer_Client.dpr + $(DCC) + +ProxyServer_ProxyServer.exe: ProxyServer_ProxyServer.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.groupproj new file mode 100644 index 0000000..c758a07 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer.groupproj @@ -0,0 +1,49 @@ + + + {908dd4fb-64f2-4f8b-b627-9f3ff95b8990} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary.rodl new file mode 100644 index 0000000..f891a62 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary.rodl @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Intf.pas new file mode 100644 index 0000000..70e8225 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Intf.pas @@ -0,0 +1,247 @@ +unit ProxyServerMainLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{00B1E82E-7479-4679-AB2F-4D18228C6F44}'; + TargetNamespace = ''; + + { Service Interface ID's } + IProxyServerMainService_IID : TGUID = '{00B1E82E-7479-4679-AB2F-4D18228C6F44}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + IProxyServerMainService = interface; + + TestStruct = class; + + + { TestStruct } + TestStruct = class(TROComplexType) + private + fName: AnsiString; + fIntNumber: Integer; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:AnsiString read fName write fName; + property IntNumber:Integer read fIntNumber write fIntNumber; + end; + + { TestStructCollection } + TestStructCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TestStruct; + procedure SetItems(aIndex: integer; const Value: TestStruct); + public + constructor Create; overload; + function Add: TestStruct; reintroduce; + property Items[Index: integer]:TestStruct read GetItems write SetItems; default; + end; + + { IProxyServerMainService } + IProxyServerMainService = interface + ['{00B1E82E-7479-4679-AB2F-4D18228C6F44}'] + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + function EchoStruct(const aTestStruct: TestStruct): TestStruct; + end; + + { CoProxyServerMainService } + CoProxyServerMainService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IProxyServerMainService; + end; + + { TProxyServerMainService_Proxy } + TProxyServerMainService_Proxy = class(TROProxy, IProxyServerMainService) + protected + function __GetInterfaceName:string; override; + + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + function EchoStruct(const aTestStruct: TestStruct): TestStruct; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ TestStruct } + +procedure TestStruct.Assign(iSource: TPersistent); +var lSource: ProxyServerMainLibrary_Intf.TestStruct; +begin + inherited Assign(iSource); + if (iSource is ProxyServerMainLibrary_Intf.TestStruct) then begin + lSource := ProxyServerMainLibrary_Intf.TestStruct(iSource); + Name := lSource.Name; + IntNumber := lSource.IntNumber; + end; +end; + +procedure TestStruct.ReadComplex(ASerializer: TObject); +var + l_IntNumber: Integer; + l_Name: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadAnsiString('Name', l_Name); + Name := l_Name; + l_IntNumber := IntNumber; + TROSerializer(ASerializer).ReadInteger('IntNumber', otSLong, l_IntNumber); + IntNumber := l_IntNumber; + end + else begin + l_IntNumber := IntNumber; + TROSerializer(ASerializer).ReadInteger('IntNumber', otSLong, l_IntNumber); + IntNumber := l_IntNumber; + l_Name := Name; + TROSerializer(ASerializer).ReadAnsiString('Name', l_Name); + Name := l_Name; + end; +end; + +procedure TestStruct.WriteComplex(ASerializer: TObject); +var + l_IntNumber: Integer; + l_Name: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(TestStruct); + l_Name := Name; + TROSerializer(ASerializer).WriteAnsiString('Name', l_Name); + l_IntNumber := IntNumber; + TROSerializer(ASerializer).WriteInteger('IntNumber', otSLong, l_IntNumber); + end + else begin + l_IntNumber := IntNumber; + TROSerializer(ASerializer).WriteInteger('IntNumber', otSLong, l_IntNumber); + l_Name := Name; + TROSerializer(ASerializer).WriteAnsiString('Name', l_Name); + end; +end; + +{ TestStructCollection } +constructor TestStructCollection.Create; +begin + inherited Create(TestStruct); +end; + +constructor TestStructCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TestStructCollection.Add: TestStruct; +begin + result := TestStruct(inherited Add); +end; + +function TestStructCollection.GetItems(aIndex: integer): TestStruct; +begin + result := TestStruct(inherited Items[aIndex]); +end; + +procedure TestStructCollection.SetItems(aIndex: integer; const Value: TestStruct); +begin + TestStruct(inherited Items[aIndex]).Assign(Value); +end; + +{ CoProxyServerMainService } + +class function CoProxyServerMainService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IProxyServerMainService; +begin + result := TProxyServerMainService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TProxyServerMainService_Proxy } + +function TProxyServerMainService_Proxy.__GetInterfaceName:string; +begin + result := 'ProxyServerMainService'; +end; + +function TProxyServerMainService_Proxy.Sum(const A: Integer; const B: Integer): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'ProxyServerMainLibrary', __InterfaceName, 'Sum'); + __Message.Write('A', TypeInfo(Integer), A, []); + __Message.Write('B', TypeInfo(Integer), B, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TProxyServerMainService_Proxy.GetServerTime: DateTime; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'ProxyServerMainLibrary', __InterfaceName, 'GetServerTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TProxyServerMainService_Proxy.EchoStruct(const aTestStruct: TestStruct): TestStruct; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'ProxyServerMainLibrary', __InterfaceName, 'EchoStruct'); + __Message.Write('aTestStruct', TypeInfo(ProxyServerMainLibrary_Intf.TestStruct), aTestStruct, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(ProxyServerMainLibrary_Intf.TestStruct), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TestStruct); + RegisterProxyClass(IProxyServerMainService_IID, TProxyServerMainService_Proxy); + + +finalization + UnregisterROClass(TestStruct); + UnregisterProxyClass(IProxyServerMainService_IID); + + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Invk.pas new file mode 100644 index 0000000..dda4518 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainLibrary_Invk.pas @@ -0,0 +1,116 @@ +unit ProxyServerMainLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} ProxyServerMainLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TProxyServerMainService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EchoStruct(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TProxyServerMainService_Invoker } + +constructor TProxyServerMainService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TProxyServerMainService_Invoker.Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Sum(const A: Integer; const B: Integer): Integer; } +var + A: Integer; + B: Integer; + lResult: Integer; +begin + try + __Message.Read('A', TypeInfo(Integer), A, []); + __Message.Read('B', TypeInfo(Integer), B, []); + + lResult := (__Instance as IProxyServerMainService).Sum(A, B); + + __Message.InitializeResponseMessage(__Transport, 'ProxyServerMainLibrary', 'ProxyServerMainService', 'SumResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TProxyServerMainService_Invoker.Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetServerTime: DateTime; } +var + lResult: DateTime; +begin + try + lResult := (__Instance as IProxyServerMainService).GetServerTime; + + __Message.InitializeResponseMessage(__Transport, 'ProxyServerMainLibrary', 'ProxyServerMainService', 'GetServerTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TProxyServerMainService_Invoker.Invoke_EchoStruct(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function EchoStruct(const aTestStruct: TestStruct): TestStruct; } +var + aTestStruct: ProxyServerMainLibrary_Intf.TestStruct; + lResult: ProxyServerMainLibrary_Intf.TestStruct; + __lObjectDisposer: TROObjectDisposer; +begin + aTestStruct := nil; + lResult := nil; + try + __Message.Read('aTestStruct', TypeInfo(ProxyServerMainLibrary_Intf.TestStruct), aTestStruct, []); + + lResult := (__Instance as IProxyServerMainService).EchoStruct(aTestStruct); + + __Message.InitializeResponseMessage(__Transport, 'ProxyServerMainLibrary', 'ProxyServerMainService', 'EchoStructResponse'); + __Message.Write('Result', TypeInfo(ProxyServerMainLibrary_Intf.TestStruct), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(aTestStruct); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainService_Impl.pas new file mode 100644 index 0000000..43bd3a8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServerMainService_Impl.pas @@ -0,0 +1,63 @@ +unit ProxyServerMainService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Generated:} ProxyServerMainLibrary_Intf; + +type + { TProxyServerMainService } + TProxyServerMainService = class(TRORemotable, IProxyServerMainService) + private + protected + { IProxyServerMainService methods } + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + function EchoStruct(const aTestStruct: TestStruct): TestStruct; + end; + +implementation + +uses + {Generated:} ProxyServerMainLibrary_Invk; + +procedure Create_ProxyServerMainService(out anInstance: IUnknown); +begin + anInstance := TProxyServerMainService.Create; +end; + +{ ProxyServerMainService } + +function TProxyServerMainService.Sum(const A: Integer; const B: Integer): Integer; +begin + result := A + B; +end; + +function TProxyServerMainService.GetServerTime: DateTime; +begin + result := Now; +end; + +function TProxyServerMainService.EchoStruct(const aTestStruct: TestStruct): TestStruct; +begin + result := TestStruct.Create; + result.Name := aTestStruct.Name; + result.IntNumber := aTestStruct.IntNumber; +end; + +initialization + TROClassFactory.Create('ProxyServerMainService', Create_ProxyServerMainService, TProxyServerMainService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.bdsproj new file mode 100644 index 0000000..d54685a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ProxyServer_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dpr new file mode 100644 index 0000000..82dca25 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dpr @@ -0,0 +1,14 @@ +program ProxyServer_Client; + +uses + Forms, + ProxyServer_Client_Main in 'ProxyServer_Client_Main.pas' {ProxyServer_Client_MainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'ProxyServer - Client'; + Application.CreateForm(TProxyServer_Client_MainForm, ProxyServer_Client_MainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dproj new file mode 100644 index 0000000..1ebf597 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.dproj @@ -0,0 +1,78 @@ + + + {40192763-adee-47c0-a56b-982934cc7c3f} + ProxyServer_Client.dpr + Debug + AnyCPU + DCC32 + ProxyServer_Client.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ProxyServer_Client.dpr + + + + + + + MainSource + + +
    ProxyServer_Client_MainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.res new file mode 100644 index 0000000..fb3116f Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.dfm new file mode 100644 index 0000000..912eba6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.dfm @@ -0,0 +1,81 @@ +object ProxyServer_Client_MainForm: TProxyServer_Client_MainForm + Left = 127 + Top = 126 + Width = 209 + Height = 188 + Caption = 'ProxyServer - Client' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 9 + Top = 12 + Width = 36 + Height = 13 + Caption = 'Server:' + end + object cbServer: TComboBox + Left = 49 + Top = 8 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + ItemIndex = 0 + TabOrder = 0 + Text = 'Main Server' + Items.Strings = ( + 'Main Server' + 'Proxy Server') + end + object SumButton: TButton + Left = 46 + Top = 56 + Width = 109 + Height = 25 + Caption = 'Sum(1,2)' + TabOrder = 1 + OnClick = SumButtonClick + end + object GetServerTimeButton: TButton + Left = 46 + Top = 88 + Width = 109 + Height = 25 + Caption = 'GetServerTime' + TabOrder = 2 + OnClick = GetServerTimeButtonClick + end + object EchoStructButton: TButton + Left = 46 + Top = 120 + Width = 109 + Height = 25 + Caption = 'EchoStruct' + TabOrder = 3 + OnClick = EchoStructButtonClick + end + object ROBINMessage: TROBinMessage + Left = 8 + Top = 40 + end + object ROIndyTCPChannel: TROIndyTCPChannel + ServerLocators = <> + DispatchOptions = [] + Port = 8090 + Host = '127.0.0.1' + Left = 40 + Top = 40 + end + object ROWinMessageChannel: TROWinMessageChannel + ServerLocators = <> + DispatchOptions = [] + ServerID = '{F5B38440-F071-45B8-AF67-1023F20C179D}' + Delay = 50 + Left = 40 + Top = 72 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.pas new file mode 100644 index 0000000..86fd06b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_Client_Main.pas @@ -0,0 +1,72 @@ +unit ProxyServer_Client_Main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uROIndyTCPChannel, + uROClient, uROBINMessage, ProxyServerMainLibrary_Intf, uROWinMessageChannel; + +type + TProxyServer_Client_MainForm = class(TForm) + ROBINMessage: TROBINMessage; + ROIndyTCPChannel: TROIndyTCPChannel; + Label1: TLabel; + cbServer: TComboBox; + SumButton: TButton; + GetServerTimeButton: TButton; + EchoStructButton: TButton; + ROWinMessageChannel: TROWinMessageChannel; + procedure SumButtonClick(Sender: TObject); + procedure GetServerTimeButtonClick(Sender: TObject); + procedure EchoStructButtonClick(Sender: TObject); + private + function CreateService: IProxyServerMainService; + public + + end; + +var + ProxyServer_Client_MainForm: TProxyServer_Client_MainForm; + +implementation + +{$R *.dfm} + +function TProxyServer_Client_MainForm.CreateService: IProxyServerMainService; +begin + if cbServer.ItemIndex = 0 then + result := CoProxyServerMainService.Create(ROBINMessage, ROIndyTCPChannel) // TCP over main one + else + result := CoProxyServerMainService.Create(ROBINMessage, ROWinMessageChannel) // Windows messages to proxy +end; + +procedure TProxyServer_Client_MainForm.SumButtonClick(Sender: TObject); +begin + ShowMessage('Result is ' + IntToStr(CreateService.Sum(1, 2))); +end; + +procedure TProxyServer_Client_MainForm.GetServerTimeButtonClick(Sender: TObject); +begin + ShowMessage('Time is ' + DateTimeToStr(CreateService.GetServerTime)); +end; + +procedure TProxyServer_Client_MainForm.EchoStructButtonClick(Sender: TObject); +var + out_struct, in_struct: TestStruct; +begin + in_struct := nil; + out_struct := TestStruct.Create; + out_struct.Name := 'Dave Fuller'; + out_struct.IntNumber := 666; + try + in_struct := CreateService.EchoStruct(out_struct); + ShowMessage(string(out_struct.Name) + ', ' + IntToStr(out_struct.IntNumber)); + finally + if in_struct <> nil then in_struct.Free; + out_struct.Free; + end; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.bdsproj new file mode 100644 index 0000000..9ae271b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ProxyServer_MainServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dpr new file mode 100644 index 0000000..e009288 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dpr @@ -0,0 +1,20 @@ +program ProxyServer_MainServer; + +{#ROGEN:ProxyServerMainLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + Forms, + ProxyServer_MainServer_Main in 'ProxyServer_MainServer_Main.pas' {ProxyServer_MainServer_MainForm}, + ProxyServerMainLibrary_Intf in 'ProxyServerMainLibrary_Intf.pas', + ProxyServerMainLibrary_Invk in 'ProxyServerMainLibrary_Invk.pas', + ProxyServerMainService_Impl in 'ProxyServerMainService_Impl.pas'; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'ProxyServer - Main Server'; + Application.CreateForm(TProxyServer_MainServer_MainForm, ProxyServer_MainServer_MainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dproj new file mode 100644 index 0000000..cf4ab22 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.dproj @@ -0,0 +1,81 @@ + + + {6d2f01cb-292f-4613-bb90-73f9c18e9b28} + ProxyServer_MainServer.dpr + Debug + AnyCPU + DCC32 + ProxyServer_MainServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ProxyServer_MainServer.dpr + + + + + + + MainSource + + + + + +
    ProxyServer_MainServer_MainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.res new file mode 100644 index 0000000..53aa370 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.dfm new file mode 100644 index 0000000..cc88fa8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.dfm @@ -0,0 +1,38 @@ +object ProxyServer_MainServer_MainForm: TProxyServer_MainServer_MainForm + Left = 202 + Top = 241 + Width = 232 + Height = 109 + Caption = 'ProxyServer - Main Server' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Memo: TMemo + Left = 0 + Top = 0 + Width = 224 + Height = 76 + Align = alClient + TabOrder = 0 + end + object ROMessage: TROBinMessage + Left = 88 + Top = 8 + end + object ROServer: TROIndyTCPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + end> + OnReadFromStream = ROServerReadFromStream + Port = 8090 + Left = 56 + Top = 8 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.pas new file mode 100644 index 0000000..f32fb8b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_MainServer_Main.pas @@ -0,0 +1,42 @@ +unit ProxyServer_MainServer_Main; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, uROClient, uROBINMessage, uROClientIntf, uROServer, uROIndyTCPServer; + +type + TProxyServer_MainServer_MainForm = class(TForm) + ROMessage: TROBINMessage; + ROServer: TROIndyTCPServer; + Memo: TMemo; + procedure FormCreate(Sender: TObject); + procedure ROServerReadFromStream(aStream: TStream); + private + + protected + + public + + end; + +var + ProxyServer_MainServer_MainForm: TProxyServer_MainServer_MainForm; + +implementation + + +{$R *.DFM} + +procedure TProxyServer_MainServer_MainForm.FormCreate(Sender: TObject); +begin + ROServer.Active := TRUE; +end; + +procedure TProxyServer_MainServer_MainForm.ROServerReadFromStream(aStream: TStream); +begin + Memo.Lines.Add('Request arrived...') +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.bdsproj new file mode 100644 index 0000000..1b26556 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ProxyServer_ProxyServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dpr new file mode 100644 index 0000000..4e2e858 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dpr @@ -0,0 +1,15 @@ +program ProxyServer_ProxyServer; + +uses + Forms, + ProxyServer_ProxyServer_Main in 'ProxyServer_ProxyServer_Main.pas' {ProxyServer_ProxyServer_MainForm}, + ProxyServer_ProxyServer_Impl in 'ProxyServer_ProxyServer_Impl.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'ProxyServer - Proxy Server'; + Application.CreateForm(TProxyServer_ProxyServer_MainForm, ProxyServer_ProxyServer_MainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dproj new file mode 100644 index 0000000..396d717 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.dproj @@ -0,0 +1,79 @@ + + + {9099b695-4d6f-4abe-8cc9-ee7cb8b02ae4} + ProxyServer_ProxyServer.dpr + Debug + AnyCPU + DCC32 + ProxyServer_ProxyServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ProxyServer_ProxyServer.dpr + + + + + + + MainSource + + + +
    ProxyServer_ProxyServer_MainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.res new file mode 100644 index 0000000..53aa370 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Impl.pas new file mode 100644 index 0000000..1aa4be7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Impl.pas @@ -0,0 +1,110 @@ +unit ProxyServer_ProxyServer_Impl; + +{ This example shows how to create a proxy server to redirect the calls to another + server without having to recreate the RODL file, thus allowing the use of the same types + of the original server. + + In order to create this kind of proxy server you need to: + + 1) start a **blank** project (without any RODL, since we want to use that of the original server) and + add the server and message components that the proxy will use to listen to requests. + !!! See the unit fProxyServerForm.pas and the DPR of this project. There's no RODL referenced in it. + + 2) Link the two components via a standard dispatcher item like you would normally do. + + 3) Create a new TRORemotable unit like this exact file you are looking at + + 4) Done! + + This unit was created by simply copying the original MainService_Impl.pas file, + renaming the TMainService class to TProxyService followed by implementing a bypass for all + the method calls. This class is basically a server which accesses a RO server as a client would do. + + There are other possible solutions to the proxy dilemma. This one though provides + more control over everything. Specifically, since every call will pass from the proxy class before + going to the real server, you can stop methods from being dispatched any further. + + Enjoy! +} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, + {Generated:} ProxyServerMainLibrary_Intf, + + uROIndyTCPChannel, uROClient, uROBINMessage; + +type + TProxyService = class(TRORemotable, IProxyServerMainService) + private + fTCPChannel: TROIndyTCPChannel; + fBINMessage: TROBINMessage; + + function CreateService: IProxyServerMainService; + + protected + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + function EchoStruct(const aTestStruct: TestStruct): TestStruct; + + public + constructor Create; override; + destructor Destroy; override; + + end; + +implementation + +uses + {Generated:} ProxyServerMainLibrary_Invk, SysUtils; + +procedure Create_ProxyService(out anInstance: IUnknown); +begin + anInstance := TProxyService.Create; +end; + +constructor TProxyService.Create; +begin + inherited; + + fTCPChannel := TROIndyTCPChannel.Create(nil); + fBINMessage := TROBINMessage.Create(nil); +end; + +destructor TProxyService.Destroy; +begin + fTCPChannel.Free; + fBINMessage.Free; + + inherited; +end; + +function TProxyService.CreateService: IProxyServerMainService; +begin + result := CoProxyServerMainService.Create(fBINMessage, fTCPChannel); +end; + +function TProxyService.Sum(const A: Integer; const B: Integer): Integer; +begin + result := CreateService.Sum(A, B) +end; + +function TProxyService.GetServerTime: DateTime; +begin + result := CreateService.GetServerTime +end; + +function TProxyService.EchoStruct(const aTestStruct: TestStruct): TestStruct; +begin + result := CreateService.EchoStruct(aTestStruct) +end; + +initialization + TROClassFactory.Create('ProxyServerMainService', Create_ProxyService, TProxyServerMainService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.dfm new file mode 100644 index 0000000..f92cc99 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.dfm @@ -0,0 +1,37 @@ +object ProxyServer_ProxyServer_MainForm: TProxyServer_ProxyServer_MainForm + Left = 177 + Top = 117 + Width = 290 + Height = 120 + Caption = 'ProxyServer - Proxy Server' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Memo: TMemo + Left = 0 + Top = 0 + Width = 282 + Height = 87 + Align = alClient + TabOrder = 0 + end + object ROWinMessageServer: TROWinMessageServer + Dispatchers = < + item + Name = 'ROBINMessage1' + Message = ROBINMessage1 + Enabled = True + end> + OnReadFromStream = ROWinMessageServerReadFromStream + ServerID = '{F5B38440-F071-45B8-AF67-1023F20C179D}' + Left = 72 + Top = 32 + end + object ROBINMessage1: TROBinMessage + Left = 104 + Top = 32 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.pas new file mode 100644 index 0000000..25532ab --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/ProxyServer_ProxyServer_Main.pas @@ -0,0 +1,40 @@ +unit ProxyServer_ProxyServer_Main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uROServer, uROWinMessageServer, + uROIndyTCPChannel, uROClient, uROBINMessage, StdCtrls; + +type + TProxyServer_ProxyServer_MainForm = class(TForm) + ROWinMessageServer: TROWinMessageServer; + ROBINMessage1: TROBINMessage; + Memo: TMemo; + procedure FormCreate(Sender: TObject); + procedure ROWinMessageServerReadFromStream(aStream: TStream); + private + { Private declarations } + public + { Public declarations } + end; + +var + ProxyServer_ProxyServer_MainForm: TProxyServer_ProxyServer_MainForm; + +implementation + +{$R *.dfm} + +procedure TProxyServer_ProxyServer_MainForm.FormCreate(Sender: TObject); +begin + ROWinMessageServer.Active := TRUE; +end; + +procedure TProxyServer_ProxyServer_MainForm.ROWinMessageServerReadFromStream(aStream: TStream); +begin + Memo.Lines.Add('Request arrived...') +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/RODLFILE.res new file mode 100644 index 0000000..e313b96 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Proxy Server/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.Sample.html new file mode 100644 index 0000000..faf54cb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.Sample.html @@ -0,0 +1,15 @@ + + + + + + + + + +

    RODL Sample

    + +

    Purpose

    This sample provides facilities to convert a RODL file into several other formats.

    The Generate button (executed on start up) loads a test library containing a range of RODL objects. Alternatively, use the Load button to look at one of your own files.

    Having loaded a file, select the conversion type (and Target Entry if generating implementaton code) followed by clicking on the Convert button.

    As well as examining the code provided by this sample, you might also want to look at the conversion routines used by:

    • RemObjects SDK (Common)\Bin\RODL.exe
    • RemObjects SDK (Common)\Bin\ROServiceBuilder3.exe
    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.bdsproj new file mode 100644 index 0000000..1e9041e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + RODL.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.cfg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.cfg new file mode 100644 index 0000000..6830344 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.cfg @@ -0,0 +1,35 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"d:\program files\borland\delphi7\Projects\Bpl" +-LN"d:\program files\borland\delphi7\Projects\Bpl" diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dof b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dof new file mode 100644 index 0000000..daab2a8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dof @@ -0,0 +1,141 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=1 +UnsafeCode=1 +UnsafeCast=1 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;webdsnap;websnap;dbexpress;dbxcds;DataAbstract_Core_D6;DataAbstract_IDE_D6;DataAbstract_ADOXDriver_D6;cxWebD6;cxWebSnapD6;cxScriptEngineD6;cxDataD6;EWFServerPack_Core_D6;EWFServerPack_IDE_D6;db317d6r +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Program Files\Borland\Delphi6\Bin\ +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +D:\Dev\DataAbstract\Dcu\D6\DataAbstract_MSADODACDriver_D6.bpl=Data Abstract - MSADODAC Driver +C:\PROGRA~1\Borland\Delphi6\Projects\Bpl\dclcxWebD6.bpl=ExpressWeb Framework by Developer Express Inc. +C:\Program Files\Developer Express Inc\ExpressWeb Framework\Delphi 6\Lib\dclcxWebSnapD6.bpl=ExpressWebPage Module for WebSnap Application by Developer Express Inc. +C:\Program Files\Developer Express Inc\ExpressWeb Framework\Delphi 6\Lib\dclcxWebTeeChartD6.bpl=WebTeeChart for EWF by Developer Express Inc. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dpr new file mode 100644 index 0000000..80df9ba --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dpr @@ -0,0 +1,13 @@ +program RODL; + +uses + Forms, + RODLMain in 'RODLMain.pas' {RODLMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TRODLMainForm, RODLMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dproj new file mode 100644 index 0000000..1ab7706 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.dproj @@ -0,0 +1,78 @@ + + + {fe0caa48-879c-4ec6-805b-8fca878a2b6c} + RODL.dpr + Debug + AnyCPU + DCC32 + RODL.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + RODL.dpr + + + + + + + MainSource + + +
    RODLMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.res new file mode 100644 index 0000000..3219dfb Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODL.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.dfm new file mode 100644 index 0000000..4a65b2d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.dfm @@ -0,0 +1,141 @@ +object RODLMainForm: TRODLMainForm + Left = 314 + Top = 104 + AutoScroll = False + Caption = 'RODL Demo' + ClientHeight = 232 + ClientWidth = 628 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnActivate = GenerateButtonClick + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 174 + Top = 48 + Width = 3 + Height = 165 + Cursor = crHSplit + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 628 + Height = 48 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + object lServices: TLabel + Left = 322 + Top = 2 + Width = 36 + Height = 13 + Caption = 'Service' + end + object Label1: TLabel + Left = 176 + Top = 2 + Width = 46 + Height = 13 + Caption = 'Converter' + end + object LoadButton: TButton + Left = 96 + Top = 14 + Width = 75 + Height = 25 + Caption = 'Load' + TabOrder = 0 + OnClick = LoadButtonClick + end + object GenerateButton: TButton + Left = 8 + Top = 14 + Width = 75 + Height = 25 + Caption = 'Generate' + TabOrder = 1 + OnClick = GenerateButtonClick + end + object cbWriters: TComboBox + Left = 176 + Top = 16 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + OnChange = cbWritersChange + end + object cbServices: TComboBox + Left = 322 + Top = 16 + Width = 145 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 3 + end + object ConvertButton: TButton + Left = 469 + Top = 14 + Width = 75 + Height = 25 + Caption = 'Convert' + TabOrder = 4 + OnClick = ConvertButtonClick + end + object SaveButton: TButton + Left = 546 + Top = 14 + Width = 75 + Height = 25 + Caption = 'Save' + TabOrder = 5 + OnClick = SaveButtonClick + end + end + object Memo: TMemo + Left = 177 + Top = 48 + Width = 451 + Height = 165 + Align = alClient + ScrollBars = ssBoth + TabOrder = 0 + end + object StatusBar: TStatusBar + Left = 0 + Top = 213 + Width = 628 + Height = 19 + Panels = <> + SimplePanel = True + end + object TreeView: TTreeView + Left = 0 + Top = 48 + Width = 174 + Height = 165 + Align = alLeft + HideSelection = False + Indent = 20 + ReadOnly = True + TabOrder = 3 + end + object OpenDialog: TOpenDialog + FileName = '*.rodl' + Filter = 'RODL Files|*.rodl' + Left = 208 + Top = 88 + end + object SaveDialog: TSaveDialog + Filter = 'All files (*.*)|*.*' + Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing] + Left = 281 + Top = 92 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.pas new file mode 100644 index 0000000..9803a7c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/RODL/RODLMain.pas @@ -0,0 +1,364 @@ +unit RODLMain; + +interface + +uses + Windows, Messages, SysUtils, {$IFDEF VER140}Variants, {$ENDIF}Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, uRODL, ComCtrls; + +type + TRODLMainForm = class(TForm) + GenerateButton: TButton; + LoadButton: TButton; + ConvertButton: TButton; + cbWriters: TComboBox; + Memo: TMemo; + OpenDialog: TOpenDialog; + Label1: TLabel; + StatusBar: TStatusBar; + cbServices: TComboBox; + lServices: TLabel; + SaveButton: TButton; + SaveDialog: TSaveDialog; + Panel1: TPanel; + TreeView: TTreeView; + Splitter1: TSplitter; + procedure GenerateButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ConvertButtonClick(Sender: TObject); + procedure LoadButtonClick(Sender: TObject); + procedure cbWritersChange(Sender: TObject); + procedure SaveButtonClick(Sender: TObject); + procedure FormDestroy(Sender: TObject); + private + fLibrary: TRODLLibrary; + function CheckLibrary(AShowMessage: Boolean): Boolean; + procedure FillLibrary; + public + end; + +var + RODLMainForm: TRODLMainForm; + +implementation + +uses uRODLToXML, uRODLToPascalInvk, uRODLToPascalIntf, uRODLToPascalImpl, + uRODLGenTools, uRODLToWSDL, uRODLToPascalAsync, uROClasses; + +{$R *.dfm} + +const + Writers: array[0..5] of TRODLConverterClass = + (TRODLToInvk, TRODLToIntf, TRODLToImpl, TRODLToXML, TRODLToWSDL, TRODLToPascalAsync); + +procedure TRODLMainForm.GenerateButtonClick(Sender: TObject); +var + struct: TRODLStruct; + stelem: TRODLTypedEntity; + arr: TRODLArray; + svc: TRODLService; + enum: TRODLEnum; + eval: TRODLEnumValue; + intf: TRODLServiceInterface; + op: TRODLOperation; + par: TRODLOperationParam; + + // ent: TRODLEntity; + // emsg: string; +begin + Memo.Clear; + if fLibrary <> nil then fLibrary.Free; + fLibrary := TRODLLibrary.Create; + + fLibrary.Info.Name := 'TestLibrary'; + fLibrary.Info.UID := NewGuid; + fLibrary.Info.Attributes.Values['Test'] := 'a library attribute'; + + svc := TRODLService.Create; + svc.Info.Name := 'Gadget'; + svc.Default.Info.UID := NewGuid; + svc.Default.Info.Documentation := 'Default interface for Gadget'; + svc.Default.Info.Attributes.Values['TestName1'] := 'TestValue1'; + svc.Default.Info.Attributes.Values['TestName2'] := 'TestValue2'; + + intf := svc.Default; + + op := intf.Add; + op.Info.Name := 'Sum'; + op.Info.UID := NewGuid; + op.Info.Documentation := 'Sum message'; + op.Info.Attributes.Values['TestAttr1'] := 'TestAttrValue2'; + op.Info.Attributes.Values['TestAttr2'] := 'TestAttrValue2'; + + par := op.Add; + par.Name := 'A'; + par.DataType := 'integer'; + par.Flag := fIn; + + par := op.Add; + par.Name := 'B'; + par.DataType := 'integer'; + par.Flag := fIn; + par.Attributes.Values['Test'] := 'a parameter attribute'; + par.Attributes.Values['Test'] := 'a parameter attribute #2'; + + par := op.AddResult; +// par.Name := 'result'; + par.DataType := 'integer'; +// par.Flag := fResult; + + op := intf.Add; + op.Name := 'GetServerTime'; + op.Attributes.Values['TestAttr1'] := 'TestAttrValue2'; + op.Attributes.Values['TestAttr2'] := 'TestAttrValue2'; + op.UID := NewGuid; + op.Documentation := 'GetServerTime message'; + + par := op.AddResult; +// par.Name := 'result'; + par.DataType := 'datetime'; +// par.Flag := fResult; + + fLibrary.Add(svc); + + svc := TRODLService.Create; + svc.Name := 'Test2'; + svc.Default.UID := NewGuid; + svc.Default.Documentation := 'Default interface for Test2'; + + intf := svc.Default; + + op := intf.Add; + op.Name := 'GetNumber'; + op.UID := NewGuid; + op.Documentation := 'GetNumber message'; + + par := op.AddResult; +// par.Name := 'result'; + par.DataType := 'integer'; +// par.Flag := fResult; + + fLibrary.Add(svc); + + struct := TRODLStruct.Create; + struct.Attributes.Values['TestAttr1'] := 'TestAttrValue2'; + struct.Attributes.Values['TestAttr2'] := 'TestAttrValue2'; + + struct.Name := 'TAddress'; + struct.UID := NewGuid; + struct.Documentation := 'An address'; + + stelem := struct.Add; + stelem.Name := 'Street1'; + stelem.DataType := 'AnsiString'; + + stelem := struct.Add; + stelem.Name := 'Street2'; + stelem.DataType := 'AnsiString'; + + fLibrary.Add(struct); + + struct := TRODLStruct.Create; + struct.Name := 'TPerson'; + struct.UID := NewGuid; + struct.Documentation := 'A person'; + + stelem := struct.Add; + stelem.Name := 'FullName'; + stelem.DataType := 'AnsiString'; + + stelem := struct.Add; + stelem.Name := 'Age'; + stelem.DataType := 'integer'; + + fLibrary.Add(struct); + + enum := TRODLEnum.Create; + enum.Name := 'TColor'; + enum.UID := NewGuid; + enum.Documentation := 'This is TColor'; + enum.Attributes.Values['TestAttr1'] := 'TestAttrValue2'; + enum.Attributes.Values['TestAttr2'] := 'TestAttrValue2'; + + eval := enum.Add; + eval.Name := 'clRed'; + + eval := enum.Add; + eval.Name := 'clBlue'; + + fLibrary.Add(enum); + + enum := TRODLEnum.Create; + enum.Name := 'TSex'; + enum.UID := NewGuid; + enum.Documentation := 'This is TSex'; + + eval := enum.Add; + eval.Name := 'Male'; + + eval := enum.Add; + eval.Name := 'Female'; + + fLibrary.Add(enum); + + arr := TRODLArray.Create; + arr.Name := 'TIntegerArray'; + arr.Documentation := 'Thisis an integer array'; + arr.UID := NewGuid; + arr.ElementType := 'integer'; + arr.Attributes.Values['TestAttr1'] := 'TestAttrValue2'; + arr.Attributes.Values['TestAttr2'] := 'TestAttrValue2'; + + fLibrary.Add(arr); + + {if not fLibrary.Validate(ent, emsg) + then Caption := 'Libary is NOT valid: '+ent.Name+', '+emsg + else Caption := 'Libary is valid'} + FillLibrary; + StatusBar.SimpleText := 'Test RODL generated.'; +end; + +procedure TRODLMainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + for i := 0 to High(Writers) do + cbWriters.Items.Add(Writers[i].ClassName); + cbWriters.ItemIndex := cbWriters.Items.Count - 1; + cbWriters.OnChange(cbWriters); +end; + +procedure TRODLMainForm.ConvertButtonClick(Sender: TObject); +begin + with Writers[cbWriters.ItemIndex].Create(fLibrary, cbServices.Text) do try + Memo.Lines.Text := Buffer.Text + finally + Free; + end; +end; + +procedure TRODLMainForm.LoadButtonClick(Sender: TObject); +var + fs: TFileStream; +begin + + if not OpenDialog.Execute then Exit; + + FreeAndNIL(fLibrary); + Memo.Clear; + FillLibrary; + + fs := TFileStream.Create(OpenDialog.FileName, fmOpenRead); + with TXMLToRODL.Create do try + fLibrary := Read(fs); + finally + Free; + fs.Free; + end; + FillLibrary; + StatusBar.SimpleText := ExtractFileName(OpenDialog.FileName) + ' loaded. Please specify the convertor and click ''Convert'''; + // ConvertButton.Click; +end; + +procedure TRODLMainForm.cbWritersChange(Sender: TObject); +var + i: integer; +begin + cbServices.Clear; + if Writers[cbWriters.ItemIndex] = TRODLToImpl then begin + if fLibrary <> nil then + for i := 0 to fLibrary.ServiceCount - 1 do + cbServices.Items.Add(fLibrary.Services[i].Name); + if cbServices.Items.Count > 0 then cbServices.ItemIndex := 0; + end + else if Writers[cbWriters.ItemIndex] = TRODLToWSDL then begin + cbServices.Items.Add(''); + if fLibrary <> nil then + for i := 0 to fLibrary.ServiceCount - 1 do + cbServices.Items.Add(fLibrary.Services[i].Name); + cbServices.ItemIndex := 0; + end; + + lServices.Enabled := (Writers[cbWriters.ItemIndex] = TRODLToImpl) or (Writers[cbWriters.ItemIndex] = TRODLToWSDL); + cbServices.Enabled := lServices.Enabled; + if cbServices.Enabled then + cbServices.Color := clWindow + else + cbServices.ParentColor := True; +end; + +procedure TRODLMainForm.SaveButtonClick(Sender: TObject); +var + FFileName: string; +begin + if not CheckLibrary(True) then Exit; + ConvertButton.Click; + fFileName := Writers[cbWriters.ItemIndex].GetTargetFileName(fLibrary, cbServices.Text); + if FFileName = '' then FFileName := ChangeFileExt(fLibrary.Name, '.xml'); + SaveDialog.FileName := fFileName; + SaveDialog.DefaultExt := ExtractFileExt(SaveDialog.FileName); + if SaveDialog.Execute then Memo.Lines.SaveToFile(SaveDialog.FileName); +end; + +function TRODLMainForm.CheckLibrary(AShowMessage: Boolean): Boolean; +begin + Result := fLibrary <> nil; + if not result then ShowMessage('Please load or generate a RODL library'); +end; + +procedure TRODLMainForm.FillLibrary; +var + FRootNode, tempNode: TTreeNode; + i: integer; +begin + with TreeView do begin + Items.Clear; + if fLibrary = nil then Exit; + FRootNode := Items.AddChild(nil, fLibrary.Name); + + tempNode := Items.AddChild(FRootNode, 'Structs'); + for i := 0 to fLibrary.StructCount - 1 do + Items.AddChild(tempNode, fLibrary.Structs[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Arrays'); + for i := 0 to fLibrary.ArrayCount - 1 do + Items.AddChild(tempNode, fLibrary.Arrays[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Enums'); + for i := 0 to fLibrary.EnumCount - 1 do + Items.AddChild(tempNode, fLibrary.Enums[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Services'); + for i := 0 to fLibrary.ServiceCount - 1 do begin + Items.AddChild(tempNode, fLibrary.Services[i].Name); + end; + + tempNode := Items.AddChild(FRootNode, 'Exceptions'); + for i := 0 to fLibrary.ExceptionCount - 1 do + Items.AddChild(tempNode, fLibrary.Exceptions[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Use'); + for i := 0 to fLibrary.UseCount - 1 do + Items.AddChild(tempNode, fLibrary.Use[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Groups'); + for i := 0 to fLibrary.GroupCount - 1 do + Items.AddChild(tempNode, fLibrary.Groups[i].Name); + + tempNode := Items.AddChild(FRootNode, 'Event Sinks'); + for i := 0 to fLibrary.EventSinkCount - 1 do + Items.AddChild(tempNode, fLibrary.EventSinks[i].Name); + + FRootNode.Expand(True); + FRootNode.Selected := True; + FRootNode.MakeVisible; + end; +end; + +procedure TRODLMainForm.FormDestroy(Sender: TObject); +begin + if fLibrary <> nil then fLibrary.Free; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Samples.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Samples.html new file mode 100644 index 0000000..b5ef964 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Samples.html @@ -0,0 +1,392 @@ + + + + + + + + + +

    + RemObjects SDK Samples for Delphi +

    +

    + Please keep the following things in mind when working with the samples: +

    +
      +
    • +To help you find the sample you need and also to provide a suggested start order, +the samples are listed in one or more categories followed by the actual sample descriptions +in alphabetical order. 
    • +
    • There may be samples shipped that are not listed below. +Samples are not added to the list until they have passed our final quality inspection. +This doesn't mean they are faulty, only that they are still pending final inspection.
    • +
    + +

    + Getting Started

    +Most of the samples provide a project group containing server and client projects. +The standard procedure for testing these is as follows: +
      +
    • Build or compile both projects.
    • +
    • Ensure that the server is the current project. Note: if there is + only one RemObjects SDK server contained within the project group, this step is + not needed because the next step will still work even if the lient is the current + project. 
    • Launch the server (IDE menu: RemObjects | Launch Server Executable).
    • +
    • Examine the server window. Some samples require that you activate one or more channels.
    • +
    • Make the client the current project.
    • +
    • Run the client.
    • +
    +Having tested the sample, next examine the services provided. Do this by examining the RODL +via the Service Builder tool provided: +
      +
    • Ensure that the server is the current project.
    • +
    • Open the Service Builder (IDE menu: RemObjects | Edit Service Library).
    • +
    +

    + Sample Categories

    +
      +
    • Some samples are shown below in more than one category.
    • +
    • The Dynamic Request,  RODL and Named Pipe samples do not ship with + the trial version of the RemObjects SDK. +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Category

    Samples

    Introduction +

    First Sample

    +

    Multi Channel

    +

    Super TCP Channel Chat

    +

    RODL (not shipped with the trial version)

    +

    Async

    +

    Auto Server

    +

    Dynamic Request (not shipped with the trial version) 

    +

    Session Types

    +

    + Time Server +

    +
    Channels +

    MegaDemo

    +

    Multi Channel

    +

    Super TCP Channel Chat

    +

    HTTP Chat

    +

    Named Pipes (not shipped with the trial version)

    +
    Intermediate +

    Arrays

    +

    + Broadcast Chat +

    +

    Extended File Transfer

    +

    Named Pipes (not shipped with the trial version)

    +

    Service Discovery

    +

    Variants

    +
    Architecture +

    Session Types

    +

    + Class Factories +

    +

    FPC Server

    +

    + DataSnap +

    +

    Dispatch Notifier

    +

    Auto Server

    +

    Multi Channel

    +

    Proxy Server

    +
    Advanced +

    Class Factories

    +

    COM

    +

    Dispatch Notifier

    +

    Proxy Server

    +
    + + +

    + Sample Descriptions

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameCategoryDescription
    + Arrays + Intermediate + This sample shows how to use TROArray for presentating DB tables in a master/detail + relationship.
    AsyncIntroductionThis sample shows how to call methods on a RemObjects SDK server asynchronously.
    +There may be times where you want to submit a request for information and defer receiving the result +until a bit later. A very simple calculation (Sum) is performed, +but this has a built in ten second delay so that it is possible to query the +server before the calculation is completed.
    +
    Auto ServerIntroduction
    Architecture
    This sample shows how a client can control its server when they are both running locally. +This is useful if you want to provide a simple standard alone solution which is easily +upgraded to multi-tier (or you might want to provide both options). +
    Broadcast ChatIntermediate + This example shows how to use the TROBroadcastServer and TROBroadcastChannel + channels to write an UDP broadcasting chat program.
    Class FactoriesArchitecture
    Advanced
    + This example shows how to use a Class Factory to generate three + types of server:
      +
    • Singleton: all clients access a single server object.
    • +
    • Single Call: server instances are created on demand and destroyed + after processing the method call.
    • +
    • Pooled: multiple server instances are accessible by clients. This + works exactly the same as Singleton, unless the first server instance is busy.
    +

    + Note: to test this sample properly, you need to run at least two + clients. +

    +
    COMAdvanced + This sample shows how to call an existing RemObjects SDK server using COM.
    DataSnapArchitecture + Standard example of the use of the TRODataSnapModule and TRODataSnapConnection + components.
    Dispatch NotifierArchitecture
    Advanced
    + This example shows how to customize message dispatching. IRODispatchNotifier + is a special interface that TROInvoker classes know and look for. +
    + If your server side object implements it, the IRODispatchNotifier.GetDispatchInfo + method will be called before the target method is invoked.
    Dynamic Request
    + (not shipped with the trial version)
    Introduction + This example shows how to use the TRODynamicRequest component to execute + server methods.
    Extended File TransferIntermediate + This example shows how to transfer files to and from a RemObjects SDK Server in + chunks and how to monitor new files via server events. Note: needs at least two + clients open. File(s) uploaded from one client are downloaded to the other(s).
    First SampleIntroduction +This sample provides an introduction to using the Delphi edition of the RemObjects SDK product. +The example shows how to define/implement methods on the server and how to access them from the client. +The data consists of name information and four simple methods are provided by the +service: Nicknames, VerifyName, CheckName and FullNames. +
    + FPC Server + Architecture +
    HTTP ChatChannels + This shows how to use polled events to create an HTTP based chat program. +
    + The clients poll every few seconds for new messages and the server distributes the + messages to the appropriate client(s).
    MegaDemoChannelsThis comprehensive example illustrates many of the features of the RemObjects SDK by +providing benchmark facilities for the various protocols and + channels supported. +
    Multi ChannelIntroduction
    Channels
    Architecture
    This example provides an introduction to using the Delphi edition of the RemObjects SDK product. +It shows how to use different channels to connect to the server application. +
    Named Pipes +
    + (not shipped with the trial version)
    Channels
    Intermediate
    This example shows the use of a named pipe connection. +It creates a named pipe server as a Windows service. +
    Proxy ServerArchitecture
    Advanced
    This example shows how to create a proxy server to redirect the calls to another + server without having to recreate the RODL file, thus allowing the use of the same types + of the original server.
    +This provides total control. As every call will pass from the proxy class before going to the real server, +you can even stop methods from being dispatched any further. +
    RODL
    + (not shipped with the trial version)
    Introduction + <to follow>
    Service DiscoveryIntermediateThis sample illustrates how to use the TRODiscoveryClient and + TRODiscoveryServer components. +
    +Each instance of the application acts both as a server and as a client. +For the server, you can modify the list of services supported on the right-hand side, while for the client you can enter a service name and get a list of the servers available on your LAN to support it. +
    Session Types
    +
    Architecture
    Introduction
    + This example shows the use of sessions and illustrates several SessionManagers: TROEventSessionManager, +
    + TROInMemorySessionManager,
    + TROMasterServerSessionManager
    and +
    + TRODBSessionManager. +
    + Important note: this sample needs a "Sessions" table to be created in one of your databases. + By default, the sample looks for the Sessions table in MSSQL's Northwind Database, + but you can easily change to connect to any other database. +
    +Super TCP Channel ChatIntroduction
    Channels
    + This sample shows how the Super TCP Channel can be used to create + a chat server and clients. +
    + Unlike the HTTP Chat sample, this sample doesn't poll the server + but sends events back to clients directly. +
    Time ServerIntroduction + This is an extremely basic sample illustrating how to use the TROBroadcastServer + and TROBroadcastChannel components.
    VariantsIntermediate + This example shows how the RemObjects SDK can transfer variants + and array of variants from the client and server using the + TROBinMessage and TROSOAPMessage message types.
    +
    + +

    + Support

    +

    + If you encounter any problems or have questions regarding the samples, please feel + free to ask on our newsgroup at + news://news.remobjects.com/remobjects.public.sdk.delphi. +

    +

    + Thank you very much,
    + Your RemObjects Team
    + http://www.remobjects.com +

    + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/RODLFILE.res new file mode 100644 index 0000000..4b9eb58 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.Sample.html new file mode 100644 index 0000000..460f40e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.Sample.html @@ -0,0 +1,27 @@ + + + + + + + + + +

    + Service Discovery +

    + +
    +

    Purpose

    +

    + This sample illustrates how to use the TRODiscoveryClient and TRODiscoveryServer components.
    +

    +

    + Each instance of the application acts both as a server and as a client.
    + For the server, you can modify the list of services supported on the right-hand side, + while for the client you can enter a service name and get a list of the servers available on your LAN to support it. +

    + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.bdsproj new file mode 100644 index 0000000..807740c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + ServiceDiscovery.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dpr new file mode 100644 index 0000000..1385bb3 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dpr @@ -0,0 +1,14 @@ +program ServiceDiscovery; + +uses + Forms, + ServiceDiscoveryMain in 'ServiceDiscoveryMain.pas' {ServiceDiscoveryMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Service Discovery Sample'; + Application.CreateForm(TServiceDiscoveryMainForm, ServiceDiscoveryMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dproj new file mode 100644 index 0000000..138cd51 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.dproj @@ -0,0 +1,78 @@ + + + {f03be2e9-512e-4df7-9a1e-ea0b0d926a40} + ServiceDiscovery.dpr + Debug + AnyCPU + DCC32 + ServiceDiscovery.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ServiceDiscovery.dpr + + + + + + + MainSource + + +
    ServiceDiscoveryMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.res new file mode 100644 index 0000000..0f940ed Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscovery.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.dfm new file mode 100644 index 0000000..64fbad2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.dfm @@ -0,0 +1,246 @@ +object ServiceDiscoveryMainForm: TServiceDiscoveryMainForm + Left = 275 + Top = 222 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + BorderWidth = 5 + Caption = 'RemObjects SDK Discovery Sample' + ClientHeight = 376 + ClientWidth = 583 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 0 + Top = 0 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object GroupBox1: TGroupBox + Left = 0 + Top = 52 + Width = 289 + Height = 270 + Anchors = [akLeft, akTop, akRight, akBottom] + Caption = ' Client ' + TabOrder = 0 + DesignSize = ( + 289 + 270) + object Label1: TLabel + Left = 11 + Top = 16 + Width = 80 + Height = 13 + Caption = 'Look for service:' + end + object Label2: TLabel + Left = 11 + Top = 88 + Width = 74 + Height = 13 + Caption = 'Found Servers:' + end + object ed_ServiceName: TEdit + Left = 8 + Top = 29 + Width = 273 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'IRODiscoveryService' + end + object btn_LookupService: TBitBtn + Left = 8 + Top = 56 + Width = 273 + Height = 25 + Action = ac_DiscoverServers + Anchors = [akLeft, akTop, akRight] + Caption = 'Discover Servers' + TabOrder = 1 + end + object lb_Servers: TListBox + Left = 8 + Top = 101 + Width = 273 + Height = 160 + Anchors = [akLeft, akTop, akRight, akBottom] + ItemHeight = 13 + TabOrder = 2 + end + end + object GroupBox2: TGroupBox + Left = 296 + Top = 52 + Width = 287 + Height = 270 + Anchors = [akLeft, akTop, akRight, akBottom] + Caption = ' Server ' + TabOrder = 1 + DesignSize = ( + 287 + 270) + object Label3: TLabel + Left = 11 + Top = 16 + Width = 240 + Height = 13 + Caption = 'List of Services supported by this server instance:' + end + object ed_Services: TMemo + Left = 8 + Top = 29 + Width = 271 + Height = 174 + Anchors = [akLeft, akTop, akRight, akBottom] + Lines.Strings = ( + 'SomeService' + 'SomeOtherService') + TabOrder = 0 + OnChange = btn_UpdateServiceListClick + end + object Panel1: TPanel + Left = 8 + Top = 225 + Width = 273 + Height = 37 + Anchors = [akLeft, akBottom] + BevelOuter = bvLowered + Color = clInfoBk + TabOrder = 1 + object Label4: TLabel + Left = 6 + Top = 5 + Width = 250 + Height = 26 + Caption = + 'Enter names representing the services you want to simulate as be' + + 'ing supported on this server instance.' + WordWrap = True + end + end + object cb_SupportRegisteredServerClasses: TCheckBox + Left = 8 + Top = 205 + Width = 209 + Height = 17 + Anchors = [akLeft, akBottom] + Caption = 'List registered RO Servers as supported' + Checked = True + State = cbChecked + TabOrder = 2 + OnClick = cb_SupportRegisteredServerClassesClick + end + end + object GroupBox3: TGroupBox + Left = 0 + Top = 326 + Width = 585 + Height = 48 + Anchors = [akLeft, akBottom] + Caption = ' Custom Discovery Options: Load' + TabOrder = 2 + object Label5: TLabel + Left = 304 + Top = 20 + Width = 111 + Height = 13 + Caption = 'Simulated Server Load:' + end + object Label6: TLabel + Left = 8 + Top = 20 + Width = 148 + Height = 13 + Caption = 'Find a Server with Load below:' + end + object ed_ServerLoad: TEdit + Left = 418 + Top = 17 + Width = 63 + Height = 21 + TabOrder = 0 + Text = '50' + end + object ed_MaxLoad: TEdit + Left = 160 + Top = 17 + Width = 63 + Height = 21 + TabOrder = 1 + Text = '75' + end + object cb_ReturnInfo: TCheckBox + Left = 496 + Top = 19 + Width = 81 + Height = 17 + Caption = 'Return Info' + Checked = True + State = cbChecked + TabOrder = 2 + end + end + object ROBroadcastServer: TROBroadcastServer + Active = True + Dispatchers = < + item + Name = 'ROBINMessage_Server' + Message = ROBINMessage_Server + Enabled = True + end> + IndyUDPServer.BroadcastEnabled = True + IndyUDPServer.Bindings = <> + IndyUDPServer.DefaultPort = 8090 + IndyUDPServer.ThreadedEvent = True + Port = 8090 + Left = 400 + Top = 24 + end + object ROBroadcastChannel: TROBroadcastChannel + ServerLocators = <> + DispatchOptions = [] + Retrys = 5 + IndyClient.BroadcastEnabled = True + IndyClient.Port = 8090 + Port = 8090 + Left = 215 + Top = 25 + end + object RODiscoveryClient: TRODiscoveryClient + Channel = ROBroadcastChannel + Message = ROBINMessage_Client + ServiceName = 'SomeService' + OnNewServersFound = RODiscoveryClientNewServersFound + OnNewServiceFound = RODiscoveryClientNewServiceFound + Left = 272 + Top = 25 + end + object RODiscoveryServer: TRODiscoveryServer + OnServiceFound = RODiscoveryServerServiceFound + Left = 456 + Top = 24 + end + object ROBINMessage_Server: TROBinMessage + Left = 428 + Top = 24 + end + object ROBINMessage_Client: TROBinMessage + Left = 244 + Top = 25 + end + object ActionList: TActionList + OnUpdate = ActionListUpdate + Left = 520 + Top = 24 + object ac_DiscoverServers: TAction + Caption = 'Discover Servers' + OnExecute = btn_LookupServiceClick + end + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.pas new file mode 100644 index 0000000..8a66d1e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Service Discovery/ServiceDiscoveryMain.pas @@ -0,0 +1,179 @@ +unit ServiceDiscoveryMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uROClient, uROBINMessage, uRODiscovery, + uROIndyUDPChannel, uROBroadcastChannel, uROServer, + uROIndyUDPServer, uROBroadcastServer, StdCtrls, ExtCtrls, Buttons, + uROPoweredByRemObjectsButton, uRODiscovery_Intf, ActnList; + +type + TServiceDiscoveryMainForm = class(TForm) + ROBroadcastServer: TROBroadcastServer; + ROBroadcastChannel: TROBroadcastChannel; + RODiscoveryClient: TRODiscoveryClient; + RODiscoveryServer: TRODiscoveryServer; + GroupBox1: TGroupBox; + Label1: TLabel; + ed_ServiceName: TEdit; + btn_LookupService: TBitBtn; + lb_Servers: TListBox; + Label2: TLabel; + GroupBox2: TGroupBox; + Label3: TLabel; + ed_Services: TMemo; + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + ROBINMessage_Server: TROBINMessage; + ROBINMessage_Client: TROBINMessage; + Panel1: TPanel; + Label4: TLabel; + cb_SupportRegisteredServerClasses: TCheckBox; + GroupBox3: TGroupBox; + ed_ServerLoad: TEdit; + Label5: TLabel; + Label6: TLabel; + ed_MaxLoad: TEdit; + ActionList: TActionList; + ac_DiscoverServers: TAction; + cb_ReturnInfo: TCheckBox; + procedure FormCreate(Sender: TObject); + procedure btn_UpdateServiceListClick(Sender: TObject); + procedure btn_LookupServiceClick(Sender: TObject); + procedure cb_SupportRegisteredServerClassesClick(Sender: TObject); + procedure ActionListUpdate(Action: TBasicAction; + var Handled: Boolean); + procedure RODiscoveryClientNewServiceFound(aSender: TObject; + aName: String; aDiscoveryOptions: TRODiscoveryOptions); + procedure RODiscoveryClientNewServersFound(Sender: TObject); + procedure RODiscoveryServerServiceFound(aSender: TObject; aName: string; + var ioDiscoveryOptions: TRODiscoveryOptions; var ioHandled: Boolean); + private + { Private declarations } + public + { Public declarations } + end; + + TMyDiscoveryQueryOptions = class(TRODiscoveryOptions) + private + fMaximumLoad: integer; + published + property MaximumLoad: integer read fMaximumLoad write fMaximumLoad; + end; + + TMyDiscoveryResultOptions = class(TRODiscoveryOptions) + private + fServerTime: TDateTime; + fMoreInfo: Widestring; + fLoad: integer; + published + property ServerTime: TDateTime read fServerTime write fServerTime; + property MoreInfo: Widestring read fMoreInfo write fMoreInfo; + property Load: integer read fLoad write fLoad; + end; + +var + ServiceDiscoveryMainForm: TServiceDiscoveryMainForm; + +implementation + +uses + uROTypes, uROClasses; + +{$R *.dfm} + +procedure TServiceDiscoveryMainForm.FormCreate(Sender: TObject); +begin + ROBroadcastServer.Active := true; + btn_UpdateServiceListClick(self); +end; + +procedure TServiceDiscoveryMainForm.btn_UpdateServiceListClick(Sender: TObject); +begin + RODiscoveryServer.ServiceList.Assign(ed_Services.Lines); +end; + +procedure TServiceDiscoveryMainForm.btn_LookupServiceClick(Sender: TObject); +var + lOptions: TMyDiscoveryQueryOptions; +begin + lb_Servers.Items.Clear(); + + RODiscoveryClient.ServiceName := {$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(ed_ServiceName.Text); + + lOptions := TMyDiscoveryQueryOptions.Create(); + try + lOptions.MaximumLoad := StrToIntDef(ed_MaxLoad.Text,100); + RODiscoveryClient.RefreshServerList(lOptions); + finally + lOptions.Free(); + end; +end; + +procedure TServiceDiscoveryMainForm.RODiscoveryClientNewServersFound( + Sender: TObject); +begin +// lb_Servers.Items.Assign(RODiscoveryClient.ServerList); +end; + +procedure TServiceDiscoveryMainForm.RODiscoveryClientNewServiceFound( + aSender: TObject; aName: String; aDiscoveryOptions: TRODiscoveryOptions); +var + lOptions: TMyDiscoveryResultOptions; +begin + if Assigned(aDiscoveryOptions) and (aDiscoveryOptions is TMyDiscoveryResultOptions) then begin + lOptions := TMyDiscoveryResultOptions(aDiscoveryOptions); + lb_Servers.Items.Add(Format('%s (Load: %d; Info: %s)',[aName, lOptions.Load, lOptions.MoreInfo])); + end + else begin + lb_Servers.Items.Add(aName+' (no info)'); + end; +end; + +procedure TServiceDiscoveryMainForm.cb_SupportRegisteredServerClassesClick(Sender: TObject); +begin + RODiscoveryServer.SupportRegisteredServerClasses := cb_SupportRegisteredServerClasses.Checked; +end; + +procedure TServiceDiscoveryMainForm.RODiscoveryServerServiceFound( + aSender: TObject; aName: string; var ioDiscoveryOptions: TRODiscoveryOptions; + var ioHandled: Boolean); +begin + if Assigned(ioDiscoveryOptions) and (ioDiscoveryOptions is TMyDiscoveryQueryOptions) then begin + { Check if we fullfill the load requirement. if our load is too high, abort + without sending a response to the client } + if TMyDiscoveryQueryOptions(ioDiscoveryOptions).MaximumLoad <= StrToIntDef(ed_ServerLoad.Text,100) then begin + ROSendNoResponse(); + end; + end; + + if cb_ReturnInfo.Checked then begin + ioDiscoveryOptions := TMyDiscoveryResultOptions.Create; + with TMyDiscoveryResultOptions(ioDiscoveryOptions) do begin + Load := StrToIntDef(ed_ServerLoad.Text,-1); + MoreInfo := 'Some info'; + ServerTime := Now; + end; { with } + end + else begin + ioDiscoveryOptions := nil; + end; + + { Don't free the original ioDiscoveryOptions (if it was assigned), the RO + framework take scare of that, just as it will free the one we pass back } +end; + +procedure TServiceDiscoveryMainForm.ActionListUpdate(Action: TBasicAction; + var Handled: Boolean); +begin + ac_DiscoverServers.Enabled := not ROBroadcastChannel.Busy; +end; + +initialization + RegisterROClass(TMyDiscoveryQueryOptions); + RegisterROClass(TMyDiscoveryResultOptions); +finalization + UnregisterROClass(TMyDiscoveryQueryOptions); + UnregisterROClass(TMyDiscoveryResultOptions); +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.dfm new file mode 100644 index 0000000..41bac0b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.dfm @@ -0,0 +1,7 @@ +object LoginService: TLoginService + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.pas new file mode 100644 index 0000000..bdb3844 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/LoginService_Impl.pas @@ -0,0 +1,97 @@ +unit LoginService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} SessionTypesLibrary_Intf; + +type + TLogProcedure = procedure(AStr: WideString) of object; + { TLoginService } + TLoginService = class(TRORemoteDataModule, ILoginService) + private + procedure Log(Astr: WideString); + protected + { ILoginService methods } + function Login(const UserID: WideString; const Password: WideString): boolean; + procedure Logout(const SessionID: WideString); + public + constructor Create(aOwner: TComponent); override; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} SessionTypesLibrary_Invk, Variants, + SessionTypes_ServerMain; + +procedure Create_LoginService(out anInstance: IUnknown); +begin + anInstance := TLoginService.Create(nil); +end; + +{ LoginService } + +constructor TLoginService.Create(aOwner: TComponent); +begin + inherited; + SessionManager := SessionTypes_ServerMainForm._SessionManager; +end; + +procedure TLoginService.Log(Astr: WideString); +begin + SessionTypes_ServerMainForm.Log(AStr); +end; + +function TLoginService.Login(const UserID: WideString; const Password: WideString): boolean; +begin + Log('User ''' + UserID + ''' is trying logon with password ''' + Password + ''''); + if (Session.Values['Login'] <> Null) then begin + Log('User ''' + Session.Values['Login'] + ''' is already connected to session ' + GUIDToString(ClientID)); + Log('Login unsuccessful'); + Result := True; + Exit; + end; + + result := (UserID <> '') and (UserID = Password); // Dummy test... You would code the one specific to your system + if Result then begin + Session.Values['Login'] := UserId; + Session.Values['Password'] := Password; + Log('Login successful'); + end + else begin + Log('Invalid login!'); + DestroySession; // Wrong login! The session cannot be persisted + end; + Log(''); +end; + +procedure TLoginService.Logout(const SessionID: WideString); +var + aUser: WideString; +begin + if Session.Values['Login'] <> Null then + aUser := Session.Values['Login'] + else + aUser := ''; + Log('User ''' + aUser + ''' has requested logout'); + Log(''); + DestroySession; // Removes the session from the SessionManager +end; + +initialization + TROClassFactory.Create('LoginService', Create_LoginService, TLoginService_Invoker); +finalization +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/RODLFILE.res new file mode 100644 index 0000000..4cc721b Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes Create Session Table.sql b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes Create Session Table.sql new file mode 100644 index 0000000..73a7ed4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes Create Session Table.sql @@ -0,0 +1,15 @@ +CREATE TABLE [dbo].[Sessions] ( + [SessionID] [char] (38) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , + [Created] [datetime] NULL , + [LastAccessed] [datetime] NULL , + [Data] [IMAGE] NULL +) +GO + +ALTER TABLE [dbo].[Sessions] WITH NOCHECK ADD + CONSTRAINT [PK_Sessions] PRIMARY KEY CLUSTERED + ( + [SessionID] + ) ON [PRIMARY] +GO + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.Sample.html new file mode 100644 index 0000000..9106947 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.Sample.html @@ -0,0 +1,63 @@ + + + + + + + + + +

    + Session Types +

    + +
    +

    Purpose

    +

    + This example shows the use of sessions and illustrates: +

      +
    • TROEventSessionManager
    • +
    • TROInMemorySessionManager
    • +
    • TROMasterServerSessionManager
    • +
    • TRODBSessionManager
    • +
    +

    + +

    Getting Started

    +
      +
    • Build or compile all projects.
    • +
    • Launch the server (via the menu option: RemObjects | Launch Server Executable).
    • +
    • Activate the session desired.
    • +
    • Ensure that SessionTypes_Client is the selected project and run it.
    • +
    +

    Examine the Code

    +
      +
    • + Examine the simple code needed for changing the session in SessionTypes_ServerMain.pas. +
    • +
    + + +

    + Important note: this sample needs a "Sessions" table to be created in one of your databases. By default, the sample looks for the Sessions table in MSSQL's Northwind Database, but you can easily change to connect to any other database. +

    +

    + To create the Sessions table, run the .SQL script provided: +

    +

    + ..\RemObjects SDK for Delphi\Samples\Session Types\SessionTypes Create Session Table.sql +

    +

    + using the appropriate query tool provided with your database (e.g. Query Analyzer for MSSQL). +

    + +

    Data Abstract Users

    +This sample can easily be extended to encompass Data Abstract via the following steps: +
      +
    • Create TDAConnectionManager, TDADriverManager, TDAADODriver and TDASchema instances.
    • +
    • Relink.
    • +
    • In the schema, create the datasets and commands similar to qu* (TADOQuery).
    • +
    • Create a DADBSessionManager instance and assign the corresponding datasets and commands.
    • +
    + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bdsgroup new file mode 100644 index 0000000..addf1d9 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + SessionTypes_Server.bdsproj + SessionTypes_Client.bdsproj + SessionTypes_Server.exe SessionTypes_Client.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bpg new file mode 100644 index 0000000..479f06e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = SessionTypes_Server.exe SessionTypes_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +SessionTypes_Client.exe: SessionTypes_Client.dpr + $(DCC) + +SessionTypes_Server.exe: SessionTypes_Server.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.groupproj new file mode 100644 index 0000000..2a72a57 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes.groupproj @@ -0,0 +1,40 @@ + + + {ee6c030a-a2a2-4e8d-8869-acf773696e8f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary.rodl new file mode 100644 index 0000000..d7a9e18 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary.rodl @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Intf.pas new file mode 100644 index 0000000..068a9b4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Intf.pas @@ -0,0 +1,220 @@ +unit SessionTypesLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{EE96A14F-A446-4194-A1FD-C4F900DFBE62}'; + TargetNamespace = ''; + + { Service Interface ID's } + ISessionTypesService_IID : TGUID = '{EE96A14F-A446-4194-A1FD-C4F900DFBE62}'; + ILoginService_IID : TGUID = '{A8C9C8A2-3988-4E92-8846-6CDE7B35AA1E}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + ISessionTypesService = interface; + ILoginService = interface; + + + { ISessionTypesService } + ISessionTypesService = interface + ['{EE96A14F-A446-4194-A1FD-C4F900DFBE62}'] + function GetSessionValue(const Name: Widestring): Widestring; + procedure SetSessionValue(const Name: Widestring; const Value: Widestring); + function GetSessionID: Widestring; + function GetSessionManagerName: Widestring; + end; + + { CoSessionTypesService } + CoSessionTypesService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISessionTypesService; + end; + + { TSessionTypesService_Proxy } + TSessionTypesService_Proxy = class(TROProxy, ISessionTypesService) + protected + function __GetInterfaceName:string; override; + + function GetSessionValue(const Name: Widestring): Widestring; + procedure SetSessionValue(const Name: Widestring; const Value: Widestring); + function GetSessionID: Widestring; + function GetSessionManagerName: Widestring; + end; + + { ILoginService } + ILoginService = interface + ['{A8C9C8A2-3988-4E92-8846-6CDE7B35AA1E}'] + function Login(const UserID: Widestring; const Password: Widestring): boolean; + procedure Logout(const SessionID: Widestring); + end; + + { CoLoginService } + CoLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; + end; + + { TLoginService_Proxy } + TLoginService_Proxy = class(TROProxy, ILoginService) + protected + function __GetInterfaceName:string; override; + + function Login(const UserID: Widestring; const Password: Widestring): boolean; + procedure Logout(const SessionID: Widestring); + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoSessionTypesService } + +class function CoSessionTypesService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISessionTypesService; +begin + result := TSessionTypesService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TSessionTypesService_Proxy } + +function TSessionTypesService_Proxy.__GetInterfaceName:string; +begin + result := 'SessionTypesService'; +end; + +function TSessionTypesService_Proxy.GetSessionValue(const Name: Widestring): Widestring; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'GetSessionValue'); + __Message.Write('Name', TypeInfo(Widestring), Name, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Widestring), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TSessionTypesService_Proxy.SetSessionValue(const Name: Widestring; const Value: Widestring); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'SetSessionValue'); + __Message.Write('Name', TypeInfo(Widestring), Name, []); + __Message.Write('Value', TypeInfo(Widestring), Value, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TSessionTypesService_Proxy.GetSessionID: Widestring; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'GetSessionID'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Widestring), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TSessionTypesService_Proxy.GetSessionManagerName: Widestring; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'GetSessionManagerName'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Widestring), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoLoginService } + +class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; +begin + result := TLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TLoginService_Proxy } + +function TLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'LoginService'; +end; + +function TLoginService_Proxy.Login(const UserID: Widestring; const Password: Widestring): boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(Widestring), UserID, []); + __Message.Write('Password', TypeInfo(Widestring), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TLoginService_Proxy.Logout(const SessionID: Widestring); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SessionTypesLibrary', __InterfaceName, 'Logout'); + __Message.Write('SessionID', TypeInfo(Widestring), SessionID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(ISessionTypesService_IID, TSessionTypesService_Proxy); + RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); + + +finalization + UnregisterProxyClass(ISessionTypesService_IID); + UnregisterProxyClass(ILoginService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Invk.pas new file mode 100644 index 0000000..256ade2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesLibrary_Invk.pas @@ -0,0 +1,184 @@ +unit SessionTypesLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} SessionTypesLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TSessionTypesService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetSessionValue(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SetSessionValue(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSessionID(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSessionManagerName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TLoginService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TSessionTypesService_Invoker } + +constructor TSessionTypesService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TSessionTypesService_Invoker.Invoke_GetSessionValue(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSessionValue(const Name: Widestring): Widestring; } +var + Name: Widestring; + lResult: Widestring; +begin + try + __Message.Read('Name', TypeInfo(Widestring), Name, []); + + lResult := (__Instance as ISessionTypesService).GetSessionValue(Name); + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'SessionTypesService', 'GetSessionValueResponse'); + __Message.Write('Result', TypeInfo(Widestring), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TSessionTypesService_Invoker.Invoke_SetSessionValue(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure SetSessionValue(const Name: Widestring; const Value: Widestring); } +var + Name: Widestring; + Value: Widestring; +begin + try + __Message.Read('Name', TypeInfo(Widestring), Name, []); + __Message.Read('Value', TypeInfo(Widestring), Value, []); + + (__Instance as ISessionTypesService).SetSessionValue(Name, Value); + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'SessionTypesService', 'SetSessionValueResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TSessionTypesService_Invoker.Invoke_GetSessionID(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSessionID: Widestring; } +var + lResult: Widestring; +begin + try + lResult := (__Instance as ISessionTypesService).GetSessionID; + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'SessionTypesService', 'GetSessionIDResponse'); + __Message.Write('Result', TypeInfo(Widestring), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TSessionTypesService_Invoker.Invoke_GetSessionManagerName(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSessionManagerName: Widestring; } +var + lResult: Widestring; +begin + try + lResult := (__Instance as ISessionTypesService).GetSessionManagerName; + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'SessionTypesService', 'GetSessionManagerNameResponse'); + __Message.Write('Result', TypeInfo(Widestring), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TLoginService_Invoker } + +constructor TLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserID: Widestring; const Password: Widestring): boolean; } +var + UserID: Widestring; + Password: Widestring; + lResult: boolean; +begin + try + __Message.Read('UserID', TypeInfo(Widestring), UserID, []); + __Message.Read('Password', TypeInfo(Widestring), Password, []); + + lResult := (__Instance as ILoginService).Login(UserID, Password); + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'LoginService', 'LoginResponse'); + __Message.Write('Result', TypeInfo(boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TLoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout(const SessionID: Widestring); } +var + SessionID: Widestring; +begin + try + __Message.Read('SessionID', TypeInfo(Widestring), SessionID, []); + + (__Instance as ILoginService).Logout(SessionID); + + __Message.InitializeResponseMessage(__Transport, 'SessionTypesLibrary', 'LoginService', 'LogoutResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.dfm new file mode 100644 index 0000000..f6a2e16 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.dfm @@ -0,0 +1,7 @@ +object SessionTypesService: TSessionTypesService + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.pas new file mode 100644 index 0000000..948065a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypesService_Impl.pas @@ -0,0 +1,107 @@ +unit SessionTypesService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} SessionTypesLibrary_Intf; + +type + TLogProcedure = procedure(AStr: string) of object; + + { TSessionTypesService } + + TSessionTypesService = class(TRORemoteDataModule, ISessionTypesService) + private + procedure Log(Astr: WideString); + protected + { ISessionTypesService methods } + function GetSessionValue(const Name: WideString): WideString; + procedure SetSessionValue(const Name: WideString; const Value: WideString); + function GetSessionID: WideString; + function GetSessionManagerName: WideString; + public + constructor Create(aOwner: TComponent); override; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} SessionTypesLibrary_Invk, Variants, + SessionTypes_ServerMain; + +procedure Create_SessionTypesService(out anInstance: IUnknown); +begin + anInstance := TSessionTypesService.Create(nil); +end; + +{ SessionTypesService } + +function TSessionTypesService.GetSessionValue(const Name: WideString): WideString; +begin + if Session.Values['Login'] = Null then begin + Log('Session ' + GUIDToString(Session.SessionID) + ' was trying get value for ''' + Name + ''''); + Log('Illegal user. Disconnect!'); + DestroySession; + end + else begin + result := VarToStr(Session.Values[Name]); + Log(Session.Values['Login'] + ' is requested value for ''' + Name + '''. Value =''' + Result + ''''); + end; +end; + +procedure TSessionTypesService.SetSessionValue(const Name: WideString; const Value: WideString); +begin + if Session.Values['Login'] = Null then begin + Log('Session ' + GUIDToString(Session.SessionID) + ' was trying set value ''' + Value + ''' for ''' + Name + ''''); + Log('Illegal user. Disconnect!'); + DestroySession; + end + else begin + Session.Values[Name] := Value; + Log(Session.Values['Login'] + ' has set value ''' + Value + ''' for ''' + Name + ''''); + end; +end; + +function TSessionTypesService.GetSessionID: WideString; +begin + result := GUIDToString(ClientID); +end; + +procedure TSessionTypesService.Log(Astr: WideString); +begin + SessionTypes_ServerMainForm.Log(AStr); +end; + +constructor TSessionTypesService.Create(aOwner: TComponent); +begin + inherited; + SessionManager := SessionTypes_ServerMainForm._SessionManager; + RequiresSession:=True; +end; + +function TSessionTypesService.GetSessionManagerName: WideString; +begin + if Session.Values['Login'] <> Null then + Log(Session.Values['Login'] + ' is requested SessionManagerName') + else + Log('Request SessionManagerName - Illegal request!'); + Result := SessionManager.Name; + if Session.Values['Login'] = Null then DestroySession; +end; + +initialization + TROClassFactory.Create('SessionTypesService', Create_SessionTypesService, TSessionTypesService_Invoker); +finalization +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.bdsproj new file mode 100644 index 0000000..c9772f4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + SessionTypes_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dpr new file mode 100644 index 0000000..24f2940 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dpr @@ -0,0 +1,16 @@ +program SessionTypes_Client; + +uses + Forms, + SessionTypes_ClientMain in 'SessionTypes_ClientMain.pas' {SessionTypes_ClientMainForm}; + + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'SessionTypes - Client'; + Application.CreateForm(TSessionTypes_ClientMainForm, SessionTypes_ClientMainForm); + Application.Run; +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dproj new file mode 100644 index 0000000..9f6a100 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.dproj @@ -0,0 +1,78 @@ + + + {f1691183-136d-49e5-87e6-388fe20cc7db} + SessionTypes_Client.dpr + Debug + AnyCPU + DCC32 + SessionTypes_Client.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + SessionTypes_Client.dpr + + + + + + + MainSource + + +
    SessionTypes_ClientMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.dfm new file mode 100644 index 0000000..6369391 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.dfm @@ -0,0 +1,177 @@ +object SessionTypes_ClientMainForm: TSessionTypes_ClientMainForm + Left = 279 + Top = 260 + AutoScroll = False + Caption = 'SessionTypes - Client' + ClientHeight = 249 + ClientWidth = 385 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Label3: TLabel + Left = 7 + Top = 16 + Width = 36 + Height = 13 + Caption = '&UserID:' + end + object Label4: TLabel + Left = 7 + Top = 47 + Width = 49 + Height = 13 + Caption = 'Pass&word:' + end + object Label5: TLabel + Left = 7 + Top = 69 + Width = 116 + Height = 13 + Caption = 'Session Manager Name:' + end + object GroupBox1: TGroupBox + Left = 8 + Top = 156 + Width = 369 + Height = 88 + Anchors = [akLeft, akTop, akBottom] + Caption = 'Session Values' + TabOrder = 7 + object Label1: TLabel + Left = 8 + Top = 28 + Width = 31 + Height = 13 + Caption = '&Name:' + end + object Label2: TLabel + Left = 8 + Top = 60 + Width = 30 + Height = 13 + Caption = '&Value:' + end + object SetValueButton: TButton + Left = 280 + Top = 22 + Width = 75 + Height = 25 + Caption = '&Set Value' + TabOrder = 2 + OnClick = SetValueButtonClick + end + object GetValueButton: TButton + Left = 280 + Top = 54 + Width = 75 + Height = 25 + Caption = '&Get Value' + TabOrder = 3 + OnClick = GetValueButtonClick + end + object eName: TEdit + Left = 48 + Top = 24 + Width = 225 + Height = 21 + TabOrder = 0 + end + object eValue: TEdit + Left = 48 + Top = 56 + Width = 225 + Height = 21 + TabOrder = 1 + end + end + object stSessionID: TStaticText + Left = 32 + Top = 120 + Width = 314 + Height = 17 + AutoSize = False + BorderStyle = sbsSunken + Caption = 'stSessionID' + TabOrder = 6 + end + object LoginButton: TButton + Left = 221 + Top = 10 + Width = 75 + Height = 25 + Caption = '&Login' + TabOrder = 2 + OnClick = LoginButtonClick + end + object LogoutButton: TButton + Left = 301 + Top = 9 + Width = 75 + Height = 25 + Caption = 'Log&out' + TabOrder = 3 + OnClick = LogoutButtonClick + end + object cbUserID: TComboBox + Left = 63 + Top = 12 + Width = 145 + Height = 21 + ItemHeight = 13 + TabOrder = 0 + OnChange = cbUserIDChange + end + object ePassword: TEdit + Left = 63 + Top = 43 + Width = 145 + Height = 21 + TabOrder = 1 + end + object stSessionManagerName: TStaticText + Left = 32 + Top = 85 + Width = 314 + Height = 17 + AutoSize = False + BorderStyle = sbsSunken + TabOrder = 5 + end + object GetSessionManagerNameButton: TButton + Left = 222 + Top = 40 + Width = 154 + Height = 25 + Caption = 'Get Session Manager Name' + TabOrder = 4 + OnClick = GetSessionManagerNameButtonClick + end + object ROBINMessage: TROBinMessage + Left = 239 + Top = 200 + end + object rsSessionService: TRORemoteService + Message = ROBINMessage + Channel = SuperTcpChannel + ServiceName = 'SessionTypesService' + Left = 239 + Top = 174 + end + object rsLoginService: TRORemoteService + Message = ROBINMessage + Channel = SuperTcpChannel + ServiceName = 'LoginService' + Left = 211 + Top = 174 + end + object SuperTcpChannel: TROSuperTcpChannel + ServerLocators = <> + DispatchOptions = [] + Host = '127.0.0.1' + Left = 212 + Top = 202 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.pas new file mode 100644 index 0000000..4ee54fe --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ClientMain.pas @@ -0,0 +1,105 @@ +unit SessionTypes_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uRORemoteService, uROClient, + uROBinMessage, StdCtrls, uROSuperTCPChannel, SessionTypesLibrary_Intf; + +type + TSessionTypes_ClientMainForm = class(TForm) + Label3: TLabel; + Label4: TLabel; + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + SetValueButton: TButton; + GetValueButton: TButton; + eName: TEdit; + eValue: TEdit; + stSessionID: TStaticText; + LoginButton: TButton; + LogoutButton: TButton; + cbUserID: TComboBox; + ePassword: TEdit; + ROBINMessage: TROBinMessage; + rsSessionService: TRORemoteService; + rsLoginService: TRORemoteService; + SuperTcpChannel: TROSuperTcpChannel; + stSessionManagerName: TStaticText; + Label5: TLabel; + GetSessionManagerNameButton: TButton; + procedure LoginButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure LogoutButtonClick(Sender: TObject); + procedure cbUserIDChange(Sender: TObject); + procedure GetValueButtonClick(Sender: TObject); + procedure SetValueButtonClick(Sender: TObject); + procedure GetSessionManagerNameButtonClick(Sender: TObject); + private + { Private declarations } + FService: ISessionTypesService; + FLoginService: ILoginService; + public + { Public declarations } + end; + +var + SessionTypes_ClientMainForm: TSessionTypes_ClientMainForm; + +implementation + +{$R *.dfm} + +const + UserNames: array[0..2] of WideString = ('john', 'brian', 'marta'); + +procedure TSessionTypes_ClientMainForm.LoginButtonClick(Sender: TObject); +begin + FLoginService.Login(cbUserID.Text, ePassword.Text); +end; + +procedure TSessionTypes_ClientMainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + for i := 0 to High(UserNames) do + cbUserID.Items.Add(UserNames[i]); + + stSessionID.Caption := GUIDToString(ROBINMessage.ClientID); + fService := (rsSessionService as ISessionTypesService); + FLoginService := (rsLoginService as ILoginService); + SuperTcpChannel.Active := True; +end; + +procedure TSessionTypes_ClientMainForm.LogoutButtonClick(Sender: TObject); +begin + FLoginService.Logout(stSessionID.Caption); +end; + +procedure TSessionTypes_ClientMainForm.cbUserIDChange(Sender: TObject); +begin + ePassword.Text := cbUserID.Text; +end; + +procedure TSessionTypes_ClientMainForm.GetValueButtonClick( + Sender: TObject); +begin + eValue.Text := fService.GetSessionValue(eName.Text); +end; + +procedure TSessionTypes_ClientMainForm.SetValueButtonClick( + Sender: TObject); +begin + fService.SetSessionValue(eName.Text, eValue.Text); +end; + +procedure TSessionTypes_ClientMainForm.GetSessionManagerNameButtonClick( + Sender: TObject); +begin + stSessionManagerName.Caption := fService.GetSessionManagerName; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.bdsproj new file mode 100644 index 0000000..2f255c1 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + SessionTypes_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dpr new file mode 100644 index 0000000..aeb3a4f --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dpr @@ -0,0 +1,24 @@ +program SessionTypes_Server; + + +{#ROGEN:SessionTypesLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + SessionTypes_ServerMain in 'SessionTypes_ServerMain.pas' {SessionTypes_ServerMainForm}, + SessionTypesLibrary_Intf in 'SessionTypesLibrary_Intf.pas', + SessionTypesLibrary_Invk in 'SessionTypesLibrary_Invk.pas', + SessionTypesService_Impl in 'SessionTypesService_Impl.pas' {SessionTypesService: TRORemoteDataModule}, + LoginService_Impl in 'LoginService_Impl.pas' {LoginService: TRORemoteDataModule}, + SessionTypes_Server_DBSessionManager in 'SessionTypes_Server_DBSessionManager.pas' {SessionTypes_Server_DBSessionManagerForm: TDataModule}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'SessionTypes - Server'; + Application.CreateForm(TSessionTypes_Server_DBSessionManagerForm, SessionTypes_Server_DBSessionManagerForm); + Application.CreateForm(TSessionTypes_ServerMainForm, SessionTypes_ServerMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dproj new file mode 100644 index 0000000..5a5c3f0 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.dproj @@ -0,0 +1,89 @@ + + + {bf2e1d05-f797-4869-96a9-62100733f9c2} + SessionTypes_Server.dpr + Debug + AnyCPU + DCC32 + SessionTypes_Server.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + SessionTypes_Server.dpr + + + + + + + MainSource + + +
    LoginService
    +
    + + + +
    SessionTypesService
    +
    + +
    SessionTypes_ServerMainForm
    +
    + +
    SessionTypes_Server_DBSessionManagerForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.res new file mode 100644 index 0000000..aa9db5a Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.dfm new file mode 100644 index 0000000..6e77e46 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.dfm @@ -0,0 +1,125 @@ +object SessionTypes_ServerMainForm: TSessionTypes_ServerMainForm + Left = 308 + Top = 255 + Width = 609 + Height = 413 + Caption = 'SessionTypes - Server' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 194 + Top = 3 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object infotext: TLabel + Left = 179 + Top = 60 + Width = 417 + Height = 84 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Caption = 'infotext' + WordWrap = True + end + object Memo: TMemo + Left = 0 + Top = 149 + Width = 601 + Height = 235 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 0 + end + object rgSessions: TRadioGroup + Left = 0 + Top = 53 + Width = 176 + Height = 96 + Align = alCustom + Caption = 'Session' + ItemIndex = 0 + Items.Strings = ( + 'InMemorySessionManager' + 'MasterServerSessionManager' + 'EventSessionManager' + 'RODBSessionManager') + TabOrder = 1 + OnClick = rgSessionsClick + end + object ROBinMessage: TROBinMessage + Envelopes = <> + Left = 52 + Top = 5 + end + object ROServer: TROSuperTCPServer + Dispatchers = < + item + Name = 'ROBinMessage' + Message = ROBinMessage + Enabled = True + end> + DefaultResponse = 'ROSC:Invalid connection string' + Left = 81 + Top = 5 + end + object EventSessionManager: TROEventSessionManager + OnSessionCreated = SessionManagerSessionCreated + OnSessionDeleted = SessionManagerSessionDeleted + OnDeleteSession = EventSessionManagerDeleteSession + OnFindSession = EventSessionManagerFindSession + OnReleaseSession = EventSessionManagerReleaseSession + OnClearSessions = EventSessionManagerClearSessions + OnGetSessionCount = EventSessionManagerGetSessionCount + Left = 75 + Top = 209 + end + object InMemorySessionManager: TROInMemorySessionManager + OnSessionCreated = SessionManagerSessionCreated + OnSessionDeleted = SessionManagerSessionDeleted + Left = 74 + Top = 152 + end + object MasterServerSessionManager: TROMasterServerSessionManager + OnSessionCreated = SessionManagerSessionCreated + OnSessionDeleted = SessionManagerSessionDeleted + OnException = MasterServerSessionManagerException + Channel = ROIndyTCPChannel + Left = 75 + Top = 181 + end + object RODBSessionManager: TRODBSessionManager + OnSessionCreated = SessionManagerSessionCreated + OnSessionDeleted = SessionManagerSessionDeleted + OnException = RODBSessionManagerException + FieldNameSessionID = 'SessionID' + FieldNameCreated = 'Created' + FieldNameLastAccessed = 'LastAccessed' + FieldNameData = 'Data' + InsertDataset = SessionTypes_Server_DBSessionManagerForm.quInsertSession + DeleteDataset = SessionTypes_Server_DBSessionManagerForm.quDeleteSession + UpdateDataset = SessionTypes_Server_DBSessionManagerForm.quUpdateSession + SelectDataset = SessionTypes_Server_DBSessionManagerForm.quSelectSession + GetCountDataset = SessionTypes_Server_DBSessionManagerForm.quGetSessionCount + ClearSessionsDataset = SessionTypes_Server_DBSessionManagerForm.quClearSessions + SelectAllDataset = SessionTypes_Server_DBSessionManagerForm.quSelectAllSessions + ClearSessionsOnCreate = False + ClearSessionsOnDestroy = False + Left = 75 + Top = 256 + end + object ROIndyTCPChannel: TROIndyTCPChannel + ServerLocators = <> + DispatchOptions = [] + Port = 8090 + Host = '127.0.0.1' + Left = 198 + Top = 164 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.pas new file mode 100644 index 0000000..2833fd6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_ServerMain.pas @@ -0,0 +1,245 @@ +unit SessionTypes_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uROPoweredByRemObjectsButton, SyncObjs, ExtCtrls, + uROSuperTCPServer, uROClient, uROServer, uROBinMessage, + uROMasterServerSessionManager, uROSessions, + uRODBSessionManager, SessionTypes_Server_DBSessionManager, + uROIndyTCPChannel; +type + TSessionTypes_ServerMainForm = class(TForm) + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + Memo: TMemo; + rgSessions: TRadioGroup; + ROBinMessage: TROBinMessage; + ROServer: TROSuperTcpServer; + EventSessionManager: TROEventSessionManager; + InMemorySessionManager: TROInMemorySessionManager; + MasterServerSessionManager: TROMasterServerSessionManager; + RODBSessionManager: TRODBSessionManager; + infotext: TLabel; + ROIndyTCPChannel: TROIndyTCPChannel; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure SessionManagerSessionCreated(const aSession: TROSession); + procedure SessionManagerSessionDeleted(const aSessionID: TGUID; IsExpired: Boolean); + procedure EventSessionManagerReleaseSession(var aSession: TROSession; NewSession: Boolean); + function EventSessionManagerGetSessionCount(SessionManager: TROCustomSessionManager): Integer; + procedure EventSessionManagerDeleteSession(const aSessionID: TGUID; IsExpired: Boolean); + procedure EventSessionManagerClearSessions(SessionManager: TROCustomSessionManager; OnlyExpired: Boolean); + procedure rgSessionsClick(Sender: TObject); + procedure EventSessionManagerFindSession(const aSessionID: TGUID; + out aSession: TROSession); + procedure MasterServerSessionManagerException(aSessionID: TGUID; + anException: Exception; var aRetry: Boolean); + procedure RODBSessionManagerException(aSessionID: TGUID; + anException: Exception; var aRetry: Boolean); + private + CriticalSection: TCriticalSection; + EventSessionList: TStringList; + function GetSessionManager: TROCustomSessionManager; + public + { Public declarations } + procedure Log(Astr: string); + published + property _SessionManager: TROCustomSessionManager read GetSessionManager; + end; + +var + SessionTypes_ServerMainForm: TSessionTypes_ServerMainForm; + +implementation +uses Inifiles; +{$R *.dfm} + +{ TSessionTypes_ServerMainForm } + +procedure TSessionTypes_ServerMainForm.Log(Astr: string); +begin + if CriticalSection = nil then exit; + CriticalSection.Enter; + try + if AStr = '' then + Memo.Lines.Add('') + else + Memo.Lines.Add(DateTimetoStr(Now) + ': ' + Astr); + finally + CriticalSection.Leave; + end; +end; + +procedure TSessionTypes_ServerMainForm.FormCreate(Sender: TObject); +begin + CriticalSection := TCriticalSection.Create; + ROServer.Active := True; + // init Event manager + + EventSessionList := TStringList.Create; + EventSessionList.Duplicates := dupError; + EventSessionList.Sorted := TRUE; + + rgSessionsClick(rgSessions); +end; + +procedure TSessionTypes_ServerMainForm.FormDestroy(Sender: TObject); +begin + // we should manually clear sessions for TROEventSessionManager + EventSessionManager.ClearSessions(False); + CriticalSection.Free; + CriticalSection:=nil; + EventSessionList.Free; +end; + +function TSessionTypes_ServerMainForm.GetSessionManager: TROCustomSessionManager; +begin + case rgSessions.ItemIndex of + 1: Result := MasterServerSessionManager; + 2: Result := EventSessionManager; + 3: Result := RODBSessionManager; + else + { 0:} Result := InMemorySessionManager; + end; +end; + +procedure TSessionTypes_ServerMainForm.SessionManagerSessionCreated( + const aSession: TROSession); +begin + Log(rgSessions.Items[rgSessions.ItemIndex] + ': Session ' + GUIDToString(aSession.SessionID) + ' created!'); +end; + +procedure TSessionTypes_ServerMainForm.SessionManagerSessionDeleted( + const aSessionID: TGUID; IsExpired: Boolean); +begin + if (csDestroying in ComponentState) then Exit; // See destructor + Log(rgSessions.Items[rgSessions.ItemIndex] + ': Session ' + GUIDToString(aSessionID) + ' has been closed'); + Log(''); +end; + +procedure TSessionTypes_ServerMainForm.EventSessionManagerReleaseSession( + var aSession: TROSession; NewSession: Boolean); +var + id: string; +begin + inherited; + if NewSession then begin + id := GUIDToString(aSession.SessionID); + EventSessionList.AddObject(id, aSession); + end; +end; + +function TSessionTypes_ServerMainForm.EventSessionManagerGetSessionCount( + SessionManager: TROCustomSessionManager): Integer; +begin + result := EventSessionList.Count; +end; + + +procedure TSessionTypes_ServerMainForm.EventSessionManagerDeleteSession( + const aSessionID: TGUID; IsExpired: Boolean); +var + idx: integer; +begin + idx := EventSessionList.IndexOf(GUIDToString(aSessionID)); + if (idx >= 0) then begin + EventSessionList.Objects[idx].Free; + EventSessionList.Delete(idx); + end; +end; + +procedure TSessionTypes_ServerMainForm.EventSessionManagerClearSessions( + SessionManager: TROCustomSessionManager; OnlyExpired: Boolean); +var + i: integer; + lSessionID: TGUID; +begin + if OnlyExpired then begin + for i := (EventSessionList.Count - 1) downto 0 do + if EventSessionManager.CheckSessionIsExpired(TROSession(EventSessionList.Objects[i])) then begin + lSessionID := TROSession(EventSessionList.Objects[i]).SessionID; + EventSessionManager.DeleteSession(lSessionID, TRUE); + end; + end + else + for i := (EventSessionList.Count - 1) downto 0 do begin + lSessionID := TROSession(EventSessionList.Objects[i]).SessionID; + EventSessionManager.DeleteSession(lSessionID, FALSE); + end; +end; + +procedure TSessionTypes_ServerMainForm.rgSessionsClick(Sender: TObject); + + procedure SetupDBSession; + begin + // init RODBSessionManager + with RODBSessionManager do + if InsertDataset = nil then begin + InsertDataset := SessionTypes_Server_DBSessionManagerForm.quInsertSession; + DeleteDataset := SessionTypes_Server_DBSessionManagerForm.quDeleteSession; + UpdateDataset := SessionTypes_Server_DBSessionManagerForm.quUpdateSession; + SelectDataset := SessionTypes_Server_DBSessionManagerForm.quSelectSession; + GetCountDataset := SessionTypes_Server_DBSessionManagerForm.quGetSessionCount; + ClearSessionsDataset := SessionTypes_Server_DBSessionManagerForm.quClearSessions; + end; + end; + +begin + case rgSessions.ItemIndex of + 1 {MasterServerSessionManager}: begin + infotext.Caption := + 'Stores session data in a precompiled mini database server provided with' + + 'RemObjects SDK (the Master Server). Provides the same benefits ' + + 'as the database session managers, without the need to manually maintain a ' + + 'database or database server.' + sLineBreak + + 'Demands started ''...\RemObjects SDK for Delphi\Bin\ROMasterServer.exe'''; + end; + 2 {EventSessionManager}: + infotext.Caption := + 'Provides an easy way to use custom code to manually store and retrieve session data.'; + 3 {RODBSessionManager}: begin + infotext.Caption := + 'Stores session data in a database table accessible via ADO.NET, a Delphi TDataSet ' + + 'component. This allows sharing of session data between servers and keeps session ' + + 'information persisted across server restarts.'; + SetupDBSession; + end; + else + {0}{InMemorySessionManager} + infotext.Caption := + 'Stores session data in local memory within the application server. ' + + 'This provides fast access, but does not persist session ' + + 'information when the server is restarted. Also, common session ' + + 'data cannot be shared by a server farm.'; + end; +end; + +procedure TSessionTypes_ServerMainForm.EventSessionManagerFindSession( + const aSessionID: TGUID; out aSession: TROSession); +var + idx: integer; +begin + aSession := nil; + idx := EventSessionList.IndexOf(GUIDToString(aSessionID)); + if (idx >= 0) then aSession := TROSession(EventSessionList.Objects[idx]); + if (aSession <> nil) then aSession.LastAccessed := Now; +end; + +procedure TSessionTypes_ServerMainForm.MasterServerSessionManagerException( + aSessionID: TGUID; anException: Exception; var aRetry: Boolean); +begin + aRetry:=False; + Raise Exception.Create('Error connecting to MasterServer. Please run the MasterServer before attempting to store session data in the MasterServerSessionManager.'); +end; + +procedure TSessionTypes_ServerMainForm.RODBSessionManagerException( + aSessionID: TGUID; anException: Exception; var aRetry: Boolean); +begin + aRetry:=False; + Raise Exception.Create('Error connecting to MSSQL server.'); +end; + +end. + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.dfm new file mode 100644 index 0000000..4bf72a8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.dfm @@ -0,0 +1,166 @@ +object SessionTypes_Server_DBSessionManagerForm: TSessionTypes_Server_DBSessionManagerForm + OldCreateOrder = False + Left = 478 + Top = 240 + Height = 212 + Width = 327 + object quClearSessions: TADOQuery + Connection = ADOConnection + Parameters = < + item + Name = 'LastAccessed' + DataType = ftFloat + Value = 37751.3380116088 + end> + Prepared = True + SQL.Strings = ( + 'DELETE FROM Sessions ' + 'WHERE LastAccessed<:LastAccessed') + Left = 16 + Top = 120 + end + object ADOConnection: TADOConnection + ConnectionString = + 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' + + 'al Catalog=Northwind;Data Source=.' + LoginPrompt = False + Provider = 'SQLOLEDB.1' + Left = 16 + Top = 80 + end + object quInsertSession: TADOQuery + Connection = ADOConnection + Parameters = < + item + Name = 'SessionID' + DataType = ftString + NumericScale = 255 + Precision = 255 + Size = 38 + Value = Null + end + item + Name = 'Created' + Attributes = [paNullable] + DataType = ftDateTime + NumericScale = 3 + Precision = 23 + Size = 16 + Value = Null + end + item + Name = 'LastAccessed' + Attributes = [paNullable] + DataType = ftDateTime + NumericScale = 3 + Precision = 23 + Size = 16 + Value = Null + end + item + Name = 'Data' + Attributes = [paNullable, paLong] + DataType = ftBlob + Size = -1 + Value = Null + end> + Prepared = True + SQL.Strings = ( + + 'INSERT INTO Sessions ([SessionID], [Created], [LastAccessed], [D' + + 'ata])' + 'VALUES(:SessionID, :Created, :LastAccessed, :Data)') + Left = 48 + Top = 120 + end + object quDeleteSession: TADOQuery + Connection = ADOConnection + Parameters = < + item + Name = 'SessionID' + DataType = ftString + NumericScale = 255 + Precision = 255 + Size = 38 + Value = Null + end> + Prepared = True + SQL.Strings = ( + 'DELETE FROM Sessions' + 'WHERE SessionID=:SessionID') + Left = 80 + Top = 120 + end + object quUpdateSession: TADOQuery + Connection = ADOConnection + Parameters = < + item + Name = 'LastAccessed' + Attributes = [paNullable] + DataType = ftDateTime + NumericScale = 3 + Precision = 23 + Size = 16 + Value = Null + end + item + Name = 'Data' + Attributes = [paNullable, paLong] + DataType = ftBlob + Size = -1 + Value = Null + end + item + Name = 'SessionID' + DataType = ftString + NumericScale = 255 + Precision = 255 + Size = 38 + Value = Null + end> + Prepared = True + SQL.Strings = ( + 'UPDATE Sessions SET LastAccessed=:LastAccessed, Data=:Data' + 'WHERE SessionID=:SessionID') + Left = 112 + Top = 120 + end + object quSelectSession: TADOQuery + Connection = ADOConnection + CursorType = ctStatic + Parameters = < + item + Name = 'SessionID' + DataType = ftString + NumericScale = 255 + Precision = 255 + Size = 38 + Value = Null + end> + Prepared = True + SQL.Strings = ( + 'SELECT * FROM Sessions' + 'WHERE SessionID=:SessionID') + Left = 144 + Top = 120 + end + object quGetSessionCount: TADOQuery + Connection = ADOConnection + Parameters = <> + Prepared = True + SQL.Strings = ( + 'SELECT COUNT(*) FROM Sessions') + Left = 176 + Top = 120 + end + object quSelectAllSessions: TADOQuery + Connection = ADOConnection + CursorType = ctStatic + Parameters = <> + Prepared = True + SQL.Strings = ( + 'SELECT * FROM Sessions') + Left = 208 + Top = 120 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.pas new file mode 100644 index 0000000..14ee4ab --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Session Types/SessionTypes_Server_DBSessionManager.pas @@ -0,0 +1,32 @@ +unit SessionTypes_Server_DBSessionManager; + +interface + +uses + SysUtils, Classes, uROClient, uROSessions, uRODBSessionManager, DB, ADODB; + +type + TSessionTypes_Server_DBSessionManagerForm = class(TDataModule) + quClearSessions: TADOQuery; + ADOConnection: TADOConnection; + quInsertSession: TADOQuery; + quDeleteSession: TADOQuery; + quUpdateSession: TADOQuery; + quSelectSession: TADOQuery; + quGetSessionCount: TADOQuery; + quSelectAllSessions: TADOQuery; + private + { Private declarations } + public + { Public declarations } + end; + +var + SessionTypes_Server_DBSessionManagerForm: TSessionTypes_Server_DBSessionManagerForm; + +implementation + +{$R *.dfm} + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Styles.css b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Styles.css new file mode 100644 index 0000000..c8e0628 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Styles.css @@ -0,0 +1,103 @@ +body +{ + background-color: #f7f7f7; + margin-top: 15px; + margin-bottom: 15px; + margin-left: 15px; + margin-right: 15px; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + font-family: tahoma, verdana, sans-serif; + font-size: 10pt; + width: 700px; + color: #000000; +} +p +{ + padding-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0.5em; +} +ul +{ + padding-top: 0; + padding-bottom: 0; + list-style-type: disc; +} +li +{ + padding-top: 0; + padding-bottom: 0; +} +img +{ + margin: 5px; + border-width: 0; +} +table +{ + background-color: #f7f7f7; + margin: 15px; + padding: 0px; + font-size: 10pt; +} +tr +{ + background-color: #f7f7f7; + margin: 15px; + padding: 0px; + font-size: 10pt; +} +td, th +{ + background-color: #f7f7f7; + margin: 0; + padding: 5px; + font-size: 10pt; +} +td ul +{ + padding-left: 2em; +} + +img:left { margin-left: 0; } +img:right { margin-right: 0; } +p.h1 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:13pt; + font-weight:bold; +} +p.h2 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:11pt; + font-weight:bold; +} +p.h3 +{ + margin-top: 1em; + margin-bottom: 0.5px; + padding-bottom:0px; + font-size:10pt; + font-weight:bold; +} +pre +{ + margin-top:0px; + margin-bottom:0px; + margin-left:0px; + margin-right:0px; +} +.spaced +{ + letter-spacing:1px; + color:#000060; +} diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ApprovedClientsStorage.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ApprovedClientsStorage.pas new file mode 100644 index 0000000..1e88216 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ApprovedClientsStorage.pas @@ -0,0 +1,136 @@ +unit ApprovedClientsStorage; + +interface + +uses Classes, SyncObjs, uROTypes; + +type + TApprovedClientsStorage = class(TObject) + private + fStorageFile: string; + fGuidList: TStringList; + fLock: TCriticalSection; + procedure SetStorageFile(aName: string); + protected + procedure Initialize; + procedure FlushStorage; + public + constructor Create; + destructor Destroy; override; + procedure AddClient(aClientGuid: Guid); + function IsClientKnown(aClientGuid: Guid): boolean; + property StorageFile: string read fStorageFile write SetStorageFile; + end; + +var + StorageInstance: TApprovedClientsStorage; + +implementation + +uses SysUtils, uROClasses; + +{ TApprovedClientsStorage } + +procedure TApprovedClientsStorage.AddClient(aClientGuid: Guid); +var s: AnsiString; +begin + s := AnsiUpperCase({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(aClientGuid)); + if fGuidList.IndexOf(s) = -1 then begin + fLock.Enter; + try + if fGuidList.IndexOf(s) = -1 then begin + fGuidList.Add(s); + FlushStorage; + end; + finally + fLock.Leave; + end; + end; +end; + +constructor TApprovedClientsStorage.Create; +begin + inherited; + fGuidList := TStringList.Create; + fLock := TCriticalSection.Create; +end; + +destructor TApprovedClientsStorage.Destroy; +begin + fGuidList.Free; + fLock.Free; + inherited; +end; + +procedure TApprovedClientsStorage.FlushStorage; +var + f: Text; + s: AnsiString; + i: integer; +begin + {$I-} + AssignFile(f, fStorageFile); + try + Rewrite(f); + for i := 0 to fGuidList.Count - 1 do begin + s := {$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(fGuidList[i]); + WriteLn(f, s); + if IOResult <> 0 then raise Exception.Create('Approved clients file write error.'); + end; + finally + CloseFile(f); + end; +end; + +procedure TApprovedClientsStorage.Initialize; +var + f: Text; + s: AnsiString; +begin + {$I-} + AssignFile(f, fStorageFile); + try + fGuidList.Clear; + Reset(f); + if IOResult <> 0 then Rewrite(f) + else + while not Eof(f) do begin + ReadLn(f, s); + if IOResult <> 0 then raise Exception.Create('Approved clients file read error.'); + fGuidList.Append({$IFDEF UNICODE}AnsiStringToWideString{$ENDIF}(s)); + end; + finally + CloseFile(f); + end; +end; + +function TApprovedClientsStorage.IsClientKnown(aClientGuid: Guid): boolean; +var s: AnsiString; +begin + s := AnsiUpperCase({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(aClientGuid)); + fLock.Enter; + try + Result := fGuidList.IndexOf(s) > -1; + finally + fLock.Leave; + end; +end; + +procedure TApprovedClientsStorage.SetStorageFile(aName: string); +var needInit: boolean; +begin + fLock.Enter; + try + needInit := fStorageFile = ''; + fStorageFile := aName; + if needInit then Initialize; + finally + fLock.Leave; + end; +end; + +initialization + StorageInstance := TApprovedClientsStorage.Create; +finalization + StorageInstance.Free; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/AproovedClientsStorage.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/AproovedClientsStorage.pas new file mode 100644 index 0000000..c65636c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/AproovedClientsStorage.pas @@ -0,0 +1,136 @@ +unit ApprovedClientsStorage; + +interface + +uses Classes, SyncObjs; + +type + TApprovedClientsStorage = class(TObject) + private + fStorageFile: string; + fGuidList: TStringList; + fLock: TCriticalSection; + procedure SetStorageFile(aName: string); + protected + procedure Initialize; + procedure FlushStorage; + public + constructor Create; + destructor Destroy; override; + procedure AddClient(aClientGuid: string); + function IsClientKnown(aClientGuid: string): boolean; + property StorageFile: string read fStorageFile write SetStorageFile; + end; + +var + StorageInstance: TApprovedClientsStorage; + +implementation + +uses SysUtils, uROClasses; + +{ TApprovedClientsStorage } + +procedure TApprovedClientsStorage.AddClient(aClientGuid: string); +var s: AnsiString; +begin + s := AnsiUpperCase({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(aClientGuid)); + if fGuidList.IndexOf(s) = -1 then begin + fLock.Enter; + try + if fGuidList.IndexOf(s) = -1 then begin + fGuidList.Add(s); + FlushStorage; + end; + finally + fLock.Leave; + end; + end; +end; + +constructor TApprovedClientsStorage.Create; +begin + inherited; + fGuidList := TStringList.Create; + fLock := TCriticalSection.Create; +end; + +destructor TApprovedClientsStorage.Destroy; +begin + fGuidList.Free; + fLock.Free; + inherited; +end; + +procedure TApprovedClientsStorage.FlushStorage; +var + f: Text; + s: AnsiString; + i: integer; +begin + {$I-} + AssignFile(f, fStorageFile); + try + Rewrite(f); + for i := 0 to fGuidList.Count - 1 do begin + s := {$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(fGuidList[i]); + WriteLn(f, s); + if IOResult <> 0 then raise Exception.Create('Approved clients file write error.'); + end; + finally + CloseFile(f); + end; +end; + +procedure TApprovedClientsStorage.Initialize; +var + f: Text; + s: AnsiString; +begin + {$I-} + AssignFile(f, fStorageFile); + try + fGuidList.Clear; + Reset(f); + if IOResult <> 0 then Rewrite(f) + else + while not Eof(f) do begin + ReadLn(f, s); + if IOResult <> 0 then raise Exception.Create('Approved clients file read error.'); + fGuidList.Append({$IFDEF UNICODE}AnsiStringToWideString{$ENDIF}(s)); + end; + finally + CloseFile(f); + end; +end; + +function TApprovedClientsStorage.IsClientKnown(aClientGuid: string): boolean; +var s: AnsiString; +begin + s := AnsiUpperCase({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(aClientGuid)); + fLock.Enter; + try + Result := fGuidList.IndexOf(s) > -1; + finally + fLock.Leave; + end; +end; + +procedure TApprovedClientsStorage.SetStorageFile(aName: string); +var needInit: boolean; +begin + fLock.Enter; + try + needInit := fStorageFile = ''; + fStorageFile := aName; + if needInit then Initialize; + finally + fLock.Leave; + end; +end; + +initialization + StorageInstance := TApprovedClientsStorage.Create; +finalization + StorageInstance.Free; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.dfm new file mode 100644 index 0000000..5ceacb7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.dfm @@ -0,0 +1,10 @@ +object ChatServerService: TChatServerService + OldCreateOrder = True + RequiresSession = True + SessionManager = SuperTCPChannelChat_ServerMainForm.ROSessionManager + EventRepository = SuperTCPChannelChat_ServerMainForm.ROEventRepository + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.pas new file mode 100644 index 0000000..6e12e92 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/ChatServerService_Impl.pas @@ -0,0 +1,72 @@ +unit ChatServerService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, Variants, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} SuperTCPChannelChatLibrary_Intf; + +type + { TChatServerService } + TChatServerService = class(TRORemoteDataModule, IChatServerService) + private + protected + { IChatServerService methods } + procedure TalkPrivate(const TargetNickname: WideString; const Message: WideString); + procedure Talk(const Message: WideString); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} SuperTCPChannelChatLibrary_Invk, SuperTCPChannelChat_ServerMain; + +procedure Create_ChatServerService(out anInstance : IUnknown); +begin + anInstance := TChatServerService.Create(nil); +end; + +{ ChatServerService } +procedure TChatServerService.TalkPrivate(const TargetNickname: WideString; const Message: WideString); +var + ev: IChatEvents_Writer; + i: Integer; + aDestGuid: string; +begin + UserClientIDListCs.Acquire; + try + i := UserClientIDList.IndexOfName(TargetNickname); + if i = -1 then + raise Exception.Create('Invalid user: '+TargetNickname); + aDestGuid := UserClientIDList.Values[TargetNickname]; + finally + UserClientIDListCs.Release; + end; + ev := (EventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + ev.SessionList.Add(aDestGuid); + ev.Message(session.SessionID, VarToStr(Session['nick']), TargetNickname, Message); +end; + +procedure TChatServerService.Talk(const Message: WideString); +var + ev: IChatEvents_Writer; +begin + ev := (EventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + ev.Message(session.SessionID, VarToStr(Session['nick']), '', Message); +end; + +initialization + TROClassFactory.Create('ChatServerService', Create_ChatServerService, TChatServerService_Invoker); +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.dfm new file mode 100644 index 0000000..c349242 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.dfm @@ -0,0 +1,9 @@ +object LoginService: TLoginService + OldCreateOrder = True + SessionManager = SuperTCPChannelChat_ServerMainForm.ROSessionManager + EventRepository = SuperTCPChannelChat_ServerMainForm.ROEventRepository + Left = 582 + Top = 194 + Height = 304 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.pas new file mode 100644 index 0000000..8747e36 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/LoginService_Impl.pas @@ -0,0 +1,105 @@ +unit LoginService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} SuperTCPChannelChatLibrary_Intf; + +type + { TLoginService } + TLoginService = class(TRORemoteDataModule, ILoginService) + private + protected + { ILoginService methods } + procedure Login(const Nickname: Widestring); + procedure Logout; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} SuperTCPChannelChatLibrary_Invk, SuperTCPChannelChat_ServerMain, Variants, uROClasses; + +procedure Create_LoginService(out anInstance: IUnknown); +begin + anInstance := TLoginService.Create(nil); +end; + +{ LoginService } + +procedure TLoginService.Login(const Nickname: Widestring); +var + ev: IChatEvents_Writer; + i: Integer; + s: Widestring; +begin + UserClientIDListCs.Acquire; + try + if UserClientIDList.IndexOfName(Nickname) <> -1 then raise Exception.Create('Nickname already in use'); + s := VarToWideStr(Session['nick']); + if s <> '' then + UserClientIDList.Delete(UserClientIDList.IndexOfName(s)); + + + RegisterEventClient({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(GuidToString(self.ClientID)), 'IChatEvents'); + ev := (EventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + ev.SessionList.Add(GuidToString(Session.SessionID)); + + for i := 0 to UserClientIDList.Count - 1 do begin + ev.UserLogin(Session.SessionID, UserClientIDList.Names[i]); + end; + + UserClientIDList.Add(Nickname + '=' + GUIDToString(Session.SessionID)); + + ev := (EventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + for i := 0 to UserClientIDList.Count - 1 do + ev.SessionList.Add(Copy(UserClientIDList[i], pos('=', UserClientIDList[i])+1, MaxInt)); + ev.UserLogin(Session.SessionID, Nickname); + finally + UserClientIDListCs.Release; + end; + Session['nick'] := Nickname; +end; + +procedure TLoginService.Logout; +var + i: Integer; + ev: IChatEvents_Writer; + s: Widestring; +begin + UserClientIDListCs.Acquire; + s := VarToWideStr(Session['nick']); + try + i := UserClientIDList.IndexOfName(s); + if i <> -1 then + UserClientIDList.Delete(i); + finally + UserClientIDListCs.Release; + end; + ev := (EventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + ev.UserLogout(Session.SessionID, s); + UnregisterEventClient({$IFDEF UNICODE}WideStringToAnsiString{$ENDIF}(GUIDToString(ClientID)), 'IChatEvents'); + DestroySession; +end; + +initialization + TROClassFactory.Create('LoginService', Create_LoginService, TLoginService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary.rodl new file mode 100644 index 0000000..0812323 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary.rodl @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Intf.pas new file mode 100644 index 0000000..0c16e02 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Intf.pas @@ -0,0 +1,171 @@ +unit PairingLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{C04AE0F2-540E-434F-96FA-08B8A7810005}'; + TargetNamespace = ''; + + { Service Interface ID's } + ITestService_IID : TGUID = '{7941D2C3-63AE-4559-BB62-3443C5B3EB3F}'; + IPairingService_IID : TGUID = '{CBA27400-AE3F-4945-8520-0EA97EC5DE41}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + ITestService = interface; + IPairingService = interface; + + + { Enumerateds } + PairingStatus = (PairingStatus_Successfull,PairingStatus_PairingRequired,PairingStatus_PairingBusy); + + { ITestService } + ITestService = interface + ['{7941D2C3-63AE-4559-BB62-3443C5B3EB3F}'] + function GetServerTime: DateTime; + end; + + { CoTestService } + CoTestService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ITestService; + end; + + { TTestService_Proxy } + TTestService_Proxy = class(TROProxy, ITestService) + protected + function __GetInterfaceName:string; override; + + function GetServerTime: DateTime; + end; + + { IPairingService } + IPairingService = interface + ['{CBA27400-AE3F-4945-8520-0EA97EC5DE41}'] + function LoginAttempt(const ClientGuid: Guid): Integer; + function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; + end; + + { CoPairingService } + CoPairingService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IPairingService; + end; + + { TPairingService_Proxy } + TPairingService_Proxy = class(TROProxy, IPairingService) + protected + function __GetInterfaceName:string; override; + + function LoginAttempt(const ClientGuid: Guid): Integer; + function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoTestService } + +class function CoTestService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ITestService; +begin + result := TTestService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TTestService_Proxy } + +function TTestService_Proxy.__GetInterfaceName:string; +begin + result := 'TestService'; +end; + +function TTestService_Proxy.GetServerTime: DateTime; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'PairingLibrary', __InterfaceName, 'GetServerTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoPairingService } + +class function CoPairingService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IPairingService; +begin + result := TPairingService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TPairingService_Proxy } + +function TPairingService_Proxy.__GetInterfaceName:string; +begin + result := 'PairingService'; +end; + +function TPairingService_Proxy.LoginAttempt(const ClientGuid: Guid): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'PairingLibrary', __InterfaceName, 'LoginAttempt'); + __Message.Write('ClientGuid', TypeInfo(Guid), ClientGuid, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TPairingService_Proxy.ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'PairingLibrary', __InterfaceName, 'ConfirmCode'); + __Message.Write('Code', TypeInfo(AnsiString), Code, []); + __Message.Write('ClientGuid', TypeInfo(Guid), ClientGuid, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(ITestService_IID, TTestService_Proxy); + RegisterProxyClass(IPairingService_IID, TPairingService_Proxy); + + +finalization + UnregisterProxyClass(ITestService_IID); + UnregisterProxyClass(IPairingService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Invk.pas new file mode 100644 index 0000000..ac3b810 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingLibrary_Invk.pas @@ -0,0 +1,122 @@ +unit PairingLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} PairingLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TTestService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TPairingService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_LoginAttempt(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ConfirmCode(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TTestService_Invoker } + +constructor TTestService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TTestService_Invoker.Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetServerTime: DateTime; } +var + lResult: DateTime; +begin + try + lResult := (__Instance as ITestService).GetServerTime; + + __Message.InitializeResponseMessage(__Transport, 'PairingLibrary', 'TestService', 'GetServerTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TPairingService_Invoker } + +constructor TPairingService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TPairingService_Invoker.Invoke_LoginAttempt(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function LoginAttempt(const ClientGuid: Guid): Integer; } +var + ClientGuid: Guid; + lResult: Integer; +begin + try + __Message.Read('ClientGuid', TypeInfo(Guid), ClientGuid, []); + + lResult := (__Instance as IPairingService).LoginAttempt(ClientGuid); + + __Message.InitializeResponseMessage(__Transport, 'PairingLibrary', 'PairingService', 'LoginAttemptResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TPairingService_Invoker.Invoke_ConfirmCode(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; } +var + Code: AnsiString; + ClientGuid: Guid; + lResult: Boolean; +begin + try + __Message.Read('Code', TypeInfo(AnsiString), Code, []); + __Message.Read('ClientGuid', TypeInfo(Guid), ClientGuid, []); + + lResult := (__Instance as IPairingService).ConfirmCode(Code, ClientGuid); + + __Message.InitializeResponseMessage(__Transport, 'PairingLibrary', 'PairingService', 'ConfirmCodeResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.dfm new file mode 100644 index 0000000..e574333 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.dfm @@ -0,0 +1,6 @@ +object PairingService: TPairingService + OldCreateOrder = True + SessionManager = ServerDataModule.SessionManager + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.pas new file mode 100644 index 0000000..f8cf9cc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingService_Impl.pas @@ -0,0 +1,90 @@ +unit PairingService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {$IFDEF FPC}LResources,{$ENDIF} + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} PairingLibrary_Intf; + +type + { TPairingService } + TPairingService = class(TRORemoteDataModule, IPairingService) + protected + { IPairingService methods } + function LoginAttempt(const ClientGuid: Guid): integer; + function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; + end; + +implementation + +{$IFNDEF FPC} + {$R *.dfm} +{$ENDIF} +uses + {Generated:} PairingLibrary_Invk, + fServerDataModule, ApprovedClientsStorage, PairingStatus, uROClasses, + fServerForm; + +procedure Create_PairingService(out anInstance : IUnknown); +begin + anInstance := TPairingService.Create(nil); +end; + +{ PairingService } + +function TPairingService.LoginAttempt(const ClientGuid: Guid): integer; +begin + if StorageInstance.IsClientKnown(ClientGuid) then begin + Result := ord(PairingStatus_Successfull); + Session.Values['OK'] := true; + end + else begin + DestroySession; + if Pairing.InitiatePairing > 0 then begin + Result := ord(PairingStatus_PairingRequired); + ServerForm.DisplayPairingCode(Pairing.Code); + end + else Result := ord(PairingStatus_PairingBusy); + end; +end; + +function TPairingService.ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; +var s: string; +begin + s := {$IFDEF UNICODE}AnsiStringToWideString{$ENDIF}(Code); + Result := s = IntToStr(Pairing.Code); + if Result then begin + StorageInstance.AddClient(ClientGuid); + Session.Values['OK'] := true; + end + else DestroySession; + Pairing.CancelPairing; + ServerForm.HidePairingCode; +end; + +var + fClassFactory: IROClassFactory; + +initialization +{$IFDEF FPC} + {$I PairingService_Impl.lrs} +{$ENDIF} + fClassFactory := TROClassFactory.Create('PairingService', Create_PairingService, TPairingService_Invoker); + RegisterForZeroConf(fClassFactory,'_PairingService_rosdk._tcp.'); + +finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingStatus.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingStatus.pas new file mode 100644 index 0000000..caf0a66 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/PairingStatus.pas @@ -0,0 +1,80 @@ +unit PairingStatus; + +interface + +uses SyncObjs; + +type + TPairingStatus = class(TObject) + private + fCode: integer; + fLastAttempt: TDateTime; + fLock: TCriticalSection; + procedure CheckExpired; + public + constructor Create; + destructor Destroy; override; + procedure CancelPairing; + function InitiatePairing: integer; + property Code: integer read fCode; + end; + +var + Pairing: TPairingStatus; + +implementation + +uses SysUtils, DateUtils; + +{ TPairingStatus } + +procedure TPairingStatus.CancelPairing; +begin + fLock.Enter; + fCode := 0; + fLastAttempt := 0; + fLock.Leave; +end; + +procedure TPairingStatus.CheckExpired; +begin + if SecondSpan(Now, fLastAttempt) > 60 then begin + fCode := 0; + fLastAttempt := 0; + end; +end; + +constructor TPairingStatus.Create; +begin + inherited; + fLock := TCriticalSection.Create; +end; + +destructor TPairingStatus.Destroy; +begin + fLock.Free; + inherited; +end; + +function TPairingStatus.InitiatePairing: integer; +begin + fLock.Enter; + try + CheckExpired; + if fCode <> 0 then Result := 0 + else begin + fLastAttempt := Now; + fCode := (Random(8) + 1) * 1000 + Random(9) * 100 + Random(9) * 10 + Random(9); + Result := fCode; + end; + finally + fLock.Leave; + end; +end; + +initialization + Randomize; + Pairing := TPairingStatus.Create; +finalization + Pairing.Free; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/RODLFILE.res new file mode 100644 index 0000000..641d157 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.Sample.html new file mode 100644 index 0000000..80ff876 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.Sample.html @@ -0,0 +1,29 @@ + + + + + + + + + +

    + SuperTCP Channel Chat +

    + + +

    Purpose

    + +

    This sample shows how the Super TCP Channel can be used to create a chat server and clients. +
    +Unlike the HTTP Chat sample, this sample doesn't poll the server + but sends events back to clients directly.

    + +

    + Note: to test this sample properly, you need to open at least three clients. +
    + Each client instance will provide a default login user name, + but you can modify these as needed (there is no verification provided in this simple sample). +

    + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bdsgroup new file mode 100644 index 0000000..42cc3e6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + SuperTCPChannelChat_Server.bdsproj + SuperTCPChannelChat_Client.bdsproj + SuperTCPChannelChat_Server.exe SuperTCPChannelChat_Client.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bpg new file mode 100644 index 0000000..ce3c2fa --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = SuperTCPChannelChat_Server.exe SuperTCPChannelChat_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +SuperTCPChannelChat_Server.exe: SuperTCPChannelChat_Server.dpr + $(DCC) + +SuperTCPChannelChat_Client.exe: SuperTCPChannelChat_Client.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.groupproj new file mode 100644 index 0000000..3d46358 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat.groupproj @@ -0,0 +1,40 @@ + + + {352fd1c6-4fbe-4ec9-bc17-20a16a676c6f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary.rodl new file mode 100644 index 0000000..1145332 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary.rodl @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Intf.pas new file mode 100644 index 0000000..ff35c65 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Intf.pas @@ -0,0 +1,375 @@ +unit SuperTCPChannelChatLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{8A53A750-1F2B-4060-AAC0-77B4FC071D2D}'; + TargetNamespace = ''; + + { Service Interface ID's } + IChatServerService_IID : TGUID = '{6CC2111F-DDD6-4CF5-AB57-2CD98EF4FF5B}'; + ILoginService_IID : TGUID = '{3D19AEB1-6D2F-4142-B937-B97367133A2F}'; + + { Event ID's } + EID_ChatEvents = 'ChatEvents'; + +type + { Forward declarations } + IChatServerService = interface; + ILoginService = interface; + + IChatEvents = interface; + + + { IChatServerService } + IChatServerService = interface + ['{6CC2111F-DDD6-4CF5-AB57-2CD98EF4FF5B}'] + procedure TalkPrivate(const TargetNickname: Widestring; const Message: Widestring); + procedure Talk(const Message: Widestring); + end; + + { CoChatServerService } + CoChatServerService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IChatServerService; + end; + + { TChatServerService_Proxy } + TChatServerService_Proxy = class(TROProxy, IChatServerService) + protected + function __GetInterfaceName:string; override; + + procedure TalkPrivate(const TargetNickname: Widestring; const Message: Widestring); + procedure Talk(const Message: Widestring); + end; + + { ILoginService } + ILoginService = interface + ['{3D19AEB1-6D2F-4142-B937-B97367133A2F}'] + procedure Login(const Nickname: Widestring); + procedure Logout; + end; + + { CoLoginService } + CoLoginService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; + end; + + { TLoginService_Proxy } + TLoginService_Proxy = class(TROProxy, ILoginService) + protected + function __GetInterfaceName:string; override; + + procedure Login(const Nickname: Widestring); + procedure Logout; + end; + + { IChatEvents } + IChatEvents = interface + ['{C456D3B2-E44A-4FA6-8F71-3838D7F7525B}'] + procedure Message(const From: Widestring; const Target: Widestring; const Message: Widestring); + procedure UserLogin(const Nickname: Widestring); + procedure UserLogout(const Nickname: Widestring); + procedure ShutdownServer; + end; + + { IChatEvents_Writer } + IChatEvents_Writer = interface(IROEventWriter) + ['{C456D3B2-E44A-4FA6-8F71-3838D7F7525B}'] + procedure Message(const __Sender : TGUID; const From: Widestring; const Target: Widestring; const Message: Widestring); + procedure UserLogin(const __Sender : TGUID; const Nickname: Widestring); + procedure UserLogout(const __Sender : TGUID; const Nickname: Widestring); + procedure ShutdownServer(const __Sender : TGUID); + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ CoChatServerService } + +class function CoChatServerService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IChatServerService; +begin + result := TChatServerService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TChatServerService_Proxy } + +function TChatServerService_Proxy.__GetInterfaceName:string; +begin + result := 'ChatServerService'; +end; + +procedure TChatServerService_Proxy.TalkPrivate(const TargetNickname: Widestring; const Message: Widestring); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'TalkPrivate'); + __Message.Write('TargetNickname', TypeInfo(Widestring), TargetNickname, []); + __Message.Write('Message', TypeInfo(Widestring), Message, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TChatServerService_Proxy.Talk(const Message: Widestring); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Talk'); + __Message.Write('Message', TypeInfo(Widestring), Message, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoLoginService } + +class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; +begin + result := TLoginService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TLoginService_Proxy } + +function TLoginService_Proxy.__GetInterfaceName:string; +begin + result := 'LoginService'; +end; + +procedure TLoginService_Proxy.Login(const Nickname: Widestring); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Login'); + __Message.Write('Nickname', TypeInfo(Widestring), Nickname, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TLoginService_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +type + { TChatEvents_Writer } + TChatEvents_Writer = class(TROEventWriter, IChatEvents_Writer) + protected + procedure Message(const __Sender : TGUID; const From: Widestring; const Target: Widestring; const Message: Widestring); + procedure UserLogin(const __Sender : TGUID; const Nickname: Widestring); + procedure UserLogout(const __Sender : TGUID; const Nickname: Widestring); + procedure ShutdownServer(const __Sender : TGUID); + end; + +procedure TChatEvents_Writer.Message(const __Sender : TGUID; const From: Widestring; const Target: Widestring; const Message: Widestring); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'Message'); + __Message.Write('From', TypeInfo(Widestring), From, []); + __Message.Write('Target', TypeInfo(Widestring), Target, []); + __Message.Write('Message', TypeInfo(Widestring), Message, []); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +procedure TChatEvents_Writer.UserLogin(const __Sender : TGUID; const Nickname: Widestring); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'UserLogin'); + __Message.Write('Nickname', TypeInfo(Widestring), Nickname, []); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +procedure TChatEvents_Writer.UserLogout(const __Sender : TGUID; const Nickname: Widestring); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'UserLogout'); + __Message.Write('Nickname', TypeInfo(Widestring), Nickname, []); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +procedure TChatEvents_Writer.ShutdownServer(const __Sender : TGUID); +var __eventdata : Binary; +begin + __eventdata := Binary.Create; + try + __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'ShutdownServer'); + __Message.Finalize; + + __Message.WriteToStream(__eventdata); + + Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); + finally + __eventdata.Free; + end; +end; + +type + { TChatEvents_Invoker } + TChatEvents_Invoker = class(TROEventInvoker) + published + procedure Invoke_Message(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + procedure Invoke_UserLogin(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + procedure Invoke_UserLogout(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + procedure Invoke_ShutdownServer(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); + end; + +procedure TChatEvents_Invoker.Invoke_Message(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; + From: Widestring; + Target: Widestring; + Message: Widestring; +begin + + try + __Message.Read('From', TypeInfo(Widestring), From, []); + __Message.Read('Target', TypeInfo(Widestring), Target, []); + __Message.Read('Message', TypeInfo(Widestring), Message, []); + + (__Target as IChatEvents).Message(From, Target, Message); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + finally + __lObjectDisposer.Free(); + end + end +end; + +procedure TChatEvents_Invoker.Invoke_UserLogin(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; + Nickname: Widestring; +begin + + try + __Message.Read('Nickname', TypeInfo(Widestring), Nickname, []); + + (__Target as IChatEvents).UserLogin(Nickname); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + finally + __lObjectDisposer.Free(); + end + end +end; + +procedure TChatEvents_Invoker.Invoke_UserLogout(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; + Nickname: Widestring; +begin + + try + __Message.Read('Nickname', TypeInfo(Widestring), Nickname, []); + + (__Target as IChatEvents).UserLogout(Nickname); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + finally + __lObjectDisposer.Free(); + end + end +end; + +procedure TChatEvents_Invoker.Invoke_ShutdownServer(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); +var +__lObjectDisposer: TROObjectDisposer; +begin + try + + (__Target as IChatEvents).ShutdownServer(); + + finally + __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); + try + finally + __lObjectDisposer.Free(); + end + end +end; + +initialization + RegisterProxyClass(IChatServerService_IID, TChatServerService_Proxy); + RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); + + RegisterEventWriterClass(IChatEvents_Writer, TChatEvents_Writer); + RegisterEventInvokerClass(EID_ChatEvents, TChatEvents_Invoker); + +finalization + UnregisterProxyClass(IChatServerService_IID); + UnregisterProxyClass(ILoginService_IID); + + UnregisterEventWriterClass(IChatEvents_Writer); + UnregisterEventInvokerClass(EID_ChatEvents); +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Invk.pas new file mode 100644 index 0000000..85f7468 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChatLibrary_Invk.pas @@ -0,0 +1,140 @@ +unit SuperTCPChannelChatLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} SuperTCPChannelChatLibrary_Intf; + +type + TChatServerService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_TalkPrivate(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Talk(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TLoginService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TChatServerService_Invoker } + +constructor TChatServerService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TChatServerService_Invoker.Invoke_TalkPrivate(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure TalkPrivate(const TargetNickname: Widestring; const Message: Widestring); } +var + TargetNickname: Widestring; + Message: Widestring; +begin + try + __Message.Read('TargetNickname', TypeInfo(Widestring), TargetNickname, []); + __Message.Read('Message', TypeInfo(Widestring), Message, []); + + (__Instance as IChatServerService).TalkPrivate(TargetNickname, Message); + + __Message.InitializeResponseMessage(__Transport, 'SuperTCPChannelChatLibrary', 'ChatServerService', 'TalkPrivateResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TChatServerService_Invoker.Invoke_Talk(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Talk(const Message: Widestring); } +var + Message: Widestring; +begin + try + __Message.Read('Message', TypeInfo(Widestring), Message, []); + + (__Instance as IChatServerService).Talk(Message); + + __Message.InitializeResponseMessage(__Transport, 'SuperTCPChannelChatLibrary', 'ChatServerService', 'TalkResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TLoginService_Invoker } + +constructor TLoginService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TLoginService_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Login(const Nickname: Widestring); } +var + Nickname: Widestring; +begin + try + __Message.Read('Nickname', TypeInfo(Widestring), Nickname, []); + + (__Instance as ILoginService).Login(Nickname); + + __Message.InitializeResponseMessage(__Transport, 'SuperTCPChannelChatLibrary', 'LoginService', 'LoginResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TLoginService_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as ILoginService).Logout; + + __Message.InitializeResponseMessage(__Transport, 'SuperTCPChannelChatLibrary', 'LoginService', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.bdsproj new file mode 100644 index 0000000..47723f9 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + SuperTCPChannelChat_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dpr new file mode 100644 index 0000000..76f79e8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dpr @@ -0,0 +1,14 @@ +program SuperTCPChannelChat_Client; + +uses + uROComInit, + Forms, + SuperTCPChannelChat_ClientMain in 'SuperTCPChannelChat_ClientMain.pas' {SuperTCPChannelChat_ClientMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TSuperTCPChannelChat_ClientMainForm, SuperTCPChannelChat_ClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dproj new file mode 100644 index 0000000..4c3fa8a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.dproj @@ -0,0 +1,78 @@ + + + {7d065047-d58a-4b2c-a706-00fb58c52394} + SuperTCPChannelChat_Client.dpr + Debug + AnyCPU + DCC32 + SuperTCPChannelChat_Client.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + SuperTCPChannelChat_Client.dpr + + + + + + + MainSource + + +
    SuperTCPChannelChat_ClientMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.res new file mode 100644 index 0000000..0f940ed Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.dfm new file mode 100644 index 0000000..30e7a83 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.dfm @@ -0,0 +1,110 @@ +object SuperTCPChannelChat_ClientMainForm: TSuperTCPChannelChat_ClientMainForm + Left = 92 + Top = 108 + AutoScroll = False + Caption = 'SuperTCPChannelChat - Client' + ClientHeight = 244 + ClientWidth = 424 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnClose = FormClose + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 12 + Top = 12 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object edOutput: TMemo + Left = 12 + Top = 62 + Width = 282 + Height = 143 + Anchors = [akLeft, akTop, akRight, akBottom] + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 0 + end + object edUsers: TListBox + Left = 300 + Top = 62 + Width = 112 + Height = 143 + Anchors = [akTop, akRight, akBottom] + ItemHeight = 13 + Items.Strings = ( + '[All Users]') + TabOrder = 1 + end + object edText: TEdit + Left = 12 + Top = 211 + Width = 315 + Height = 21 + Anchors = [akLeft, akRight, akBottom] + TabOrder = 2 + end + object SendButton: TButton + Left = 333 + Top = 209 + Width = 79 + Height = 22 + Anchors = [akRight, akBottom] + Caption = '&Send' + Default = True + TabOrder = 3 + OnClick = SendButtonClick + end + object LogonButton: TButton + Left = 336 + Top = 5 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Log On' + TabOrder = 4 + OnClick = LogonButtonClick + end + object LogoffButton: TButton + Left = 336 + Top = 33 + Width = 75 + Height = 22 + Anchors = [akTop, akRight] + Caption = 'Log Off' + TabOrder = 5 + OnClick = LogoffButtonClick + end + object ROMessage: TROBinMessage + Left = 36 + Top = 8 + end + object ROChannel: TROSuperTcpChannel + ServerLocators = <> + DispatchOptions = [] + Host = 'localhost' + Left = 8 + Top = 8 + end + object RORemoteService: TRORemoteService + ServiceName = 'ChatServerService' + Message = ROMessage + Channel = ROChannel + Left = 64 + Top = 8 + end + object ROEventReceiver: TROEventReceiver + Message = ROMessage + Channel = ROChannel + ServiceName = 'LoginService' + Left = 241 + Top = 16 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.pas new file mode 100644 index 0000000..8e0ad68 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ClientMain.pas @@ -0,0 +1,196 @@ +unit SuperTCPChannelChat_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROSuperTcpChannel, + uROPoweredByRemObjectsButton, SuperTCPChannelChatLibrary_Intf, + uROEventRepository; + +type + TSuperTCPChannelChat_ClientMainForm = class(TForm, IChatEvents) + ROMessage: TROBinMessage; + ROChannel: TROSuperTcpChannel; + RORemoteService: TRORemoteService; + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + edOutput: TMemo; + edUsers: TListBox; + edText: TEdit; + SendButton: TButton; + ROEventReceiver: TROEventReceiver; + LogonButton: TButton; + LogoffButton: TButton; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure SendButtonClick(Sender: TObject); + procedure LogonButtonClick(Sender: TObject); + procedure LogoffButtonClick(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormShow(Sender: TObject); + private + aUserName: string; + FConnected: Boolean; + lLogin: ILoginService; + lChat: IChatServerService; + { Private declarations } + public + procedure Message(const From: Widestring; const Target: Widestring; + const Message: Widestring); + procedure UserLogin(const Nickname: Widestring); + procedure UserLogout(const Nickname: Widestring); + procedure ShutdownServer; + + procedure SyncCall(var Msg: TMessage); message WM_USER; + + end; + TSyncType = (stMessage, stUserLogin, stUserLogout); + TStringArray = array of Widestring; + +var + SuperTCPChannelChat_ClientMainForm: TSuperTCPChannelChat_ClientMainForm; + +implementation + +uses DateUtils; + +{$R *.dfm} + +{ TClientForm } + +procedure TSuperTCPChannelChat_ClientMainForm.Message(const From, Target, Message: Widestring); +var + Data: TStringArray; +begin + SetLength(Data, 3); + Data[0] := From; + Data[1] := Target; + Data[2] := Message; + SendMessage(Handle, WM_USER, Longint(stMessage), Longint(Data)); +end; + +procedure TSuperTCPChannelChat_ClientMainForm.UserLogin(const Nickname: Widestring); +var + Data: TStringArray; +begin + SetLength(Data, 1); + Data[0] := Nickname; + SendMessage(Handle, WM_USER, Longint(stUserLogin), Longint(Data)); +end; + +procedure TSuperTCPChannelChat_ClientMainForm.UserLogout(const Nickname: Widestring); +var + Data: TStringArray; +begin + SetLength(Data, 1); + Data[0] := Nickname; + SendMessage(Handle, WM_USER, Longint(stUserLogout), Longint(Data)); +end; + +procedure TSuperTCPChannelChat_ClientMainForm.FormCreate(Sender: TObject); +begin + Fconnected := False; + ROChannel.Host := 'localhost'; + lLogin := CoLoginService.Create(ROMessage, ROChannel); + lChat := CoChatServerService.Create(ROMessage, ROChannel); + ROEventReceiver.RegisterEventHandlers([EID_ChatEvents], [Self]); + ROEventReceiver.Activate; + aUserName := 'User' + IntToHex(GetTickCount and $FFFF, 4); +end; + +procedure TSuperTCPChannelChat_ClientMainForm.FormDestroy(Sender: TObject); +begin + ROEventReceiver.UnregisterEventHandlers([EID_ChatEvents]); +end; + +procedure TSuperTCPChannelChat_ClientMainForm.SendButtonClick(Sender: TObject); +var + idx: Integer; +begin + idx := edUsers.ItemIndex; + if idx < 1 then + lChat.Talk(edText.Text) + else + lChat.TalkPrivate(edUsers.Items[idx], edText.Text); + edText.Text := ''; + ActiveControl := edText; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.SyncCall(var Msg: TMessage); +var + i: Integer; + lSyncType: TSyncType; + lData: TStringArray; +begin + lSyncType := TSyncType(Msg.WParam); + lData := TStringArray(Msg.LParam); + case lSyncType of + stMessage: begin + if lData[1] = '' then + SuperTCPChannelChat_ClientMainForm.edOutput.Lines.Add(Format('<%s> %s', [lData[0], lData[2]])) + else + SuperTCPChannelChat_ClientMainForm.edOutput.Lines.Add(Format('<%s: %s> %s', [lData[0], lData[1], lData[2]])); + end; + stUserLogin: + SuperTCPChannelChat_ClientMainForm.edUsers.Items.Add(lData[0]); + stUserLogout: begin + i := SuperTCPChannelChat_ClientMainForm.edUsers.Items.IndexOf(lData[0]); + if i <> -1 then + SuperTCPChannelChat_ClientMainForm.EdUsers.Items.Delete(i); + end; + end; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.LogonButtonClick( + Sender: TObject); +begin + if not FConnected then try + if InputQuery('Username', 'Please enter your &username:', aUsername) then begin + lLogin.Login(aUsername); + Fconnected := True; + end; + finally + SendButton.Enabled := FConnected; + LogonButton.Enabled := not FConnected; + LogoffButton.Enabled := FConnected; + end; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.LogoffButtonClick( + Sender: TObject); +begin + try + if FConnected then try + lLogin.Logout; + Fconnected := False; + while edUsers.Count > 1 do + edUsers.Items.Delete(1); + ROChannel.Active := False; + finally + SendButton.Enabled := FConnected; + LogonButton.Enabled := not FConnected; + LogoffButton.Enabled := FConnected; + end; + except + end; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + LogoffButton.Click; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.ShutdownServer; +begin + edOutput.Lines.Add('Server has been shutdown!'); + LogoffButton.Click; +end; + +procedure TSuperTCPChannelChat_ClientMainForm.FormShow(Sender: TObject); +begin + LogonButton.Click; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.bdsproj new file mode 100644 index 0000000..dd83339 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + SuperTCPChannelChat_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dpr new file mode 100644 index 0000000..bbe05ff --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dpr @@ -0,0 +1,22 @@ +program SuperTCPChannelChat_Server; + +{#ROGEN:SuperTCPChannelChatLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + SuperTCPChannelChat_ServerMain in 'SuperTCPChannelChat_ServerMain.pas' {SuperTCPChannelChat_ServerMainForm}, + LoginService_Impl in 'LoginService_Impl.pas' {LoginService: TDARemoteService}, + ChatServerService_Impl in 'ChatServerService_Impl.pas' {ChatServerService: TDARemoteService}, + SuperTCPChannelChatLibrary_Intf in 'SuperTCPChannelChatLibrary_Intf.pas', + SuperTCPChannelChatLibrary_Invk in 'SuperTCPChannelChatLibrary_Invk.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'SuperTCPChannelChat - Server'; + Application.CreateForm(TSuperTCPChannelChat_ServerMainForm, SuperTCPChannelChat_ServerMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dproj new file mode 100644 index 0000000..5b01304 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.dproj @@ -0,0 +1,86 @@ + + + {7073a51d-5965-439b-aee5-bbb1c1109129} + SuperTCPChannelChat_Server.dpr + Debug + AnyCPU + DCC32 + SuperTCPChannelChat_Server.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + SuperTCPChannelChat_Server.dpr + + + + + + + MainSource + + +
    ChatServerService
    +
    + +
    LoginService
    +
    + + + +
    SuperTCPChannelChat_ServerMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.res new file mode 100644 index 0000000..95e15d9 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_Server.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.dfm new file mode 100644 index 0000000..fc267aa --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.dfm @@ -0,0 +1,49 @@ +object SuperTCPChannelChat_ServerMainForm: TSuperTCPChannelChat_ServerMainForm + Left = 76 + Top = 115 + BorderStyle = bsDialog + Caption = 'SuperTCPChannelChat - Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredButton: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object ROMessage: TROBinMessage + Left = 40 + Top = 8 + end + object ROServer: TROSuperTcpServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + end> + EventRepository = ROEventRepository + OnClientDisconnected = ROServerClientDisconnected + Left = 8 + Top = 8 + end + object ROSessionManager: TROInMemorySessionManager + Left = 72 + Top = 8 + end + object ROEventRepository: TROInMemoryEventRepository + Message = ROMessage + SessionManager = ROSessionManager + Left = 104 + Top = 8 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.pas new file mode 100644 index 0000000..cf348d6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SuperTCPChannelChat_ServerMain.pas @@ -0,0 +1,85 @@ +unit SuperTCPChannelChat_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROSuperTcpServer, uROSessions, uROEventRepository,SyncObjs; + +type + TSuperTCPChannelChat_ServerMainForm = class(TForm) + ROPoweredButton: TROPoweredByRemObjectsButton; + ROMessage: TROBinMessage; + ROServer: TROSuperTcpServer; + ROSessionManager: TROInMemorySessionManager; + ROEventRepository: TROInMemoryEventRepository; + procedure FormCreate(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure ROServerClientDisconnected(aChannel: IROTransport; + const aGuid: TGUID); + private + { Private declarations } + public + { Public declarations } + end; + +var + SuperTCPChannelChat_ServerMainForm: TSuperTCPChannelChat_ServerMainForm; + +var + UserClientIDList: TStringList; + UserClientIDListCs: TCriticalSection; + +implementation +uses + SuperTCPChannelChatLibrary_Intf; +{$R *.dfm} + +procedure TSuperTCPChannelChat_ServerMainForm.FormCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +procedure TSuperTCPChannelChat_ServerMainForm.FormCloseQuery( + Sender: TObject; var CanClose: Boolean); +var + ev: IChatEvents_Writer; +begin + ev := (ROEventRepository as IChatEvents_Writer); + ev.ShutdownServer(EmptyGUID); + Sleep(2000); // allow clients to gracefully logout. +end; + +procedure TSuperTCPChannelChat_ServerMainForm.ROServerClientDisconnected( + aChannel: IROTransport; const aGuid: TGUID); +var + ev: IChatEvents_Writer; + s: TROSession; + i: integer; +begin + s := ROSessionManager.FindSession(aGuid,False); + ev := (ROEventRepository as IChatEvents_Writer); + ev.ExcludeSender := False; + if s <> nil then begin + UserClientIDListCs.Acquire; + try + i := UserClientIDList.IndexOfName(S['nick']); + if i <> -1 then UserClientIDList.Delete(i); + finally + UserClientIDListCs.Release; + end; + ev.UserLogout(aGuid, s['nick']); + end; + ROEventRepository.RemoveSession(aGuid); + ROSessionManager.DeleteSession(aGuid, False); +end; + +initialization + UserClientIDList := TStringList.Create; + UserClientIDListCs := TCriticalSection.Create; +finalization + UserClientIDListCs.Free; + UserClientIDList.Free; +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary.rodl new file mode 100644 index 0000000..5c5881e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary.rodl @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Intf.pas new file mode 100644 index 0000000..82ccea8 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Intf.pas @@ -0,0 +1,673 @@ +unit SyncServerLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{C04AE0F2-540E-434F-96FA-08B8A7810005}'; + TargetNamespace = ''; + + { Service Interface ID's } + ISyncServerService_IID : TGUID = '{7941D2C3-63AE-4559-BB62-3443C5B3EB3F}'; + IPairingService_IID : TGUID = '{CBA27400-AE3F-4945-8520-0EA97EC5DE41}'; + + { Event ID's } + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + { Forward declarations } + ISyncServerService = interface; + IPairingService = interface; + + FileInfoArray = class; + + FileInfoStruct = class; + + FileTransferException = class; + + + { Enumerateds } + PairingStatus = (PairingStatus_Successfull,PairingStatus_PairingRequired,PairingStatus_PairingBusy); + + { FileInfoStruct } + FileInfoStruct = class(TROComplexType) + private + fName: AnsiString; + fDate: DateTime; + fFileSize: Integer; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Name:AnsiString read fName write fName; + property Date:DateTime read fDate write fDate; + property FileSize:Integer read fFileSize write fFileSize; + end; + + { FileInfoStructCollection } + FileInfoStructCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): FileInfoStruct; + procedure SetItems(aIndex: integer; const Value: FileInfoStruct); + public + constructor Create; overload; + function Add: FileInfoStruct; reintroduce; + procedure SaveToArray(anArray: FileInfoArray); + procedure LoadFromArray(anArray: FileInfoArray); + property Items[Index: integer]:FileInfoStruct read GetItems write SetItems; default; + end; + + { FileInfoArray } + FileInfoArray_FileInfoStruct = array of FileInfoStruct; + FileInfoArray = class(TROArray) + private + fCount: Integer; + fItems : FileInfoArray_FileInfoStruct; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): FileInfoStruct; + procedure SetItems(aIndex: integer; const Value: FileInfoStruct); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemClass: TClass; override; + class function GetItemSize: integer; override; + + function GetItemRef(aIndex: integer): pointer; override; + procedure SetItemRef(aIndex: integer; Ref: pointer); override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add: FileInfoStruct; overload; + function Add(const Value: FileInfoStruct):integer; overload; + + property Count : integer read GetCount; + property Items[Index: integer]:FileInfoStruct read GetItems write SetItems; default; + property InnerArray: FileInfoArray_FileInfoStruct read fItems; + end; + + { Exceptions } + FileTransferException = class(EROException) + private + fFileName: AnsiString; + fMessage: AnsiString; + public + constructor Create(anExceptionMessage : string; aFileName: AnsiString; aMessage: AnsiString); + procedure ReadException(ASerializer: TObject); override; + procedure WriteException(ASerializer: TObject); override; + published + property FileName: AnsiString read fFileName write fFileName; + property Message: AnsiString read fMessage write fMessage; + end; + + + { ISyncServerService } + ISyncServerService = interface + ['{7941D2C3-63AE-4559-BB62-3443C5B3EB3F}'] + function GetRemoteFiles: FileInfoArray; + function DeclareLocalFiles(const FilesList: FileInfoArray): FileInfoArray; + procedure SetChunkSize(const Size: Integer); + function GetFile(const FileName: AnsiString; const ChunkNo: Integer): Binary; + procedure SendFile(const FileName: AnsiString; const ChunkNo: Integer; const FileData: Binary); + end; + + { CoSyncServerService } + CoSyncServerService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISyncServerService; + end; + + { TSyncServerService_Proxy } + TSyncServerService_Proxy = class(TROProxy, ISyncServerService) + protected + function __GetInterfaceName:string; override; + + function GetRemoteFiles: FileInfoArray; + function DeclareLocalFiles(const FilesList: FileInfoArray): FileInfoArray; + procedure SetChunkSize(const Size: Integer); + function GetFile(const FileName: AnsiString; const ChunkNo: Integer): Binary; + procedure SendFile(const FileName: AnsiString; const ChunkNo: Integer; const FileData: Binary); + end; + + { IPairingService } + IPairingService = interface + ['{CBA27400-AE3F-4945-8520-0EA97EC5DE41}'] + function LoginAttempt(const ClientGuid: Guid): Integer; + function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; + end; + + { CoPairingService } + CoPairingService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IPairingService; + end; + + { TPairingService_Proxy } + TPairingService_Proxy = class(TROProxy, IPairingService) + protected + function __GetInterfaceName:string; override; + + function LoginAttempt(const ClientGuid: Guid): Integer; + function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ FileTransferException } + +constructor FileTransferException.Create(anExceptionMessage : string; aFileName: AnsiString; + aMessage: AnsiString); +begin + inherited Create(anExceptionMessage); + + fFileName := aFileName; + fMessage := aMessage; +end; + +procedure FileTransferException.ReadException(ASerializer: TObject); +var + l_FileName: AnsiString; + l_Message: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_FileName := FileName; + TROSerializer(ASerializer).ReadAnsiString('FileName', l_FileName); + FileName := l_FileName; + l_Message := Message; + TROSerializer(ASerializer).ReadAnsiString('Message', l_Message); + Message := l_Message; + end + else begin + l_FileName := FileName; + TROSerializer(ASerializer).ReadAnsiString('FileName', l_FileName); + FileName := l_FileName; + l_Message := Message; + TROSerializer(ASerializer).ReadAnsiString('Message', l_Message); + Message := l_Message; + end; +end; + +procedure FileTransferException.WriteException(ASerializer: TObject); +var + l_FileName: AnsiString; + l_Message: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(FileTransferException); + l_FileName := FileName; + TROSerializer(ASerializer).WriteAnsiString('FileName', l_FileName); + l_Message := Message; + TROSerializer(ASerializer).WriteAnsiString('Message', l_Message); + end + else begin + l_FileName := FileName; + TROSerializer(ASerializer).WriteAnsiString('FileName', l_FileName); + l_Message := Message; + TROSerializer(ASerializer).WriteAnsiString('Message', l_Message); + end; +end; + +{ FileInfoArray } + +procedure FileInfoArray.Assign(iSource: TPersistent); +var lSource:FileInfoArray; + i:integer; + lItem:FileInfoStruct; +begin + if (iSource is FileInfoArray) then begin + lSource := FileInfoArray(iSource); + Clear(); + + for i := 0 to lSource.Count-1 do + if Assigned(lSource.Items[i]) then begin + lItem := FileInfoStruct(lSource.Items[i].ClassType.Create); + lItem.Assign(lSource.Items[i]); + Add(lItem); + end + else begin + Add(nil); + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function FileInfoArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(FileInfoStruct); +end; + +class function FileInfoArray.GetItemClass: TClass; +begin + result := FileInfoStruct; +end; + +class function FileInfoArray.GetItemSize: integer; +begin + result := SizeOf(FileInfoStruct); +end; + +function FileInfoArray.GetItems(aIndex: integer): FileInfoStruct; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function FileInfoArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +procedure FileInfoArray.SetItemRef(aIndex: integer; Ref: pointer); +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if Ref <> fItems[aIndex] then begin + if fItems[aIndex] <> nil then fItems[aIndex].Free; + fItems[aIndex] := Ref; + end; +end; + +procedure FileInfoArray.Clear; +var i: integer; +begin + for i := 0 to (Count-1) do fItems[i].Free(); + SetLength(fItems, 0); + FCount := 0; +end; + +procedure FileInfoArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + fItems[aIndex].Free(); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex].Free; + fItems[aIndex] := Value; + end; +end; + +procedure FileInfoArray.Resize(ElementCount: integer); +var i: Integer; +begin + if fCount = ElementCount then Exit; + for i := FCount -1 downto ElementCount do + FItems[i].Free; + SetLength(fItems, ElementCount); + for i := FCount to ElementCount -1 do + FItems[i] := FileInfoStruct.Create; + FCount := ElementCount; +end; + +function FileInfoArray.GetCount: integer; +begin + result := FCount; +end; + +procedure FileInfoArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function FileInfoArray.Add: FileInfoStruct; +begin + result := FileInfoStruct.Create; + Add(Result); +end; + +function FileInfoArray.Add(const Value:FileInfoStruct): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure FileInfoArray.ReadComplex(ASerializer: TObject); +var + lval: FileInfoStruct; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do begin + ReadStruct(GetArrayElementName(GetItemType, GetItemRef(i)), FileInfoStruct, lval, i); + end; + Items[i] := lval; + end; +end; + +procedure FileInfoArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteStruct(GetArrayElementName(GetItemType, GetItemRef(i)), fItems[i], FileInfoStruct, i); +end; + +{ FileInfoStruct } + +procedure FileInfoStruct.Assign(iSource: TPersistent); +var lSource: SyncServerLibrary_Intf.FileInfoStruct; +begin + inherited Assign(iSource); + if (iSource is SyncServerLibrary_Intf.FileInfoStruct) then begin + lSource := SyncServerLibrary_Intf.FileInfoStruct(iSource); + Name := lSource.Name; + Date := lSource.Date; + FileSize := lSource.FileSize; + end; +end; + +procedure FileInfoStruct.ReadComplex(ASerializer: TObject); +var + l_Date: DateTime; + l_FileSize: Integer; + l_Name: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_Name := Name; + TROSerializer(ASerializer).ReadAnsiString('Name', l_Name); + Name := l_Name; + l_Date := Date; + TROSerializer(ASerializer).ReadDateTime('Date', l_Date); + Date := l_Date; + l_FileSize := FileSize; + TROSerializer(ASerializer).ReadInteger('FileSize', otSLong, l_FileSize); + FileSize := l_FileSize; + end + else begin + l_Date := Date; + TROSerializer(ASerializer).ReadDateTime('Date', l_Date); + Date := l_Date; + l_FileSize := FileSize; + TROSerializer(ASerializer).ReadInteger('FileSize', otSLong, l_FileSize); + FileSize := l_FileSize; + l_Name := Name; + TROSerializer(ASerializer).ReadAnsiString('Name', l_Name); + Name := l_Name; + end; +end; + +procedure FileInfoStruct.WriteComplex(ASerializer: TObject); +var + l_Date: DateTime; + l_FileSize: Integer; + l_Name: AnsiString; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + TROSerializer(ASerializer).ChangeClass(FileInfoStruct); + l_Name := Name; + TROSerializer(ASerializer).WriteAnsiString('Name', l_Name); + l_Date := Date; + TROSerializer(ASerializer).WriteDateTime('Date', l_Date); + l_FileSize := FileSize; + TROSerializer(ASerializer).WriteInteger('FileSize', otSLong, l_FileSize); + end + else begin + l_Date := Date; + TROSerializer(ASerializer).WriteDateTime('Date', l_Date); + l_FileSize := FileSize; + TROSerializer(ASerializer).WriteInteger('FileSize', otSLong, l_FileSize); + l_Name := Name; + TROSerializer(ASerializer).WriteAnsiString('Name', l_Name); + end; +end; + +{ FileInfoStructCollection } +constructor FileInfoStructCollection.Create; +begin + inherited Create(FileInfoStruct); +end; + +constructor FileInfoStructCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function FileInfoStructCollection.Add: FileInfoStruct; +begin + result := FileInfoStruct(inherited Add); +end; + +function FileInfoStructCollection.GetItems(aIndex: integer): FileInfoStruct; +begin + result := FileInfoStruct(inherited Items[aIndex]); +end; + +procedure FileInfoStructCollection.LoadFromArray(anArray: FileInfoArray); +var i : integer; +begin + Clear; + for i := 0 to (anArray.Count-1) do + anArray[i].Clone.Collection := Self; +end; + +procedure FileInfoStructCollection.SaveToArray(anArray: FileInfoArray); +var i : integer; +begin + anArray.Clear; + for i := 0 to (Count-1) do begin + if Assigned(Items[i]) then + anArray.Add(FileInfoStruct(Items[i].Clone)) + else + anArray.Add(nil); + end; +end; + +procedure FileInfoStructCollection.SetItems(aIndex: integer; const Value: FileInfoStruct); +begin + FileInfoStruct(inherited Items[aIndex]).Assign(Value); +end; + +{ CoSyncServerService } + +class function CoSyncServerService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ISyncServerService; +begin + result := TSyncServerService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TSyncServerService_Proxy } + +function TSyncServerService_Proxy.__GetInterfaceName:string; +begin + result := 'SyncServerService'; +end; + +function TSyncServerService_Proxy.GetRemoteFiles: FileInfoArray; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'GetRemoteFiles'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TSyncServerService_Proxy.DeclareLocalFiles(const FilesList: FileInfoArray): FileInfoArray; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'DeclareLocalFiles'); + __Message.Write('FilesList', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), FilesList, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TSyncServerService_Proxy.SetChunkSize(const Size: Integer); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'SetChunkSize'); + __Message.Write('Size', TypeInfo(Integer), Size, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TSyncServerService_Proxy.GetFile(const FileName: AnsiString; const ChunkNo: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'GetFile'); + __Message.Write('FileName', TypeInfo(AnsiString), FileName, []); + __Message.Write('ChunkNo', TypeInfo(Integer), ChunkNo, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TSyncServerService_Proxy.SendFile(const FileName: AnsiString; const ChunkNo: Integer; const FileData: Binary); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'SendFile'); + __Message.Write('FileName', TypeInfo(AnsiString), FileName, []); + __Message.Write('ChunkNo', TypeInfo(Integer), ChunkNo, []); + __Message.Write('FileData', TypeInfo(Binary), FileData, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoPairingService } + +class function CoPairingService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IPairingService; +begin + result := TPairingService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TPairingService_Proxy } + +function TPairingService_Proxy.__GetInterfaceName:string; +begin + result := 'PairingService'; +end; + +function TPairingService_Proxy.LoginAttempt(const ClientGuid: Guid): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'LoginAttempt'); + __Message.Write('ClientGuid', TypeInfo(Guid), ClientGuid, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TPairingService_Proxy.ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'SyncServerLibrary', __InterfaceName, 'ConfirmCode'); + __Message.Write('Code', TypeInfo(AnsiString), Code, []); + __Message.Write('ClientGuid', TypeInfo(Guid), ClientGuid, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(FileInfoStruct); + RegisterROClass(FileInfoArray); + RegisterExceptionClass(FileTransferException); + RegisterProxyClass(ISyncServerService_IID, TSyncServerService_Proxy); + RegisterProxyClass(IPairingService_IID, TPairingService_Proxy); + + RegisterEnumMapping(TROEnumMapping.Create('PairingStatus', 'Successfull', 'Successfull')); + RegisterEnumMapping(TROEnumMapping.Create('PairingStatus', 'PairingRequired', 'PairingRequired')); + RegisterEnumMapping(TROEnumMapping.Create('PairingStatus', 'PairingBusy', 'PairingBusy')); + +finalization + UnregisterROClass(FileInfoStruct); + UnregisterROClass(FileInfoArray); + UnregisterExceptionClass(FileTransferException); + UnregisterProxyClass(ISyncServerService_IID); + UnregisterProxyClass(IPairingService_IID); + + + UnRegisterEnumMappings(); +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Invk.pas new file mode 100644 index 0000000..50339cc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/SyncServerLibrary_Invk.pas @@ -0,0 +1,246 @@ +unit SyncServerLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} SyncServerLibrary_Intf; + +type + TSeekOrigin = Classes.TSeekOrigin; // fake declaration + TSyncServerService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_GetRemoteFiles(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_DeclareLocalFiles(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SetChunkSize(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetFile(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_SendFile(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + + TPairingService_Invoker = class(TROInvoker) + private + protected + public + constructor Create; override; + published + procedure Invoke_LoginAttempt(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_ConfirmCode(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TSyncServerService_Invoker } + +constructor TSyncServerService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TSyncServerService_Invoker.Invoke_GetRemoteFiles(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetRemoteFiles: FileInfoArray; } +var + lResult: SyncServerLibrary_Intf.FileInfoArray; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + lResult := (__Instance as ISyncServerService).GetRemoteFiles; + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'SyncServerService', 'GetRemoteFilesResponse'); + __Message.Write('Result', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TSyncServerService_Invoker.Invoke_DeclareLocalFiles(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function DeclareLocalFiles(const FilesList: FileInfoArray): FileInfoArray; } +var + FilesList: SyncServerLibrary_Intf.FileInfoArray; + lResult: SyncServerLibrary_Intf.FileInfoArray; + __lObjectDisposer: TROObjectDisposer; +begin + FilesList := nil; + lResult := nil; + try + __Message.Read('FilesList', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), FilesList, []); + + lResult := (__Instance as ISyncServerService).DeclareLocalFiles(FilesList); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'SyncServerService', 'DeclareLocalFilesResponse'); + __Message.Write('Result', TypeInfo(SyncServerLibrary_Intf.FileInfoArray), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(FilesList); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TSyncServerService_Invoker.Invoke_SetChunkSize(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure SetChunkSize(const Size: Integer); } +var + Size: Integer; +begin + try + __Message.Read('Size', TypeInfo(Integer), Size, []); + + (__Instance as ISyncServerService).SetChunkSize(Size); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'SyncServerService', 'SetChunkSizeResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TSyncServerService_Invoker.Invoke_GetFile(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetFile(const FileName: AnsiString; const ChunkNo: Integer): Binary; } +var + FileName: AnsiString; + ChunkNo: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('FileName', TypeInfo(AnsiString), FileName, []); + __Message.Read('ChunkNo', TypeInfo(Integer), ChunkNo, []); + + lResult := (__Instance as ISyncServerService).GetFile(FileName, ChunkNo); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'SyncServerService', 'GetFileResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TSyncServerService_Invoker.Invoke_SendFile(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure SendFile(const FileName: AnsiString; const ChunkNo: Integer; const FileData: Binary); } +var + FileName: AnsiString; + ChunkNo: Integer; + FileData: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + FileData := nil; + try + __Message.Read('FileName', TypeInfo(AnsiString), FileName, []); + __Message.Read('ChunkNo', TypeInfo(Integer), ChunkNo, []); + __Message.Read('FileData', TypeInfo(Binary), FileData, []); + + (__Instance as ISyncServerService).SendFile(FileName, ChunkNo, FileData); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'SyncServerService', 'SendFileResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(FileData); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TPairingService_Invoker } + +constructor TPairingService_Invoker.Create; +begin + inherited Create; + FAbstract := False; +end; + +procedure TPairingService_Invoker.Invoke_LoginAttempt(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function LoginAttempt(const ClientGuid: Guid): Integer; } +var + ClientGuid: Guid; + lResult: Integer; +begin + try + __Message.Read('ClientGuid', TypeInfo(Guid), ClientGuid, []); + + lResult := (__Instance as IPairingService).LoginAttempt(ClientGuid); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'PairingService', 'LoginAttemptResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TPairingService_Invoker.Invoke_ConfirmCode(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function ConfirmCode(const Code: AnsiString; const ClientGuid: Guid): Boolean; } +var + Code: AnsiString; + ClientGuid: Guid; + lResult: Boolean; +begin + try + __Message.Read('Code', TypeInfo(AnsiString), Code, []); + __Message.Read('ClientGuid', TypeInfo(Guid), ClientGuid, []); + + lResult := (__Instance as IPairingService).ConfirmCode(Code, ClientGuid); + + __Message.InitializeResponseMessage(__Transport, 'SyncServerLibrary', 'PairingService', 'ConfirmCodeResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +initialization +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.dfm new file mode 100644 index 0000000..0c88917 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.dfm @@ -0,0 +1,6 @@ +object TestService: TTestService + OldCreateOrder = True + RequiresSession = True + Height = 300 + Width = 300 +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.pas new file mode 100644 index 0000000..f6079bc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/TestService_Impl.pas @@ -0,0 +1,62 @@ +unit TestService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +{$I RemObjects.inc} + +interface + +uses + {$IFDEF FPC}LResources,{$ENDIF} + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Generated:} PairingLibrary_Intf; + +type + { TTestService } + TTestService = class(TRORemoteDataModule, ITestService) + private + protected + { ITestService methods } + function GetServerTime: DateTime; + end; + +implementation + +{$IFNDEF FPC} + {$R *.dfm} +{$ENDIF} +uses + {Generated:} PairingLibrary_Invk; + +procedure Create_TestService(out anInstance : IUnknown); +begin + anInstance := TTestService.Create(nil); +end; + +{ TestService } +function TTestService.GetServerTime: DateTime; +begin + result := Now; +end; + +var + fClassFactory: IROClassFactory; +initialization +{$IFDEF FPC} + {$I TestService_Impl.lrs} +{$ENDIF} + fClassFactory := TROClassFactory.Create('TestService', Create_TestService, TTestService_Invoker); + // RegisterForZeroConf(fClassFactory,'_TestService_rosdk._tcp.'); + +finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.dfm new file mode 100644 index 0000000..4efd3ac --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.dfm @@ -0,0 +1,32 @@ +object ServerDataModule: TServerDataModule + OldCreateOrder = False + OnCreate = DataModuleCreate + Height = 189 + Width = 292 + object ROMessage: TROBinMessage + Envelopes = <> + Left = 40 + Top = 8 + end + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + PathInfo = 'Bin' + end> + Port = 0 + Left = 114 + Top = 8 + end + object SessionManager: TROInMemorySessionManager + Left = 184 + Top = 8 + end + object ZeroConfRegistration: TROZeroConfRegistration + Server = ROServer + Left = 40 + Top = 64 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.pas new file mode 100644 index 0000000..782a48e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerDataModule.pas @@ -0,0 +1,35 @@ +unit fServerDataModule; + +interface + +uses + SysUtils, Classes, uROClient, uROServer, uROIndyTCPServer, + uROPoweredByRemObjectsButton, uROClientIntf, uROClasses, + uROBinMessage, uROIndyHTTPServer, uROZeroConf, uROSessions; + +type + TServerDataModule = class(TDataModule) + ROMessage: TROBinMessage; + ROServer: TROIndyHTTPServer; + SessionManager: TROInMemorySessionManager; + ZeroConfRegistration: TROZeroConfRegistration; + procedure DataModuleCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + ServerDataModule: TServerDataModule; + +implementation + +{$R *.dfm} + +procedure TServerDataModule.DataModuleCreate(Sender: TObject); +begin + ROServer.Active := TRUE; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.dfm new file mode 100644 index 0000000..59e6bdc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.dfm @@ -0,0 +1,56 @@ +object ServerForm: TServerForm + Left = 372 + Top = 277 + BorderIcons = [biSystemMenu, biMinimize] + BorderStyle = bsSingle + Caption = 'iPhone Pairing' + ClientHeight = 165 + ClientWidth = 227 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object lbPairingCodeCaption: TLabel + Left = 8 + Top = 64 + Width = 62 + Height = 13 + Caption = 'Pairing code:' + Visible = False + end + object lbPairingCode: TLabel + Left = 8 + Top = 80 + Width = 212 + Height = 73 + Alignment = taCenter + AutoSize = False + Caption = '8888' + Color = clInfoBk + Font.Charset = OEM_CHARSET + Font.Color = clWindowText + Font.Height = -64 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentColor = False + ParentFont = False + Visible = False + end + object tmrCode: TTimer + Enabled = False + Interval = 60000 + OnTimer = tmrCodeTimer + Left = 192 + Top = 40 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.pas new file mode 100644 index 0000000..ccf2d32 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/fServerForm.pas @@ -0,0 +1,78 @@ +unit fServerForm; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, uROClasses, + ExtCtrls; + +const + WM_DISPLAY_CODE = WM_APP + 1; + WM_HIDE_CODE = WM_APP + 2; + +type + TServerForm = class(TForm) + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + lbPairingCodeCaption: TLabel; + lbPairingCode: TLabel; + tmrCode: TTimer; + procedure FormCreate(Sender: TObject); + procedure tmrCodeTimer(Sender: TObject); + private + { Private declarations } + protected + procedure WMDisplayCode(var Message: TMessage); message WM_DISPLAY_CODE; + procedure WMHideCode(var Message: TMessage); message WM_HIDE_CODE; + public + { Public declarations } + procedure DisplayPairingCode(aCode: integer); + procedure HidePairingCode; + end; + +var + ServerForm: TServerForm; + +implementation + +{$R *.dfm} + +uses ApprovedClientsStorage; + +procedure TServerForm.DisplayPairingCode(aCode: integer); +begin + PostMessage(Handle, WM_DISPLAY_CODE, 0, aCode); +end; + +procedure TServerForm.FormCreate(Sender: TObject); +begin + Application.Title := Self.Caption; + StorageInstance.StorageFile := 'ApprovedClients.lst'; +end; + +procedure TServerForm.WMDisplayCode(var Message: TMessage); +begin + lbPairingCode.Caption := IntToStr(Message.LParam); + lbPairingCode.Visible := true; + lbPairingCodeCaption.Visible := true; + tmrCode.Enabled := true; +end; + +procedure TServerForm.tmrCodeTimer(Sender: TObject); +begin + lbPairingCode.Visible := false; + lbPairingCodeCaption.Visible := false; + tmrCode.Enabled := false; +end; + +procedure TServerForm.HidePairingCode; +begin + PostMessage(Handle, WM_HIDE_CODE, 0, 0); +end; + +procedure TServerForm.WMHideCode(var Message: TMessage); +begin + tmrCodeTimer(nil); +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dpr new file mode 100644 index 0000000..7ef9f5b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dpr @@ -0,0 +1,32 @@ +program iPhonePairingServer; + +{#ROGEN:PairingLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + uROComboService, + Forms, + fServerDataModule in 'fServerDataModule.pas' {ServerDataModule: TDataModule}, + fServerForm in 'fServerForm.pas' {ServerForm}, + ApprovedClientsStorage in 'ApprovedClientsStorage.pas', + PairingStatus in 'PairingStatus.pas', + PairingLibrary_Intf in 'PairingLibrary_Intf.pas', + PairingLibrary_Invk in 'PairingLibrary_Invk.pas', + PairingService_Impl in 'PairingService_Impl.pas' {PairingService: TRORemoteDataModule}, + TestService_Impl in 'TestService_Impl.pas' {TestService: TRORemoteDataModule}; + +{$R *.res} +{$R RODLFile.res} + +begin + if ROStartService('OSXSyncServer', 'OSXSyncServer') then begin + ROService.CreateForm(TServerDataModule, ServerDataModule); + ROService.Run; + Exit; + end; + + Application.Initialize; + Application.CreateForm(TServerDataModule, ServerDataModule); + Application.CreateForm(TServerForm, ServerForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dproj new file mode 100644 index 0000000..2e446cc --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.dproj @@ -0,0 +1,121 @@ + + + {3176C510-746A-4BD3-86B7-EBA799C4FA98} + iPhonePairingServer.dpr + Debug + DCC32 + 12.0 + + + true + + + true + Base + true + + + true + Base + true + + + 00400000 + false + x86 + iPhonePairingServer.exe + false + false + false + false + + + false + RELEASE;$(DCC_Define) + 0 + false + + + DEBUG;$(DCC_Define) + + + + MainSource + + +
    ServerDataModule
    + TDataModule +
    + +
    ServerForm
    +
    + + + + + +
    PairingService
    + TRORemoteDataModule +
    + +
    TestService
    + TRORemoteDataModule +
    + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + +
    + + + Delphi.Personality.12 + VCLApplication + + + + iPhonePairingServer.dpr + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + 12 + +
    diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.res new file mode 100644 index 0000000..78dee1f Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Super TCP Channel Chat/iPhonePairingServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/RODLFILE.res new file mode 100644 index 0000000..469544d Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.dfm new file mode 100644 index 0000000..3594a18 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.dfm @@ -0,0 +1,52 @@ +object frmServerSelect: TfrmServerSelect + Left = 501 + Top = 272 + BorderStyle = bsDialog + Caption = 'frmServerSelect' + ClientHeight = 323 + ClientWidth = 392 + Color = clBtnFace + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 + object lbServers: TCheckListBox + Left = 8 + Top = 8 + Width = 369 + Height = 249 + OnClickCheck = lbServersClickCheck + ItemHeight = 13 + Items.Strings = ( + '1' + '2' + '3') + Sorted = True + TabOrder = 0 + end + object pnlButtons: TPanel + Left = 0 + Top = 282 + Width = 392 + Height = 41 + Align = alBottom + TabOrder = 1 + object btnOk: TButton + Left = 224 + Top = 8 + Width = 75 + Height = 25 + Caption = '&Ok' + ModalResult = 1 + TabOrder = 0 + end + object btCancel: TButton + Left = 304 + Top = 8 + Width = 75 + Height = 25 + Caption = '&Cancel' + ModalResult = 2 + TabOrder = 1 + end + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.pas new file mode 100644 index 0000000..0e15669 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TfrmServerSelectSrc.pas @@ -0,0 +1,104 @@ +unit TfrmServerSelectSrc; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, CheckLst, + TXPBrdCastServerSrc, + uROServer; + +type + TfrmServerSelect = class(TForm) + lbServers: TCheckListBox; + pnlButtons: TPanel; + btnOk: TButton; + btCancel: TButton; + procedure lbServersClickCheck(Sender: TObject); + private + fBrdCstSvr: TXPBrdCastServer; + fSvrItems: TXPServerCollection; + protected + procedure RefreshServers; + procedure AddServer(aServer: TROServer); + procedure RemoveServer(aServer: TROServer); + public + constructor Create(aBrdCstServer : TXPBrdCastServer); reintroduce; + end; + + +implementation + +{$R *.dfm} + +{ TfrmServerSelect } + +constructor TfrmServerSelect.Create(aBrdCstServer: TXPBrdCastServer); +begin + inherited Create(nil); + fBrdCstSvr := aBrdCstServer; + + if Assigned(fBrdCstSvr) + then fSvrItems := fBrdCstSvr.ExportedServers + else fSvrItems := nil; + + RefreshServers; +end; + +procedure TfrmServerSelect.RefreshServers; +var lOwner: TComponent; + i,Idx: Integer; +begin + lbServers.Clear; + if not(Assigned(fBrdCstSvr)) then + Exit; + + lOwner := fBrdCstSvr.Owner; + if not(Assigned(lOwner)) then + Exit; + + // Get all the ROServers from the owner of the TXPBrdCastServer + for i := 0 to lOwner.ComponentCount-1 do + begin + if lOwner.Components[i].InheritsFrom(TROServer) then + begin + if not(lOwner.Components[i].InheritsFrom(TXPBrdCastServer)) then + lbServers.AddItem(lOwner.Components[i].Name,lOwner.Components[i]); + end; + end; + + // Set checkmark for all servers containd in ExposedServers + for i := 0 to fSvrItems.Count-1 do + begin + Idx := lbServers.Items.IndexOfObject(fSvrItems.Servers[i]); + if Idx >= 0 then + begin + lbServers.Checked[Idx] := True; + end; + end; + +end; + +procedure TfrmServerSelect.lbServersClickCheck(Sender: TObject); +begin + if lbServers.Checked[lbServers.ItemIndex] + then AddServer(TROServer(lbServers.Items.Objects[lbServers.ItemIndex])) + else RemoveServer(TROServer(lbServers.Items.Objects[lbServers.ItemIndex])); + +end; + +procedure TfrmServerSelect.AddServer(aServer: TROServer); +begin + if not(Assigned(aServer)) then + Exit; + fSvrItems.AddServer(aServer); +end; + +procedure TfrmServerSelect.RemoveServer(aServer: TROServer); +begin + if not(Assigned(aServer)) then + Exit; + fSvrItems.DeleteServer(aServer); +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.bdsproj new file mode 100644 index 0000000..b1bdf5d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + TimeServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dpr new file mode 100644 index 0000000..a8598a2 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dpr @@ -0,0 +1,20 @@ +program TimeServer; + +{#ROGEN:TimeServer.rodl} // RemObjects: Careful, do not remove! + +uses + Forms, + TimeServer_ServerMain in 'TimeServer_ServerMain.pas' {TimeServer_ServerMainForm}, + TimeServer_Intf in 'TimeServer_Intf.pas', + TimeServer_Invk in 'TimeServer_Invk.pas', + TimeServer_Impl in 'TimeServer_Impl.pas'; + +{$R *.RES} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'Time Server'; + Application.CreateForm(TTimeServer_ServerMainForm, TimeServer_ServerMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dproj new file mode 100644 index 0000000..e08c9d6 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.dproj @@ -0,0 +1,81 @@ + + + {4814a248-a012-4462-8202-c9312422846a} + TimeServer.dpr + Debug + AnyCPU + DCC32 + TimeServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TimeServer.dpr + + + + + + + MainSource + + + + + +
    TimeServer_ServerMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.res new file mode 100644 index 0000000..b72ce48 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.rodl new file mode 100644 index 0000000..fa39afe --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer.rodl @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.Sample.html new file mode 100644 index 0000000..76b4ebe --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.Sample.html @@ -0,0 +1,18 @@ + + + + + + + + + +

    + Time Server Sample +

    + +

    Purpose

    +

    This is an extremely basic sample illustrating how to use the TROBroadcastServer and TROBroadcastChannel components.

    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bdsgroup new file mode 100644 index 0000000..045a814 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + TimeServer.bdsproj + TimeServer_Client.bdsproj + TimeServer.exe TimeServer_Client.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bpg new file mode 100644 index 0000000..b904350 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = TimeServer.exe TimeServer_Client.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +TimeServer.exe: TimeServer.dpr + $(DCC) + +TimeServer_Client.exe: TimeServer_Client.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.groupproj new file mode 100644 index 0000000..e8a4246 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServerGroup.groupproj @@ -0,0 +1,40 @@ + + + {be071276-ccf9-403b-899d-27eaddb3adba} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.bdsproj new file mode 100644 index 0000000..0d80d9e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + TimeServer_Client.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dpr new file mode 100644 index 0000000..82d8da0 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dpr @@ -0,0 +1,15 @@ +program TimeServer_Client; + +uses + Forms, + TimeServer_ClientMain in 'TimeServer_ClientMain.pas' {TimeServer_ClientMainForm}, + TimeServer_Intf in 'TimeServer_Intf.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Time Client'; + Application.CreateForm(TTimeServer_ClientMainForm, TimeServer_ClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dproj new file mode 100644 index 0000000..161b8eb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.dproj @@ -0,0 +1,79 @@ + + + {04a61aab-fbdf-4651-bba7-a097a06d5b04} + TimeServer_Client.dpr + Debug + AnyCPU + DCC32 + TimeServer_Client.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TimeServer_Client.dpr + + + + + + + MainSource + + +
    TimeServer_ClientMainForm
    +
    + +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.res new file mode 100644 index 0000000..852a6c3 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Client.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.dfm new file mode 100644 index 0000000..54123c3 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.dfm @@ -0,0 +1,60 @@ +object TimeServer_ClientMainForm: TTimeServer_ClientMainForm + Left = 422 + Top = 409 + AutoScroll = False + Caption = 'TimeServer Client' + ClientHeight = 217 + ClientWidth = 285 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 37 + Top = 2 + Width = 212 + Height = 48 + Cursor = crHandPoint + ApplicationType = atClient + end + object TimeButton: TButton + Left = 87 + Top = 192 + Width = 113 + Height = 22 + Anchors = [akLeft, akBottom] + Caption = 'Get Time' + TabOrder = 0 + OnClick = TimeButtonClick + end + object mmRequest: TMemo + Left = 0 + Top = 53 + Width = 286 + Height = 133 + Align = alCustom + Anchors = [akLeft, akTop, akRight, akBottom] + Lines.Strings = ( + '') + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 1 + end + object BINMessage: TROBinMessage + Left = 152 + Top = 16 + end + object ROBroadcastChannel: TROBroadcastChannel + ServerLocators = <> + DispatchOptions = [] + Retrys = 2 + IndyClient.BroadcastEnabled = True + IndyClient.Port = 8090 + IndyClient.ReceiveTimeout = 100 + Port = 8090 + Left = 56 + Top = 16 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.pas new file mode 100644 index 0000000..ff6ab33 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ClientMain.pas @@ -0,0 +1,47 @@ +unit TimeServer_ClientMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, TimeServer_Intf, + StdCtrls, uROClient, uROBINMessage, uROSOAPMessage, + uROIndyUDPChannel, uROBroadcastChannel, uROPoweredByRemObjectsButton; + +type + TTimeServer_ClientMainForm = class(TForm) + TimeButton: TButton; + BINMessage: TROBINMessage; + mmRequest: TMemo; + ROBroadcastChannel: TROBroadcastChannel; + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + procedure FormCreate(Sender: TObject); + procedure TimeButtonClick(Sender: TObject); + private + FTimeServer: ITimeServer; + public + { Public declarations } + end; + +var + TimeServer_ClientMainForm: TTimeServer_ClientMainForm; + +implementation + +{$R *.dfm} + +procedure TTimeServer_ClientMainForm.FormCreate(Sender: TObject); +begin + FTimeServer := CoTimeServer.Create(BINMessage,ROBroadcastChannel); +end; + +procedure TTimeServer_ClientMainForm.TimeButtonClick(Sender: TObject); +var Time: String; +begin + mmRequest.Lines.Add('* Broadcasting Time request.'); + Time := DateTimeToStr(FTimeServer.GetServerTime); + mmRequest.Lines.Add('Received time from a server: '+Time); + mmRequest.Lines.Add(''); +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Impl.pas new file mode 100644 index 0000000..48c50bb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Impl.pas @@ -0,0 +1,52 @@ +unit TimeServer_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROServer, uROServerIntf, + {Generated:} TimeServer_Intf; + +type + TTimeServer = class(TRORemotable, ITimeServer) + private + protected + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + end; + +implementation + +uses + {Generated:} TimeServer_Invk, TimeServer_ServerMain; + +procedure Create_TimeServer(out anInstance : IUnknown); +begin + anInstance := TTimeServer.Create; +end; + +function TTimeServer.Sum(const A: Integer; const B: Integer): Integer; +begin + result := A+B; + TimeServer_ServerMainForm.mmRequest.Lines.Add('* Processing Sum request.'); +end; + +function TTimeServer.GetServerTime: DateTime; +begin + result := Now; + TimeServer_ServerMainForm.mmRequest.Lines.Add('* Processing Time request.'); +end; + +initialization + TROClassFactory.Create('TimeServer', Create_TimeServer, TTimeServer_Invoker); + +finalization + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Intf.pas new file mode 100644 index 0000000..e3e410a --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Intf.pas @@ -0,0 +1,109 @@ +unit TimeServer_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{CD4F46E5-B0FA-4AF9-9B7E-6E01FE096885}'; + + { Service Interface ID's } + ITimeServer_IID : TGUID = '{CD4F46E5-B0FA-4AF9-9B7E-6E01FE096885}'; + + { Event ID's } + +type + { Forward declarations } + ITimeServer = interface; + + + { ITimeServer } + ITimeServer = interface + ['{CD4F46E5-B0FA-4AF9-9B7E-6E01FE096885}'] + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + end; + + { CoTimeServer } + CoTimeServer = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ITimeServer; + end; + + { TTimeServer_Proxy } + TTimeServer_Proxy = class(TROProxy, ITimeServer) + protected + function __GetInterfaceName:string; override; + + function Sum(const A: Integer; const B: Integer): Integer; + function GetServerTime: DateTime; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ CoTimeServer } + +class function CoTimeServer.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ITimeServer; +begin + result := TTimeServer_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TTimeServer_Proxy } + +function TTimeServer_Proxy.__GetInterfaceName:string; +begin + result := 'TimeServer'; +end; + +function TTimeServer_Proxy.Sum(const A: Integer; const B: Integer): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'TimeServer', __InterfaceName, 'Sum'); + __Message.Write('A', TypeInfo(Integer), A, []); + __Message.Write('B', TypeInfo(Integer), B, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.FreeStream; + end +end; + +function TTimeServer_Proxy.GetServerTime: DateTime; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'TimeServer', __InterfaceName, 'GetServerTime'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(DateTime), result, [paIsDateTime]); + finally + __Message.FreeStream; + end +end; + +initialization + RegisterProxyClass(ITimeServer_IID, TTimeServer_Proxy); + + +finalization + UnregisterProxyClass(ITimeServer_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Invk.pas new file mode 100644 index 0000000..154162b --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_Invk.pas @@ -0,0 +1,71 @@ +unit TimeServer_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} TimeServer_Intf; + +type + TTimeServer_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TTimeServer_Invoker } + +procedure TTimeServer_Invoker.Invoke_Sum(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Sum(const A: Integer; const B: Integer): Integer; } +var + A: Integer; + B: Integer; + lResult: Integer; +begin + try + __Message.Read('A', TypeInfo(Integer), A, []); + __Message.Read('B', TypeInfo(Integer), B, []); + + lResult := (__Instance as ITimeServer).Sum(A, B); + + __Message.InitializeResponseMessage(__Transport, 'TimeServer', 'TimeServer', 'SumResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + + finally + end; +end; + +procedure TTimeServer_Invoker.Invoke_GetServerTime(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetServerTime: DateTime; } +var + lResult: DateTime; +begin + try + lResult := (__Instance as ITimeServer).GetServerTime; + + __Message.InitializeResponseMessage(__Transport, 'TimeServer', 'TimeServer', 'GetServerTimeResponse'); + __Message.Write('Result', TypeInfo(DateTime), lResult, [paIsDateTime]); + __Message.Finalize; + + finally + end; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.dfm new file mode 100644 index 0000000..378a857 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.dfm @@ -0,0 +1,53 @@ +object TimeServer_ServerMainForm: TTimeServer_ServerMainForm + Left = 422 + Top = 301 + AutoScroll = False + Caption = 'TimeServer' + ClientHeight = 217 + ClientWidth = 285 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 36 + Top = 2 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object mmRequest: TMemo + Left = 0 + Top = 54 + Width = 285 + Height = 163 + Align = alBottom + Anchors = [akLeft, akTop, akRight, akBottom] + Lines.Strings = ( + '') + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 0 + end + object ROMessage: TROBinMessage + Left = 51 + Top = 59 + end + object UDPServer: TROBroadcastServer + Dispatchers = < + item + Name = 'ROMessage' + Message = ROMessage + Enabled = True + end> + IndyUDPServer.BroadcastEnabled = True + IndyUDPServer.Bindings = <> + IndyUDPServer.DefaultPort = 8090 + Port = 8090 + OnRORequest = UDPServerRORequest + Left = 25 + Top = 59 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.pas new file mode 100644 index 0000000..5fcdd63 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Time Server/TimeServer_ServerMain.pas @@ -0,0 +1,47 @@ +unit TimeServer_ServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, uROClient, uROBINMessage, uROClientIntf, uROServer, uROIndyTCPServer, + uROSOAPMessage, uROIndyUDPServer, uROBroadcastServer, + uROPoweredByRemObjectsButton; + +type + TTimeServer_ServerMainForm = class(TForm) + ROMessage: TROBINMessage; + UDPServer: TROBroadcastServer; + mmRequest: TMemo; + ROPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton; + procedure FormCreate(Sender: TObject); + procedure UDPServerRORequest(Sender: TObject); + private + + protected + + public + + end; + +var + TimeServer_ServerMainForm: TTimeServer_ServerMainForm; + +implementation + + +{$R *.DFM} + +procedure TTimeServer_ServerMainForm.FormCreate(Sender: TObject); +begin + UDPServer.Active := True; + mmRequest.Lines.Add({+UDPServer.IndyUDPServer.LocalName+}'Server is ready to receive broadcasts.'); + mmRequest.Lines.Add(''); +end; + +procedure TTimeServer_ServerMainForm.UDPServerRORequest(Sender: TObject); +begin + mmRequest.Lines.Add('Received a broadcast to process a RO message.'); +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/RODLFILE.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/RODLFILE.res new file mode 100644 index 0000000..ca0bbf4 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/RODLFILE.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.bdsproj new file mode 100644 index 0000000..b0b669e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + VariantsClient.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dpr new file mode 100644 index 0000000..e115553 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dpr @@ -0,0 +1,14 @@ +program VariantsClient; + +uses + uROComInit, + Forms, + VariantsClientMain in 'VariantsClientMain.pas' {VariantsClientMainForm}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TVariantsClientMainForm, VariantsClientMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dproj new file mode 100644 index 0000000..d4a62a4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.dproj @@ -0,0 +1,78 @@ + + + {3f03bbe3-e281-4026-95ec-cb282e6ffcf4} + VariantsClient.dpr + Debug + AnyCPU + DCC32 + VariantsClient.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + VariantsClient.dpr + + + + + + + MainSource + + +
    VariantsClientMainForm
    +
    +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.res new file mode 100644 index 0000000..90e4219 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClient.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.dfm new file mode 100644 index 0000000..4c0d549 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.dfm @@ -0,0 +1,66 @@ +object VariantsClientMainForm: TVariantsClientMainForm + Left = 102 + Top = 118 + AutoScroll = False + Caption = 'Variants Client' + ClientHeight = 220 + ClientWidth = 328 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object TestButton: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Test Variants' + TabOrder = 0 + OnClick = TestButtonClick + end + object Memo: TMemo + Left = 0 + Top = 81 + Width = 328 + Height = 139 + Align = alBottom + ScrollBars = ssVertical + TabOrder = 1 + end + object rgMessageType: TRadioGroup + Left = 96 + Top = 0 + Width = 225 + Height = 73 + Caption = 'Message' + TabOrder = 2 + OnClick = rgMessageTypeClick + end + object BINMessage: TROBinMessage + Left = 204 + Top = 96 + end + object HTTPChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/BIN' + Left = 176 + Top = 96 + end + object RORemoteService: TRORemoteService + Message = BINMessage + Channel = HTTPChannel + ServiceName = 'NewService' + Left = 232 + Top = 96 + end + object SOAPMessage: TROSOAPMessage + SerializationOptions = [xsoWriteMultiRefArray, xsoWriteMultiRefObject] + Left = 144 + Top = 96 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.pas new file mode 100644 index 0000000..8019f2e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsClientMain.pas @@ -0,0 +1,210 @@ +unit VariantsClientMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel, + ExtCtrls, uROSOAPMessage, VariantsLibrary_Intf; + +type + TVariantsClientMainForm = class(TForm) + BINMessage: TROBinMessage; + HTTPChannel: TROWinInetHTTPChannel; + RORemoteService: TRORemoteService; + TestButton: TButton; + Memo: TMemo; + SOAPMessage: TROSOAPMessage; + rgMessageType: TRadioGroup; + procedure TestButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure rgMessageTypeClick(Sender: TObject); + private + fVariantsService: IVariantsService; + { Private declarations } + public + { Public declarations } + end; + +var + VariantsClientMainForm: TVariantsClientMainForm; + +implementation + +uses Variants; + +{$R *.dfm} + +procedure TVariantsClientMainForm.TestButtonClick(Sender: TObject); + + procedure CheckVariants(const InputVariant, OutputVariant: Variant; CheckType: boolean = TRUE); +// var +// v1, v2: integer; + begin + if (InputVariant <> OutputVariant) then + raise Exception.Create('Variants differ!'); + { if CheckType then begin + v1 := VarType(InputVariant); + v2 := VarType(OutputVariant); + if v1<>v2 then + raise Exception.CreateFmt('Variant TYPE is different (%d, %d)!', [v1, v2]); + end;} + end; + +var + inputvar, outputvar: Variant; + i: integer; + incomplex, outcomplex: TComplexObject; + inarray, outarray: TVariantArray; +begin + + // Complex object + incomplex := TComplexObject.Create; + incomplex.IntegerId := 101; + incomplex.VariantValue := 'My Variant'; + fVariantsService.EchoComplexObject(incomplex, outcomplex); + Memo.Lines.Add('Received ' + IntToStr(outcomplex.IntegerId) + ', ' + outcomplex.VariantValue); + incomplex.Free; + outcomplex.Free; + + // Simple variant array + if not (RORemoteService.Message is TROSOAPMessage) then begin + inputvar := VarArrayCreate([0, 10], varVariant); +// i := 0; + for i := 0 to 10 do inputvar[i] := 'SomeText'; + fVariantsService.EchoVariant(inputvar, outputvar); + + for i := 0 to VarArrayHighBound(outputvar, 1) do + Memo.Lines.Add('Simple variant array item #' + IntToStr(i) + '=' + VarToStr(outputvar[i])); + end; + + // Variant array (complex type) + inarray := TVariantArray.Create; + inarray.Add('A string'); + inarray.Add(1); + inarray.Add(Now); + inarray.Add(True); + fVariantsService.EchoVariantArray(inarray, outarray); + for i := 0 to outarray.Count - 1 do + Memo.Lines.Add('Variant array item #' + IntToStr(i) + '=' + VarToStr(outarray[i])); + inarray.Free; + outarray.Free; + Memo.Lines.Add(''); + + // String + inputvar := 'Test'; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Shortint + inputvar := 12; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Byte + inputvar := 200; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Integer + inputvar := 123456; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Float + inputvar := 22.39; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar, FALSE); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Float (big one) + inputvar := 780000.32; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar, FALSE); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Shortint + inputvar := -12; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Byte + inputvar := -200; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Integer + inputvar := -123456; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Float + inputvar := -22.39; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar, FALSE); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Float (big one) + inputvar := -780000.32; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar, FALSE); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Datetime + inputvar := Now; + fVariantsService.EchoVariant(inputvar, outputvar); + // CheckVariants(inputvar, outputvar); // For some reason 2 equal datetimes seem different to Delphi (using SOAP) + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + // Boolean + inputvar := true; + fVariantsService.EchoVariant(inputvar, outputvar); + CheckVariants(inputvar, outputvar); + Memo.Lines.Add('Received ' + VarToStr(outputvar)); + + if (RORemoteService.Message is TROSOAPMessage) then Exit; + + // Array + Memo.Lines.Add(''); + inputvar := VarArrayCreate([0, 3], varVariant); + inputvar[0] := 1; + inputvar[1] := 1234.5678; + inputvar[2] := 'Hello world'; + inputvar[3] := True; + fVariantsService.EchoVariant(inputvar, outputvar); + + for i := 0 to VarArrayHighBound(outputvar, 1) do + Memo.Lines.Add('Array element #' + IntToStr(i) + ': ' + VarToStr(outputvar[i])); +end; + +procedure TVariantsClientMainForm.FormCreate(Sender: TObject); +var + i: integer; +begin + for i := 0 to ComponentCount - 1 do + if (Components[i] is TROMessage) then begin + rgMessageType.Items.AddObject(TROMessage(Components[i]).Name, Components[i]); + end; + + rgMessageType.ItemIndex := 1; + FVariantsService := (RORemoteService as IVariantsService); +end; + +procedure TVariantsClientMainForm.rgMessageTypeClick(Sender: TObject); +begin + RORemoteService.Message := TROMessage(rgMessageType.Items.Objects[rgMessageType.ItemIndex]); + FVariantsService := (RORemoteService as IVariantsService); + + if (RORemoteService.Message is TROSOAPMessage) then HTTPChannel.TargetURL := 'http://localhost:8099/SOAP' + else HTTPChannel.TargetURL := 'http://localhost:8099/BIN'; +end; + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.Sample.html b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.Sample.html new file mode 100644 index 0000000..51a7db7 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.Sample.html @@ -0,0 +1,31 @@ + + + + + + + + + +

    + Variants +

    + +

    Purpose

    + +

    This example shows how the RemObjects SDK can transfer variants and array of Variants from the client and server using the TROBinMessage and TROSOAPMessage message types.

    + +

    Examine the Code

    + +
      +
    • + See how the service is defined in the service library. Do this by making the server the selected project and by using the menu option: RemObjects | Edit Service Library. Note: if you don't see this menu option but see 'Service Builder' instead, you still have the client set as the current project. +
    • +
    • + Examine the simple code needed to invoke the methods in + VariantsClientMain.pas. +
    • +
    + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bdsgroup b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bdsgroup new file mode 100644 index 0000000..a7532eb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + VariantsServer.bdsproj + VariantsClient.bdsproj + VariantsServer.exe VariantsClient.exe + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bpg b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bpg new file mode 100644 index 0000000..fd2c63c --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = VariantsServer.exe VariantsClient.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +VariantsServer.exe: VariantsServer.dpr + $(DCC) + +VariantsClient.exe: VariantsClient.dpr + $(DCC) + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.groupproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.groupproj new file mode 100644 index 0000000..2e2c50d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsGroup.groupproj @@ -0,0 +1,40 @@ + + + {ecb75d83-34ba-4d9e-8222-3bbf34aee98f} + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary.rodl b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary.rodl new file mode 100644 index 0000000..3e56db3 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary.rodl @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Intf.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Intf.pas new file mode 100644 index 0000000..3db3e92 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Intf.pas @@ -0,0 +1,324 @@ +unit VariantsLibrary_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; + +const + { Library ID } + LibraryUID = '{997272DF-9CE1-42FC-A341-669D18AE18ED}'; + + { Service Interface ID's } + IVariantsService_IID : TGUID = '{509D1C6D-51DF-4269-A160-DB5B5B671874}'; + + { Event ID's } + +type + { Forward declarations } + IVariantsService = interface; + + TVariantArray = class; + + TComplexObject = class; + + + { TComplexObject } + TComplexObject = class(TROComplexType) + private + fIntegerId: Integer; + fVariantValue: Variant; + public + procedure Assign(iSource: TPersistent); override; + published + property IntegerId:Integer read fIntegerId write fIntegerId; + property VariantValue:Variant read fVariantValue write fVariantValue; + end; + + { TComplexObjectCollection } + TComplexObjectCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(Index: integer): TComplexObject; + procedure SetItems(Index: integer; const Value: TComplexObject); + public + constructor Create; overload; + function Add: TComplexObject; reintroduce; + property Items[Index: integer]:TComplexObject read GetItems write SetItems; default; + end; + + { TVariantArray } + TVariantArray = class(TROArray) + private + fCount: Integer; + fItems : array of Variant; + protected + procedure Grow; virtual; + function GetItems(Index: integer): Variant; + procedure SetItems(Index: integer; const Value: Variant); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + function GetItemRef(Index: integer): pointer; override; + procedure Clear; override; + procedure Delete(Index: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + function Add(const Value:Variant): integer; + + property Count : integer read GetCount; + property Items[Index: integer]:Variant read GetItems write SetItems; default; + end; + + { IVariantsService } + IVariantsService = interface + ['{509D1C6D-51DF-4269-A160-DB5B5B671874}'] + procedure EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); + procedure EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); + procedure EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); + end; + + { CoVariantsService } + CoVariantsService = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IVariantsService; + end; + + { TVariantsService_Proxy } + TVariantsService_Proxy = class(TROProxy, IVariantsService) + protected + function __GetInterfaceName:string; override; + + procedure EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); + procedure EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); + procedure EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uRORes; + +{ TVariantArray } + +procedure TVariantArray.Assign(iSource: TPersistent); +var lSource:TVariantArray; + i:integer; +begin + if (iSource is TVariantArray) then begin + lSource := TVariantArray(iSource); + Clear(); + Resize(lSource.Count); + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TVariantArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Variant); +end; + +class function TVariantArray.GetItemSize: integer; +begin + result := SizeOf(Variant); +end; + +function TVariantArray.GetItems(Index: integer): Variant; +begin + if (Index < 0) or (Index >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[Index]); + result := fItems[Index]; +end; + +function TVariantArray.GetItemRef(Index: integer): pointer; +begin + if (Index < 0) or (Index >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[Index]); + result := @fItems[Index]; +end; + +procedure TVariantArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TVariantArray.Delete(Index: integer); +var i: integer; +begin + if (Index>=Count) then RaiseError(err_InvalidIndex, [Index]); + + if (Index= Count) then RaiseError(err_ArrayIndexOutOfBounds,[Index]); + fItems[Index] := Value; +end; + +procedure TVariantArray.Resize(ElementCount: integer); +begin + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TVariantArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TVariantArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TVariantArray.Add(const Value: Variant): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +{ TComplexObject } + +procedure TComplexObject.Assign(iSource: TPersistent); +var lSource:TComplexObject; +begin + inherited Assign(iSource); + if (iSource is TComplexObject) then begin + lSource := TComplexObject(iSource); + IntegerId := lSource.IntegerId; + VariantValue := lSource.VariantValue; + end; +end; + +{ TComplexObjectCollection } +constructor TComplexObjectCollection.Create; +begin + inherited Create(TComplexObject); +end; + +constructor TComplexObjectCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TComplexObjectCollection.Add: TComplexObject; +begin + result := TComplexObject(inherited Add); +end; + +function TComplexObjectCollection.GetItems(Index: integer): TComplexObject; +begin + result := TComplexObject(inherited Items[Index]); +end; + +procedure TComplexObjectCollection.SetItems(Index: integer; const Value: TComplexObject); +begin + TComplexObject(inherited Items[Index]).Assign(Value); +end; + +{ CoVariantsService } + +class function CoVariantsService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IVariantsService; +begin + result := TVariantsService_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TVariantsService_Proxy } + +function TVariantsService_Proxy.__GetInterfaceName:string; +begin + result := 'VariantsService'; +end; + +procedure TVariantsService_Proxy.EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VariantsLibrary', __InterfaceName, 'EchoVariant'); + __Message.Write('InputVariant', TypeInfo(Variant), InputVariant, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('OutputVariant', TypeInfo(Variant), OutputVariant, []); + finally + __Message.FreeStream; + end +end; + +procedure TVariantsService_Proxy.EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); +begin + try + OutComplexObject := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VariantsLibrary', __InterfaceName, 'EchoComplexObject'); + __Message.Write('InComplexObject', TypeInfo(VariantsLibrary_Intf.TComplexObject), InComplexObject, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('OutComplexObject', TypeInfo(VariantsLibrary_Intf.TComplexObject), OutComplexObject, []); + finally + __Message.FreeStream; + end +end; + +procedure TVariantsService_Proxy.EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); +begin + try + OutArray := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VariantsLibrary', __InterfaceName, 'EchoVariantArray'); + __Message.Write('InArray', TypeInfo(VariantsLibrary_Intf.TVariantArray), InArray, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('OutArray', TypeInfo(VariantsLibrary_Intf.TVariantArray), OutArray, []); + finally + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TComplexObject); + RegisterROClass(TVariantArray); + RegisterProxyClass(IVariantsService_IID, TVariantsService_Proxy); + + +finalization + UnregisterROClass(TComplexObject); + UnregisterROClass(TVariantArray); + UnregisterProxyClass(IVariantsService_IID); + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Invk.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Invk.pas new file mode 100644 index 0000000..db6740e --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsLibrary_Invk.pas @@ -0,0 +1,112 @@ +unit VariantsLibrary_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Generated:} VariantsLibrary_Intf; + +type + TVariantsService_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_EchoVariant(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EchoComplexObject(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_EchoVariantArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TVariantsService_Invoker } + +procedure TVariantsService_Invoker.Invoke_EchoVariant(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); } +var + InputVariant: Variant; + OutputVariant: Variant; +begin + try + __Message.Read('InputVariant', TypeInfo(Variant), InputVariant, []); + + (__Instance as IVariantsService).EchoVariant(InputVariant, OutputVariant); + + __Message.InitializeResponseMessage(__Transport, 'VariantsLibrary', 'VariantsService', 'EchoVariantResponse'); + __Message.Write('OutputVariant', TypeInfo(Variant), OutputVariant, []); + __Message.Finalize; + + finally + end; +end; + +procedure TVariantsService_Invoker.Invoke_EchoComplexObject(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); } +var + InComplexObject: VariantsLibrary_Intf.TComplexObject; + OutComplexObject: VariantsLibrary_Intf.TComplexObject; + __lObjectDisposer: TROObjectDisposer; +begin + InComplexObject := nil; + OutComplexObject := nil; + try + __Message.Read('InComplexObject', TypeInfo(VariantsLibrary_Intf.TComplexObject), InComplexObject, []); + + (__Instance as IVariantsService).EchoComplexObject(InComplexObject, OutComplexObject); + + __Message.InitializeResponseMessage(__Transport, 'VariantsLibrary', 'VariantsService', 'EchoComplexObjectResponse'); + __Message.Write('OutComplexObject', TypeInfo(VariantsLibrary_Intf.TComplexObject), OutComplexObject, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(InComplexObject); + __lObjectDisposer.Add(OutComplexObject); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TVariantsService_Invoker.Invoke_EchoVariantArray(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); } +var + InArray: VariantsLibrary_Intf.TVariantArray; + OutArray: VariantsLibrary_Intf.TVariantArray; + __lObjectDisposer: TROObjectDisposer; +begin + InArray := nil; + OutArray := nil; + try + __Message.Read('InArray', TypeInfo(VariantsLibrary_Intf.TVariantArray), InArray, []); + + (__Instance as IVariantsService).EchoVariantArray(InArray, OutArray); + + __Message.InitializeResponseMessage(__Transport, 'VariantsLibrary', 'VariantsService', 'EchoVariantArrayResponse'); + __Message.Write('OutArray', TypeInfo(VariantsLibrary_Intf.TVariantArray), OutArray, []); + __Message.Finalize; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(InArray); + __lObjectDisposer.Add(OutArray); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.bdsproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.bdsproj new file mode 100644 index 0000000..46a956f --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + VariantsServer.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dpr b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dpr new file mode 100644 index 0000000..f1e3e55 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dpr @@ -0,0 +1,20 @@ +program VariantsServer; + +{#ROGEN:VariantsLibrary.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + VariantsServerMain in 'VariantsServerMain.pas' {VariantsServerMainForm}, + VariantsLibrary_Intf in 'VariantsLibrary_Intf.pas', + VariantsLibrary_Invk in 'VariantsLibrary_Invk.pas', + VariantsService_Impl in 'VariantsService_Impl.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.CreateForm(TVariantsServerMainForm, VariantsServerMainForm); + Application.Run; +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dproj b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dproj new file mode 100644 index 0000000..0c25dc3 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.dproj @@ -0,0 +1,81 @@ + + + {3360785c-eedb-4055-b208-6a68c355d46d} + VariantsServer.dpr + Debug + AnyCPU + DCC32 + VariantsServer.exe + + + 7.0 + False + False + 0 + RELEASE + . + . + . + + + 7.0 + DEBUG + . + . + . + + + Delphi.Personality + VCLApplication + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + VariantsServer.dpr + + + + + + + MainSource + + + + +
    VariantsServerMainForm
    +
    + +
    + +
    \ No newline at end of file diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.res b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.res new file mode 100644 index 0000000..b0dd731 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServer.res differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.dfm b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.dfm new file mode 100644 index 0000000..35c0ddb --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.dfm @@ -0,0 +1,49 @@ +object VariantsServerMainForm: TVariantsServerMainForm + Left = 60 + Top = 50 + BorderStyle = bsDialog + Caption = 'Variants Server' + ClientHeight = 64 + ClientWidth = 228 + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object RoPoweredByRemObjectsButton1: TROPoweredByRemObjectsButton + Left = 8 + Top = 8 + Width = 212 + Height = 48 + Cursor = crHandPoint + end + object BINMessage: TROBinMessage + Left = 36 + Top = 8 + end + object ROServer: TROIndyHTTPServer + Dispatchers = < + item + Name = 'BINMessage' + Message = BINMessage + Enabled = True + PathInfo = 'Bin' + end + item + Name = 'ROSOAPMessage' + Message = ROSOAPMessage + Enabled = True + PathInfo = 'SOAP' + end> + Port = 8099 + Left = 8 + Top = 8 + end + object ROSOAPMessage: TROSOAPMessage + SerializationOptions = [xsoWriteMultiRefArray, xsoWriteMultiRefObject] + Left = 64 + Top = 8 + end +end diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.pas new file mode 100644 index 0000000..2d971c4 --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsServerMain.pas @@ -0,0 +1,36 @@ +unit VariantsServerMain; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, uROSOAPMessage; + +type + TVariantsServerMainForm = class(TForm) + RoPoweredByRemObjectsButton1: TRoPoweredByRemObjectsButton; + BINMessage: TROBinMessage; + ROServer: TROIndyHTTPServer; + ROSOAPMessage: TROSOAPMessage; + procedure FormCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + VariantsServerMainForm: TVariantsServerMainForm; + +implementation + + +{$R *.dfm} + +procedure TVariantsServerMainForm.FormCreate(Sender: TObject); +begin + ROServer.Active := true; +end; + +end. diff --git a/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsService_Impl.pas b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsService_Impl.pas new file mode 100644 index 0000000..01bfb3d --- /dev/null +++ b/internal/6.0.43.801/1/RemObjects Samples/RemObjects SDK for Delphi/Variants/VariantsService_Impl.pas @@ -0,0 +1,61 @@ +unit VariantsService_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Generated:} VariantsLibrary_Intf; + +type + { TVariantsService } + TVariantsService = class(TRORemotable, IVariantsService) + private + protected + { IVariantsService methods } + procedure EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); + procedure EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); + procedure EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); + end; + +implementation + +uses + {Generated:} VariantsLibrary_Invk; + +procedure Create_VariantsService(out anInstance: IUnknown); +begin + anInstance := TVariantsService.Create; +end; + +{ VariantsService } + +procedure TVariantsService.EchoVariant(const InputVariant: Variant; out OutputVariant: Variant); +begin + OutputVariant := InputVariant; +end; + +procedure TVariantsService.EchoComplexObject(const InComplexObject: TComplexObject; out OutComplexObject: TComplexObject); +begin + OutComplexObject := InComplexObject; +end; + +procedure TVariantsService.EchoVariantArray(const InArray: TVariantArray; out OutArray: TVariantArray); +begin + OutArray := InArray; +end; + +initialization + TROClassFactory.Create('VariantsService', Create_VariantsService, TVariantsService_Invoker); + +finalization + +end. + diff --git a/internal/6.0.43.801/1/RemObjects Samples/Thumbs.db b/internal/6.0.43.801/1/RemObjects Samples/Thumbs.db new file mode 100644 index 0000000..207a911 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/Thumbs.db differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/da.png b/internal/6.0.43.801/1/RemObjects Samples/da.png new file mode 100644 index 0000000..b869fc8 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/da.png differ diff --git a/internal/6.0.43.801/1/RemObjects Samples/ro.png b/internal/6.0.43.801/1/RemObjects Samples/ro.png new file mode 100644 index 0000000..2828066 Binary files /dev/null and b/internal/6.0.43.801/1/RemObjects Samples/ro.png differ